System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 代码静态检测方法、工具、装置、存储介质及设备制造方法及图纸_技高网

代码静态检测方法、工具、装置、存储介质及设备制造方法及图纸

技术编号:39978986 阅读:12 留言:0更新日期:2024-01-09 01:22
本公开涉及一种代码静态检测方法、工具、装置、存储介质及设备。应用于可编程控制器,所述方法包括:设置所述可编程控制器代码的静态分析参数;将所述可编程控制器代码传递到检测工具进行基于所述静态分析参数的分析检测;依据不同的交互方式输出分析检测结果。本公开实施例能够对工控行业代码进行静态检测,相比于动态检测技术具有执行速度快、效率高、代价小的优势,此外还能处理特定行业应用程序代码的非逻辑性缺陷。

【技术实现步骤摘要】

本公开属于工业控制,特别涉及一种代码静态检测方法、工具、装置、存储介质及设备


技术介绍

1、plc(programmable logic controller,可编程控制器)广泛应用于工控行业设备监控、运行控制等场景,plc程序运行问题会导致巨大的经济损失,引发严重后果,因此对plc程序的稳定性、可靠性有较高要求。目前,plc程序io点数不断增大,plc程序状态空间指数级增加,使得通过构造测试集结合仿真、调试等方式验证程序逻辑、定位问题难以实现状态集有效覆盖,效果差,效率低。

2、类似c语言等高级语言具有完善的代码静态检测机制,可作为动态检测技术的有效补充,以更高效的方式实现有效的缺陷检测,而plc行业静态检测技术却乏善可陈。


技术实现思路

1、基于上述问题,本公开能够针对目前plc组态软件调测工具存在的问题,从风电、水电等工控行业应用实际调测存在的问题和痛点出发,提供一种可集成到自研plc组态软件亦可独立运行的plc代码静态检测工具、实现可编程控制器代码静态检测的方法、装置、存储介质及设备。

2、为了达到上述目的,根据本公开实施例的第一方面,提供一种代码静态检测方法,应用于可编程控制器,所述方法包括:

3、设置所述可编程控制器代码的静态分析参数;

4、将所述可编程控制器代码传递到检测工具进行基于所述静态分析参数的分析检测;

5、依据不同的交互方式输出分析检测结果。

6、可选地,所述设置所述可编程控制器代码的静态分析参数包括:

7、设置启用的分析检测规则、所述分析检测结果的输出路径以及目标可编程控制器的设备参数。

8、可选地,所述将所述可编程控制器代码传递到检测工具进行基于所述静态分析参数的分析检测包括:

9、构造抽象语法树;

10、基于所述抽象语法树构建控制流图;

11、根据所述抽象语法树和所述控制流图遍历执行所述分析检测规则,并保存分析检测结果。

12、可选地,所述构造抽象语法树包括:

13、将所述可编程控制器代码统一转换为结构化文本语言程序;

14、基于所述结构化文本语言程序构造抽象语法树。

15、可选地,所述基于所述抽象语法树构建控制流图包括:

16、将所述抽象语法树转换为静态单赋值形式的中间代码;

17、基于所述中间代码构建控制流图。

18、可选地,在构造抽象语法树之前,所述将所述可编程控制器代码传递到检测工具进行基于所述静态分析参数的分析检测还包括:

19、根据不同的交互方式将所述可编程控制器代码传递到所述检测工具;

20、对所述可编程控制器代码进行代码解析。

21、可选地,所述根据所述抽象语法树和所述控制流图遍历执行所述分析检测规则,并保存分析检测结果包括:

22、按照所述静态分析参数依次调度各分析检测规则对应的规则执行引擎进行分析检测;

23、所述规则执行引擎根据检测目标选择不同的检测算法进行分析检测,并保存分析检测结果。

24、可选地,所述分析检测规则包括:

25、通用缺陷检测规则和特定行业缺陷检测规则。

26、可选地,所述依据不同的交互方式输出分析检测结果包括:

27、通过应用程序编程接口api(application programming interface)交互时,通过api接口输出分析检测进度及所述分析检测结果;

28、通过文件交互时,将所述分析检测进度及所述分析检测结果写入输出文件中。

29、根据本公开实施例的第二方面提供一种代码静态检测工具,应用于可编程控制器,所述工具包括:交互层、处理层和支撑层;

30、所述交互层用于与外部进行数据交互;

31、所述处理层用于代码分析检测处理;

32、所述支撑层用于提供代码分析检测规则和规则执行引擎支撑。

33、可选地,所述交互层包括交互处理器、文件交互适配器以及api交互适配器;

34、所述交互处理器用于以统一的格式实现外部与内部的数据交互处理;

35、所述文件交互适配器用于在所述交互处理器的基础上实现以文件方式与外部进行数据交互;

36、所述api交互适配器用于在所述交互处理器的基础上实现以api方式与外部进行数据交互。

37、可选地,所述处理层包括解析器、转换器、词法分析器、语法分析器、构造器和调度器;

38、所述解析器用于接收由所述交互处理器传递的待分析代码,并按照tc6标准(technical committee 6,由plcopen(programmable logic controller open,致力于推广iec61131-3标准的全球性协会)技术委员会制定的用于存储plc程序的xml格式的标准)进行格式验证、数据解析;

39、所述转换器用于实现所述待分析代码中多语言到结构化文本语言的转换;

40、所述词法分析器用于从所述结构化文本语言的代码中分析识别出词法序列,同时填充程序符号表;

41、所述语法分析器用于根据所述词法序列构造出抽象语法树,并填充所述程序符号表;

42、所述构造器用于在所述抽象语法树以及所述符号表的基础上先生成静态单赋值形式的中间代码,再对所述中间代码执行控制流分析构造出控制流图;

43、所述调度器用于负责整个分析检测过程中的功能调度及规则引擎的运行调度。

44、可选地,所述支撑层包括:

45、存储静态分析参数的分析配置文件、存储分析检测规则数据的规则库及一系列执行实际分析检测的规则执行引擎。

46、根据本公开实施例的第三方面提供一种代码静态检测装置,应用于可编程控制器,所述检测装置包括:

47、设置模块,用于设置所述可编程控制器代码的静态分析参数;

48、分析检测模块,用于将所述可编程控制器代码传递到检测工具进行基于所述静态分析参数的分析检测;

49、输出模块,用于依据不同的交互方式输出分析检测结果。

50、根据本公开实施例的第四方面提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一项所述方法的步骤。

51、根据本公开实施例的第五方面提供一种电子设备,包括:

52、存储器,其上存储有计算机程序;

53、处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面中任一项所述方法的步骤。

54、综上所述,本公开实施例提供一种代码静态检测方法,应用于可编程控制器,所述方法包括:设置所述可编程控制器代码的静态分析参数;将所述可编程控制器代码传递到检测工具进行基于所述静态分析参数的分析检测;依据不同的交互方式输出分析检测结果。本公本文档来自技高网...

【技术保护点】

1.一种代码静态检测方法,其特征在于,应用于可编程控制器,所述方法包括:

2.根据权利要求1所述的代码静态检测方法,其特征在于,所述设置所述可编程控制器代码的静态分析参数包括:

3.根据权利要求2所述的代码静态检测方法,其特征在于,所述将所述可编程控制器代码传递到检测工具进行基于所述静态分析参数的分析检测包括:

4.根据权利要求3所述的代码静态检测方法,其特征在于,所述构造抽象语法树包括:

5.根据权利要求3所述的代码静态检测方法,其特征在于,所述基于所述抽象语法树构建控制流图包括:

6.根据权利要求3所述的代码静态检测方法,其特征在于,在构造抽象语法树之前,所述将所述可编程控制器代码传递到检测工具进行基于所述静态分析参数的分析检测还包括:

7.根据权利要求3所述的代码静态检测方法,其特征在于,所述根据所述抽象语法树和所述控制流图遍历执行所述分析检测规则,并保存分析检测结果包括:

8.根据权利要求7所述的代码静态检测方法,其特征在于,所述分析检测规则包括:

9.根据权利要求1所述的代码静态检测方法,其特征在于,所述依据不同的交互方式输出分析检测结果包括:

10.一种代码静态检测工具,其特征在于,应用于可编程控制器,所述工具包括:交互层、处理层和支撑层;

11.根据权利要求10所述的代码静态检测工具,其特征在于,所述交互层包括交互处理器、文件交互适配器以及API交互适配器;

12.根据权利要求10所述的代码静态检测工具,其特征在于,所述处理层包括解析器、转换器、词法分析器、语法分析器、构造器和调度器;

13.根据权利要求10所述的代码静态检测工具,其特征在于,所述支撑层包括:

14.一种代码静态检测装置,其特征在于,应用于可编程控制器,所述控制装置包括:

15.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-9中任一项所述方法的步骤。

16.一种电子设备,其特征在于,包括:

...

【技术特征摘要】

1.一种代码静态检测方法,其特征在于,应用于可编程控制器,所述方法包括:

2.根据权利要求1所述的代码静态检测方法,其特征在于,所述设置所述可编程控制器代码的静态分析参数包括:

3.根据权利要求2所述的代码静态检测方法,其特征在于,所述将所述可编程控制器代码传递到检测工具进行基于所述静态分析参数的分析检测包括:

4.根据权利要求3所述的代码静态检测方法,其特征在于,所述构造抽象语法树包括:

5.根据权利要求3所述的代码静态检测方法,其特征在于,所述基于所述抽象语法树构建控制流图包括:

6.根据权利要求3所述的代码静态检测方法,其特征在于,在构造抽象语法树之前,所述将所述可编程控制器代码传递到检测工具进行基于所述静态分析参数的分析检测还包括:

7.根据权利要求3所述的代码静态检测方法,其特征在于,所述根据所述抽象语法树和所述控制流图遍历执行所述分析检测规则,并保存分析检测结果包括:

8.根据权利要求7所述的代码静态检测方法...

【专利技术属性】
技术研发人员:朱继伟李从飞韩兵倪维东刘国炜郑泽邓华钱威
申请(专利权)人:国电南京自动化股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1