System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于多重语法特性的程序缺陷检测方法技术_技高网

一种基于多重语法特性的程序缺陷检测方法技术

技术编号:41875570 阅读:12 留言:0更新日期:2024-07-02 00:27
本发明专利技术提供了一种基于多重语法特性的程序缺陷检测方法,包括如下步骤:使用解析器解析程序的源代码;提取解析得到的语法结构中的多种语法特征;关联多种语法特征得到多重语法特性;基于多重语法特性建立神经网络模型,并使用缺陷样本对神经网络模型进行训练;使用训练后的神经网络模型预测目标代码的潜在缺陷。本发明专利技术有益效果:结合了解析器、神经网络模型等技术,能够在提高检测准确性的同时,降低误报率,并且提高检测效率,是一种较为有效的程序缺陷检测方案。

【技术实现步骤摘要】

本专利技术属于程序检测领域,尤其是涉及一种基于多重语法特性的程序缺陷检测方法


技术介绍

1、程序测试作为产品上线的最后一步对于产品有着至关重要的作用,目前的程序检测常常通过人工编写自动化脚本进行检测,但是这种方式需要预运行程序,当程序编译较为复杂时会消耗大量的时间。

2、有鉴于此,现有技术中提出了静态分析法进行程序检测,这是一种在不运行代码的情况下分析源代码的方法,静态分析工具会检查代码中的潜在问题,如语法错误、类型不匹配、未定义的行为,它们通过扫描源代码并应用预定义的规则或模式来识别潜在的缺陷,降低程序漏洞的发现以及修复成本。

3、但是静态分析也有其自身的一些缺陷和限制:

4、静态分析工具可能会产生假阳性,即误报的缺陷,为了准确性和覆盖范围,某些静态分析工具可能采用过度近似的方法,导致遗漏真正的缺陷或者误报一些复杂的代码结构;

5、静态分析主要依赖于代码的静态结构,不能完全模拟程序的动态行为,导致某些运行时特性和行为无法被捕捉和分析,且对于包含复杂控制流和数据流的代码,静态分析难以准确地确定潜在的缺陷和问题。


技术实现思路

1、有鉴于此,本专利技术旨在提出一种基于多重语法特性的程序缺陷检测方法,以期解决上述部分技术问题中的至少之一。

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、进一步的,基于多重语法特性建立神经网络模型的过程包括:

28、将多重语法特性转换为数值型数据,对于结构化的特性采用图嵌入技术转换为向量表示;

29、使用lstm层构建模型接收转换后的数据,捕捉时间序列中的长期依赖关系;

30、使用二元交叉熵损失函数和sgd算法优化神经网络模型。

31、本专利技术第二方面提供了一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器用于执行上述第一方面所述的一种基于多重语法特性的程序缺陷检测方法。

32、本专利技术第三方面提供了一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如第一方面所述的一种基于多重语法特性的程序缺陷检测方法。

33、相对于现有技术,本专利技术所述的一种基于多重语法特性的程序缺陷检测方法具有以下有益效果:

34、不仅仅依赖于单一的语法特征,而是从程序的源代码中提取多种语法结构的特征,这样可以更全面地捕捉程序中可能存在的缺陷。

35、通过关联多种语法特征并建立神经网络模型,可以更准确地预测目标代码中潜在的缺陷,神经网络模型的训练过程可以使其学习到不同语法特征之间的关联性,从而提高检测的准确性。

36、由于综合考虑了多种语法特征,这种方法可能会减少误报率,即减少将正常代码误判为有缺陷的情况,可以提高程序员在实际工作中使用该工具的信任度。

37、相比传统的手工检测方法,基于神经网络模型的自动化检测方法可以大大提高检测效率,一旦神经网络模型训练完成,就可以快速地对大量的目标代码进行检测,从而节省时间和人力成本。

本文档来自技高网...

【技术保护点】

1.一种基于多重语法特性的程序缺陷检测方法,其特征在于,包括如下步骤:使用解析器解析程序的源代码;提取解析得到的语法结构中的多种语法特征;关联多种语法特征得到多重语法特性;基于多重语法特性建立神经网络模型,并使用缺陷样本对神经网络模型进行训练;使用训练后的神经网络模型预测目标代码的潜在缺陷。

2.根据权利要求1所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:使用解析器解析程序的源代码的过程包括:对目标编程语言或领域特定语言定义相应的语法规则,并根据语法规则生成解析器,其中,语法规则通过上下文无关法表示;使用解析器将程序源代码作为输入进行解析,得到指定形式的语法结构。

3.根据权利要求2所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:根据语法规则生成所述解析器的过程包括:根据源代码的语法特点创建语法文件,使用扩展巴科斯-诺尔范式描述语法规则;在语法文件中定义词法规则和语法规则,根据语法文件中的语法规则生成解析器。

4.根据权利要求2所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:使用解析器对输入的程序源代码进行解析的过程包括:使用解析器对源代码进行词法分析和语法分析,执行语法分析的同时,解析器根据语法规则逐个处理词法单元,并采用自底向上的方式构建语法树;其中,语法树的节点包括经过语法分析替换得到的语法单元、语法分析中未能被替换的词法单元。

5.根据权利要求1所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:提取解析得到的语法结构中的多种语法特征的过程包括:分析程序中的变量声明、使用和生命周期,得到变量在程序中的作用和影响范围;跟踪函数的定义和调用,识别程序中的控制流语句并分析控制流语句的路径和条件;跟踪数据在程序中的赋值、传递和引用,得到数据流的依赖关系;识别程序模块之间的调用和数据传递关系,得到模块间的依赖关系。

6.根据权利要求1所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:关联多种语法特征得到多重语法特性的过程包括:将提取的语法特征转换为项集或事务集形式;进行频繁项集挖掘,得到同时出现的频率较高的语法特征组合;基于频繁项集挖掘的结果生成关联规则,得到多种语法特征之间的关联关系。

7.根据权利要求6所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:当分析单个数据项之间的出现频率时使用项集形式,将每个语法特征表示为单个项;当分析整个数据集的出现频率时使用事务集形式,将每个程序片段或源代码文件表示为一个事务;其中,每个事务均与程序源代码的一个特征对应。

8.根据权利要求1所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:基于多重语法特性建立神经网络模型的过程包括:将多重语法特性转换为数值型数据,对于结构化的特性采用图嵌入技术转换为向量表示;使用LSTM层构建模型接收转换后的数据,捕捉时间序列中的长期依赖关系;使用二元交叉熵损失函数和SGD算法优化神经网络模型。

9.一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于:所述处理器用于执行上述权利要求1-8任一所述的一种基于多重语法特性的程序缺陷检测方法。

10.一种服务器,其特征在于:包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如权利要求1-8任一所述的一种基于多重语法特性的程序缺陷检测方法。

...

【技术特征摘要】

1.一种基于多重语法特性的程序缺陷检测方法,其特征在于,包括如下步骤:使用解析器解析程序的源代码;提取解析得到的语法结构中的多种语法特征;关联多种语法特征得到多重语法特性;基于多重语法特性建立神经网络模型,并使用缺陷样本对神经网络模型进行训练;使用训练后的神经网络模型预测目标代码的潜在缺陷。

2.根据权利要求1所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:使用解析器解析程序的源代码的过程包括:对目标编程语言或领域特定语言定义相应的语法规则,并根据语法规则生成解析器,其中,语法规则通过上下文无关法表示;使用解析器将程序源代码作为输入进行解析,得到指定形式的语法结构。

3.根据权利要求2所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:根据语法规则生成所述解析器的过程包括:根据源代码的语法特点创建语法文件,使用扩展巴科斯-诺尔范式描述语法规则;在语法文件中定义词法规则和语法规则,根据语法文件中的语法规则生成解析器。

4.根据权利要求2所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:使用解析器对输入的程序源代码进行解析的过程包括:使用解析器对源代码进行词法分析和语法分析,执行语法分析的同时,解析器根据语法规则逐个处理词法单元,并采用自底向上的方式构建语法树;其中,语法树的节点包括经过语法分析替换得到的语法单元、语法分析中未能被替换的词法单元。

5.根据权利要求1所述的一种基于多重语法特性的程序缺陷检测方法,其特征在于:提取解析得到的语法结构中的多种语法特征的过程包括:分析程序中的变量声明、使用和生命周期,得到变量在程序中的作用和影响范围;跟踪函数的定义和调用,识别程序中的控制流语句并分析控制流语句的路径和条件;跟踪...

【专利技术属性】
技术研发人员:母浩文
申请(专利权)人:杭州寻臻科技有限责任公司
类型:发明
国别省市:

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

1