CN107193745B - PLC程序到NuSMV输入模型的自动化构建方法 - Google Patents
PLC程序到NuSMV输入模型的自动化构建方法 Download PDFInfo
- Publication number
- CN107193745B CN107193745B CN201710382639.4A CN201710382639A CN107193745B CN 107193745 B CN107193745 B CN 107193745B CN 201710382639 A CN201710382639 A CN 201710382639A CN 107193745 B CN107193745 B CN 107193745B
- Authority
- CN
- China
- Prior art keywords
- arc
- state
- language
- variable
- sentence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13138—High level language HLL, structured text ST, resembles pascal
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及工业自动化控制技术领域,特别是涉及一种PLC程序到NuSMV输入模型的自动化构建方法,包括对PLC的ST语言进行分析,构建ST语言的语法;根据给出的ST语法对ST程序进行处理,将ST程序解析为抽象语法树AST;对抽象语法树AST进行处理,分析ST语言语句的控制流特征,确定各语句生成控制流图CFG的算法;根据控制流图CFG对ST程序进行数据流分析,构建状态转换邻接表和变量取值变化邻接表;根据构建的状态转换邻接表和变量取值变化邻接表生成NuSMV输入模型。本发明大大提高NuSMV工具对PLC程序进行模型检测的效率和准确度,实现对工业控制系统PLC代码的安全性验证。
Description
技术领域
本发明涉及工业自动化控制技术领域,特别是涉及一种PLC程序到NuSMV输入模型的自动化构建方法。
背景技术
工业控制系统广泛应用到工业自动化控制领域,比如电力、石油、国防科技等国家基础设施,以及食品、医药、交通等民生领域。工控安全事关经济发展、社会稳定和国家安全。近年来,随着信息化和工业化深入融合,工业控制系统从单机走向互联,从封闭走向开放,从自动化走向智能化,但同时也给工业控制系统安全带来前所未有的挑战。
工业控制器,即可编程逻辑控制器(PLC)作为工业控制系统的大脑,是一种专门用于工业控制的计算机,通过其上运行的业务代码控制整个系统的运行,PLC代码的安全直接管关系到整个工业控制系统的安全。可编程逻辑控制器支持梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)及结构化文本语言(ST)等多种编程语言。PLC代码安全主要包括两个方面:一是PLC代码自身存在的代码缺陷,比如空指针引用、数组下标越界、无效跳转、无限循环、冗余代码等代码缺陷,二是PLC代码违反安全需求,比如状态冲突、时序冲突、传感器阈值、控制量阈值等安全需求规约。
PLC代码缺陷的发现及安全规约违反验证主要采用模型检测的方法,此方法成为工业控制系统安全防护中最基本最有效的方法。目前研究中主要有三种模型检测工具,一种是基于SMV的模型检测工具,包含符号模型检测技术和二元决策图,分为NuSMV和CadenceSMV两种类型。另一种是基于时间自动机,其大部分来自于UPPAAL家族或Krono。第三种是SPIN`模型检查器。NuSMV是基于SMV的模型检测工具,广泛应用于可编程逻辑控制器缺陷代码的发现,但是NuSMV不能直接对PLC源程序进行处理,只能手工将源程序翻译为NuSMV输入模型,然后再进行模型检测,不仅浪费大量的人力,而且容易出错。而目前国内外关于PLC程序的研究主要是定义PLC程序指称语义的格局、程序语言的语义函数,但这些研究仅停留在简单对PLC程序语义的形式化定义上面。
发明内容
针对现有技术中存在的缺陷,本发明提供了一种PLC程序到NuSMV输入模型的自动化构建方法,大大提高NuSMV工具对PLC程序进行模型检测的效率和准确度,实现对工业控制系统PLC代码的安全性验证。
为了实现上述目的,本发明采用以下的技术方案:
一种PLC程序到NuSMV输入模型的自动化构建方法,包括以下步骤:
步骤1,对PLC的ST语言进行分析,构建ST语言的语法;
步骤2,根据步骤1给出的ST语法对ST程序进行处理,将ST程序解析为抽象语法树AST;
步骤3,对抽象语法树AST进行处理,分析ST语言语句的控制流特征,确定各语句生成控制流图CFG的算法;
步骤4,根据控制流图CFG对ST程序进行数据流分析,构建状态转换邻接表和变量取值变化邻接表;
步骤5,根据步骤4构建的状态转换邻接表和变量取值变化邻接表生成NuSMV输入模型。
进一步地,所述步骤1中,对PLC的ST语言进行分析的具体内容是:分析ST语言的架构、关键字、表达式、赋值、注释、操作符优先级、条件语句、循环语句以及跳转语句。
进一步地,所述步骤2的具体实现过程如下:
步骤201,创建若干个Eclipse项目,通过Eclipse向导:File->New->Project...->Xtext->Xtext project;
步骤202,选择项目名称、语言名称以及文件扩展名;
步骤203,输入ST语言的语法,执行代码生成器生成各种语言组建,在项目中选中文件GenerateDomainmodel.mwe2,点击右键Run As->MWE2Workow,将会触发Xtext语言生成器,生成解析器和序列化器。
进一步地,所述控制流图CFG的结构为:用二元结构CFG=(N,E)表示控制流图CFG,其中,N代表控制流图节点的集合,E代表控制流图弧的集合;
控制流图CFG采用基于十字链表的存储方式进行存储,节点表示的数据结构如下表:
Nnum | Firstin | Firstout |
其中,Nnum表示节点的编号,Firstin指向以该节点为弧头的第一个弧节点,Firstout指向以该节点为弧尾的第一个弧节点;弧表示的数据结构如下表:
tailnum | headnum | Etype | guard | assignment | Hlink | Tlink |
其中,tailnum表示弧尾的节点编号,headnum表示弧头的节点编号,Etype表示弧的类型,Etype={1,0},当Etype=1时,表示弧为分支弧,guard指向对应的条件谓词取值表达式,assignment为空,当Etype=0时,表示弧为顺序弧,guard为空,assignment指向对应的赋值语句链表,Hlink指向弧头相同的下一条弧,Tlink指向弧尾相同的下一条弧。
进一步地,所述步骤3中,确定各语句生成控制流图CFG的算法具体为:根据控制流图CFG的结构生成赋值语句、IF语句、CASE语句、FOR语句、WHILE语句以及REPEAT语句的控制流图;对于赋值语句直接添加到数据列表assignment中;对于IF语句,首先获得条件语句,并根据条件语句的真假创建两条分支弧,在遇到关键字END_IF时,这两条分支指向汇合节点;对于ST语言的CASE语句,表示多分支结构,首先根据CASE变量的N个不同的取值生成N条由CASE顶点到N个不同值节点的弧,然后在遇到关键字END_CASE时,这N条分支指向汇合节点;FOR语句、WHILE语句以及REPEAT语句,均是根据条件语句的真假分别生成两条分支弧,循环体对应生成一条弧,且该弧与条件为真的那条弧的两个节点相同,方向反向;
最后将生成的弧存储到数组列表ArrayList中。
进一步地,所述步骤4中,根据控制流图CFG对ST程序进行数据流分析,定义如下的数据结构来表示控制流图的状态迁移关系:
Guard | State | Next |
其中,Guard表示状态迁移所需要满足的条件,State表示状态迁移的目标状态,Next指向下一个状态迁移,定义如下数据结构用于表示系统内变量的取值变化:
State | Expr | Next |
其中,State表示变量被赋值前的状态,Expr表示系统内变量赋值语句右侧的数值或表达式,Next表示该变量下一个取值变化;
遍历步骤3生成的弧的数组列表ArrayList,参照上述两个数据结构,分别生成状态转换邻接表State_List以及变量取值变化邻接表Var_List。
进一步地,所述NuSMV输入模型包括状态集合部分、变量声明部分、状态转换部分和变量数据值变化部分;遍历状态转换邻接表生成状态集合部分和状态转换部分,遍历变量取值变化邻接表获得变量声明部分和变量数据值变化部分。
与现有技术相比,本发明具有以下优点:
1、本发明针对目前模型检测工具都拥有独特的输入模型,PLC程序不能作为直接输入,需要人工根据PLC程序构建模型检测器的输入,造成PLC程序的模型检测准确率和效率低的问题,对PLC程序进行解析,控制流分析、数据流分析,将PLC程序自动化构建为模型检测工具的输入模型,提高PLC程序的模型检测准确率以及效率。
附图说明
图1是本发明一种PLC程序到NuSMV输入模型的自动化构建方法的流程示意图;
图2是本发明一种PLC程序到NuSMV输入模型的自动化构建方法的框架图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:
实施例一,如图1和图2所示,一种PLC程序到NuSMV输入模型的自动化构建方法,包括以下步骤:
步骤1,对PLC的ST语言进行分析,构建ST语言的语法;
根据IEC61131-3标准,对PLC的ST语言进行分析,分析ST语言的架构、关键字、表达式、赋值、注释、操作符优先级、条件语句、循环语句以及跳转语句等特征,编写对应的语法形式。
作为一种实施方式,以条件语句IF语句为例编写对应的语句语法如下:IF_Stmt→IF Condition THEN Statement{ELSE Statement}END_IF。
步骤2,根据步骤1给出的ST语法对ST程序进行处理,将ST程序解析为抽象语法树AST;
进一步地,利用Xtext特定的编程语言开源框架将ST程序解析为抽象语法树AST;具体实现过程如下:
步骤201,创建若干个Eclipse项目,通过Eclipse向导:File->New->Project...->Xtext->Xtext project;
步骤202,选择项目名称、语言名称以及文件扩展名;
步骤203,输入ST语言的语法,执行代码生成器生成各种语言组建,在项目中选中文件GenerateDomainmodel.mwe2,点击右键Run As->MWE2Workow,将会触发Xtext语言生成器,生成解析器和序列化器,以及一些其他基础结构代码,可以在控制台的日志消息中看到相应的过程。
步骤3,对抽象语法树AST进行处理,分析ST语言语句的控制流特征,确定各语句生成控制流图CFG的算法;
在本实施例中,用二元结构CFG=(N,E)表示控制流图CFG,其中,N代表控制流图节点的集合,E代表控制流图弧的集合;
控制流图CFG采用基于十字链表的存储方式进行存储,节点表示的数据结构如下表:
Nnum | Firstin | Firstout |
其中,Nnum表示节点的编号,Firstin指向以该节点为弧头的第一个弧节点,Firstout指向以该节点为弧尾的第一个弧节点;弧表示的数据结构如下表:
tailnum | headnum | Etype | guard | assignment | Hlink | Tlink |
其中,tailnum表示弧尾的节点编号,headnum表示弧头的节点编号,Etype表示弧的类型,Etype={1,0},当Etype=1时,表示弧为分支弧,guard指向对应的条件谓词取值表达式,assignment为空,当Etype=0时,表示弧为顺序弧,guard为空,assignment指向对应的赋值语句链表,Hlink指向弧头相同的下一条弧,Tlink指向弧尾相同的下一条弧。
根据控制流图CFG的结构生成赋值语句、IF语句、CASE语句、FOR语句、WHILE语句以及REPEAT语句的控制流图;
对于赋值语句直接添加到数据列表assignment中;对于IF语句,首先获得条件语句,并根据条件语句的真假创建两条分支弧,不管IF语句中有没有ELSE关键字,都会有两条对应于IF条件为真或为假的分支,并且最终在遇到关键字END_IF时,这两条分支指向汇合节点;对于ST语言的CASE语句,表示多分支结构,首先根据CASE变量的N个不同的取值生成N条由CASE顶点到N个不同值节点的弧,然后在遇到关键字END_CASE时,这N条分支指向汇合节点;FOR语句、WHILE语句以及REPEAT语句,均是根据条件语句的真假分别生成两条分支弧,循环体对应生成一条弧,且该弧与条件为真的那条弧的两个节点相同,方向反向;
最后将生成的弧存储到数组列表ArrayList中。
步骤4,根据控制流图CFG对ST程序进行数据流分析,构建状态转换邻接表和变量取值变化邻接表;
在本实施例中,根据控制流图CFG对ST程序进行数据流分析,定义如下的数据结构来表示控制流图的状态迁移关系:
Guard | State | Next |
其中,Guard表示状态迁移所需要满足的条件,State表示状态迁移的目标状态,Next指向下一个状态迁移,定义如下数据结构用于表示系统内变量的取值变化:
State | Expr | Next |
其中,State表示变量被赋值前的状态,Expr表示系统内变量赋值语句右侧的数值或表达式,Next表示该变量下一个取值变化;
遍历步骤3生成的弧的数组列表ArrayList,参照上述两个数据结构,分别生成状态转换邻接表State_List以及变量取值变化邻接表Var_List。
步骤5,根据步骤4构建的状态转换邻接表和变量取值变化邻接表生成NuSMV输入模型。
所述NuSMV输入模型包括状态集合部分、变量声明部分、状态转换部分和变量数据值变化部分;遍历状态转换邻接表生成状态集合部分和状态转换部分,遍历变量取值变化邻接表获得变量声明部分和变量数据值变化部分。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,包括以下步骤:
步骤1,对PLC的ST语言进行分析,构建ST语言的语法;
步骤2,根据步骤1给出的ST语法对ST程序进行处理,将ST程序解析为抽象语法树AST;
步骤3,对抽象语法树AST进行处理,分析ST语言语句的控制流特征,确定各语句生成控制流图CFG的算法;所述控制流图CFG的结构为:用二元结构CFG=(N,E)表示控制流图CFG,其中,N代表控制流图节点的集合,E代表控制流图弧的集合;
控制流图CFG采用基于十字链表的存储方式进行存储,节点表示的数据结构如下表:
其中,Nnum表示节点的编号,Firstin指向以该节点为弧头的第一个弧节点,Firstout指向以该节点为弧尾的第一个弧节点;弧表示的数据结构如下表:
其中,tailnum表示弧尾的节点编号,headnum表示弧头的节点编号,Etype表示弧的类型,Etype={1,0},当Etype=1时,表示弧为分支弧,guard指向对应的条件谓词取值表达式,assignment为空,当Etype=0时,表示弧为顺序弧,guard为空,assignment指向对应的赋值语句链表,Hlink指向弧头相同的下一条弧,Tlink指向弧尾相同的下一条弧;
步骤4,根据控制流图CFG对ST程序进行数据流分析,构建状态转换邻接表和变量取值变化邻接表;
步骤5,根据步骤4构建的状态转换邻接表和变量取值变化邻接表生成NuSMV输入模型。
2.根据权利要求1所述的PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,所述步骤1中,对PLC的ST语言进行分析的具体内容是:分析ST语言的架构、关键字、表达式、赋值、注释、操作符优先级、条件语句、循环语句以及跳转语句。
3.根据权利要求1所述的PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,所述步骤2的具体实现过程如下:
步骤201,创建若干个Eclipse项目,通过Eclipse向导:File->New->Project...->Xtext->Xtext project;
步骤202,选择项目名称、语言名称以及文件扩展名;
步骤203,输入ST语言的语法,执行代码生成器生成各种语言组建,在项目中选中文件GenerateDomainmodel.mwe2,点击右键Run As->MWE2 Workow,将会触发Xtext语言生成器,生成解析器和序列化器。
4.根据权利要求1所述的PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,所述步骤3中,确定各语句生成控制流图CFG的算法具体为:根据控制流图CFG的结构生成赋值语句、IF语句、CASE语句、FOR语句、WHILE语句以及REPEAT语句的控制流图;对于赋值语句直接添加到数据列表assignment中;对于IF语句,首先获得条件语句,并根据条件语句的真假创建两条分支弧,在遇到关键字END_IF时,这两条分支指向汇合节点;对于ST语言的CASE语句,表示多分支结构,首先根据CASE变量的N个不同的取值生成N条由CASE顶点到N个不同值节点的弧,然后在遇到关键字END_CASE时,这N条分支指向汇合节点;FOR语句、WHILE语句以及REPEAT语句,均是根据条件语句的真假分别生成两条分支弧,循环体对应生成一条弧,且该弧与条件为真的那条弧的两个节点相同,方向反向;
最后将生成的弧存储到数组列表ArrayList中。
5.根据权利要求4所述的PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,所述步骤4中,根据控制流图CFG对ST程序进行数据流分析,定义如下的数据结构来表示控制流图的状态迁移关系:
其中,Guard表示状态迁移所需要满足的条件,State表示状态迁移的目标状态,Next指向下一个状态迁移,定义如下数据结构用于表示系统内变量的取值变化:
其中,State′表示变量被赋值前的状态,Expr表示系统内变量赋值语句右侧的数值或表达式,Next′表示该变量下一个取值变化;
遍历步骤3生成的弧的数组列表ArrayList,参照上述两个数据结构,分别生成状态转换邻接表State_List以及变量取值变化邻接表Var_List。
6.根据权利要求1或者5所述的PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,所述NuSMV输入模型包括状态集合部分、变量声明部分、状态转换部分和变量数据值变化部分;遍历状态转换邻接表生成状态集合部分和状态转换部分,遍历变量取值变化邻接表获得变量声明部分和变量数据值变化部分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710382639.4A CN107193745B (zh) | 2017-05-26 | 2017-05-26 | PLC程序到NuSMV输入模型的自动化构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710382639.4A CN107193745B (zh) | 2017-05-26 | 2017-05-26 | PLC程序到NuSMV输入模型的自动化构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107193745A CN107193745A (zh) | 2017-09-22 |
CN107193745B true CN107193745B (zh) | 2019-10-29 |
Family
ID=59875834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710382639.4A Active CN107193745B (zh) | 2017-05-26 | 2017-05-26 | PLC程序到NuSMV输入模型的自动化构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107193745B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228455B (zh) * | 2017-12-29 | 2020-06-23 | 北京航空航天大学 | 一种软件控制危险分析方法 |
CN108446218A (zh) * | 2018-02-28 | 2018-08-24 | 华东师范大学 | 一种结构化文本程序的自动化验证装置 |
CN108446121A (zh) * | 2018-02-28 | 2018-08-24 | 华东师范大学 | 一种结构化文本程序的自动化验证方法 |
CN108733410B (zh) * | 2018-04-13 | 2021-10-01 | 南京南瑞继保电气有限公司 | 一种指令优化方法 |
CN108681445B (zh) * | 2018-04-16 | 2020-07-24 | 华中科技大学 | 一种基于时间自动机的plc程序设计方法 |
CN109143953B (zh) * | 2018-06-26 | 2020-04-24 | 华东师范大学 | 一种基于中间语言的plc程序验证方法 |
CN110515856B (zh) * | 2019-09-02 | 2021-01-29 | 华东师范大学 | 一种基于动态符号执行的测试用例生成系统 |
CN110515857A (zh) * | 2019-09-02 | 2019-11-29 | 华东师范大学 | 一种基于动态符号执行的测试用例生成方法 |
CN114327679A (zh) * | 2021-12-29 | 2022-04-12 | 凌云光技术股份有限公司 | 一种流程图组件 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092747A (zh) * | 2011-10-27 | 2013-05-08 | 西门子公司 | 一种控制程序的验证和测试方法及系统 |
-
2017
- 2017-05-26 CN CN201710382639.4A patent/CN107193745B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092747A (zh) * | 2011-10-27 | 2013-05-08 | 西门子公司 | 一种控制程序的验证和测试方法及系统 |
Non-Patent Citations (2)
Title |
---|
"An overview of model checking practices on verification of PLC software";Tolga Ovatman等;《Software and Systems Modeling》;20161031;第15卷(第4期);第937-960页 * |
"Automated Generation of Formal Models from ST Control Programs for Verification Purposes";Borja Fernandez Adiego等;《CERN-ACC-NOTE-2014-0037》;20140610;摘要,第2节,第4-6节,图8 * |
Also Published As
Publication number | Publication date |
---|---|
CN107193745A (zh) | 2017-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107193745B (zh) | PLC程序到NuSMV输入模型的自动化构建方法 | |
CN103955426B (zh) | 一种检测c代码空指针引用的方法及系统 | |
Biallas et al. | Arcade. PLC: A verification platform for programmable logic controllers | |
CN104077140B (zh) | 用于持续集成的自动化编译方法和编译装置 | |
CN105022691B (zh) | 一种基于uml图的高度自动化软件测试方法 | |
CN104820613B (zh) | 一种异构多核程序的编译方法 | |
CN102231134A (zh) | 基于静态分析的冗余代码缺陷检测方法 | |
US8806452B2 (en) | Transformation of computer programs and eliminating errors | |
CN104503754A (zh) | 一种机器人图形化编程系统中编程及编译的设计方法 | |
CN101398758A (zh) | 一种代码抄袭的检测方法 | |
CN102609451A (zh) | 面向流式数据处理的sql查询计划生成方法 | |
CN102012991A (zh) | 基于静态分析的c语言安全规则检查方法 | |
CN111222141B (zh) | 一种汽车电控单元代码漏洞分析方法和系统 | |
CN107367686A (zh) | 一种rtl硬件木马测试向量的生成方法 | |
Le et al. | Interactive program synthesis | |
CN103914379A (zh) | 故障自动注入与故障检测的方法及其系统 | |
CN109522005A (zh) | 跨平台图形化程序设计方法 | |
Cuomo et al. | A novel approach based on formal methods for clone detection | |
CN112905232B (zh) | 一种基于语法分析树的程序代码平行语料挖掘方法及系统 | |
Rubin | Parameterised verification of autonomous mobile-agents in static but unknown environments | |
CN103646194A (zh) | 一种基于形式化验证的同步数据流程序的可信排序方法 | |
CN117851101A (zh) | 一种基于大语言模型的仓库级别代码缺陷自动修复的方法 | |
CN102508691B (zh) | 一种图形语言程序的有序分解方法及有序分解器 | |
CN102681932A (zh) | 一种检测软件异常输入处理正确性的方法 | |
Sun et al. | A hierarchical CPN model automatically generating method aiming at multithreading program algorithm error detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |