当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于程序依赖增强缺陷定位的方法和装置制造方法及图纸

技术编号:31376446 阅读:25 留言:0更新日期:2021-12-15 11:13
本发明专利技术公开了一种基于程序依赖增强缺陷定位的方法和装置。该方法通过对源代码的语句数据依赖关系分析,将由现有软件工具分析源代码得到的语句缺陷可疑度表结合语句数据依赖关系组成一个由N+1个可疑度值组成的特征值向量作为源代码各个语句的样本输入至支持向量机中进行机器分析,从而得到优化后的缺陷可疑度列表,由此强化定位结果,使得缺陷定位更为精准。精准。精准。

【技术实现步骤摘要】
一种基于程序依赖增强缺陷定位的方法和装置


[0001]本专利技术涉及程序代码分析技术,尤其涉及程序软件源代码的缺陷分析技术。

技术介绍

[0002]软件不可避免的存在缺陷。软件产品项目中,往往测试周期远大于开发周期,原因就是在测试过程中发现的缺陷对其修复时需要耗费大量的人工。缺陷修复时,首要的难点在于缺陷定位,也就是找到软件代码在哪里出现的缺陷。尤其在软件规模很大时,找到缺陷代码需要耗费大量的时间。
[0003]由此,自动化的软件缺陷定位方法和工具逐步受到重视。现有技术中,缺陷定位主要通过两种方法:第一种是通过静态检查工具遍历程序代码,找出其中可疑缺陷之处;第二种是通过程序测试执行过程中的语句覆盖信息,找出其中语句的缺陷可疑之处,比如以Ochiai为代表的基于程序频谱的自动化程序缺陷定位工具。

技术实现思路

[0004]本专利技术所要解决的问题:对现有工具所找出的语句缺陷可疑之处进行进一步分析,以使得语句缺陷可疑定位更加精准。
[0005]为解决上述问题,本专利技术采用的方案如下:根据本专利技术的一种基于程序依赖增强缺陷定位的方法,包括:数据获取步骤、依赖分析步骤、模型训练步骤和缺陷分析步骤;所述数据获取步骤,用于:获取训练数据和待评数据;所述训练数据包括训练用源代码、训练用缺陷可疑度列表和已知缺陷表;所述待评数据包括待评源代码和待评缺陷可疑度列表;所述训练用缺陷可疑度列表和待评缺陷可疑度列表均为缺陷可疑度列表;所述依赖分析步骤:根据输入的源代码构建控制流图,然后通过对所述控制流图的数据流分析,构建以所述控制流图各节点之间的语句数据依赖关系;所述模型训练步骤包括以下步骤:步骤ST1:通过所述依赖分析步骤对所述训练用源代码进行语句数据依赖关系分析,得到训练用语句数据依赖关系;步骤ST2:根据所述训练用语句数据依赖关系、训练用缺陷可疑度列表和已知缺陷表,为所述训练用源代码的各语句构建相应的缺陷定位训练样本;所述缺陷定位训练样本包括特征值向量和缺陷标签;步骤ST3:将各个缺陷定位训练样本中的特征值向量和缺陷标签输入至支持向量机进行训练;所述缺陷分析步骤包括以下步骤:步骤SA1:通过所述依赖分析步骤对所述待评源代码进行语句数据依赖关系分析,得到待评语句数据依赖关系;
步骤SA2:根据所述待评语句数据依赖关系和待评缺陷可疑度列表,为所述待评源代码的各语句构建相应的缺陷定位评估样本;所述缺陷定位评估样本包括特征值向量;步骤SA3:将各个缺陷定位评估样本中的特征值向量输入至通过所述模型训练步骤训练好了的支持向量机进行评估,得到新的缺陷可疑度列表;上述各步骤中,所述缺陷可疑度列表是可疑缺陷定位信息的集合;所述可疑缺陷定位信息至少包括语句位置和可疑度值;所述已知缺陷表是已知缺陷定位信息的集合;所述已知缺陷定位信息至少包括语句位置;所述语句位置用于指示当前语句在源代码中的位置;所述缺陷标签用于表示当前语句是否存在已知缺陷,根据所述已知缺陷表确定;所述特征值向量是由N+1个可疑度值所组成的向量;其中第一个可疑度值是当前语句的可疑度值,其他N个可疑度值是与当前语句存在依赖关系的语句可疑度值最高的N个语句的可疑度值;所述依赖关系根据所述语句数据依赖关系所确定;所述语句的可疑度值根据所述缺陷可疑定位表确定。
[0006]进一步,根据本专利技术的基于程序依赖增强缺陷定位的方法,所述依赖分析步骤包括以下步骤:步骤SY1:根据所输入的源代码构建控制流图;所述控制流图中,每个节点对应一条源代码语句;步骤SY2:为所述控制流图中的各个节点解析其中所涉及的变量,得到节点变量信息的集合;所述节点变量信息对应于变量,包括变量信息、变量值类型和语句位置;所述变量值类型分成变更和引用,若所对应的变量在对应的语句中被变更,其变量值类型为变更;若所对应的变量在对应的语句中被使用,其变量值类型为引用;步骤SY3:通过迭代的方式,将所述控制流图中的各个节点的对应的各个前驱节点的节点变量信息的集合合并至当前节点中形成新的节点变量信息的集合,直到各个节点的节点变量信息的集合不再发生变化;步骤SY4:提取各个节点的节点变量信息的集合,剔除其中变量值类型为引用的节点变量信息,简化处理后,组成各个节点对应的数据依赖信息作为其语句数据依赖关系;所述数据依赖信息为当前节点所存续的变量所对应的变量值变更信息的集合;所述变量值变更信息包括变更位置信息;所述变更位置信息表示前序节点中变量的变量值被变更时所在的语句位置;所述前序节点是指控制流图所表示的路径上位于当前节点之前的节点;所述前驱节点是指当前节点相连的前序节点。
[0007]进一步,根据本专利技术的基于程序依赖增强缺陷定位的方法,所述步骤SY4中将各个节点对应的数据依赖信息转换成与当语句存在依赖关系的语句列表作为其语句数据依赖关系。
[0008]根据本专利技术的一种基于程序依赖增强缺陷定位的装置,包括:数据获取模块、依赖分析模块、模型训练模块和缺陷分析模块;
所述数据获取模块,用于:获取训练数据和待评数据;所述训练数据包括训练用源代码、训练用缺陷可疑度列表和已知缺陷表;所述待评数据包括待评源代码和待评缺陷可疑度列表;所述训练用缺陷可疑度列表和待评缺陷可疑度列表均为缺陷可疑度列表;所述依赖分析模块:根据输入的源代码构建控制流图,然后通过对所述控制流图的数据流分析,构建以所述控制流图各节点之间的语句数据依赖关系;所述模型训练模块包括以下模块:模块MT1:通过所述依赖分析模块对所述训练用源代码进行语句数据依赖关系分析,得到训练用语句数据依赖关系;模块MT2:根据所述训练用语句数据依赖关系、训练用缺陷可疑度列表和已知缺陷表,为所述训练用源代码的各语句构建相应的缺陷定位训练样本;所述缺陷定位训练样本包括特征值向量和缺陷标签;模块MT3:将各个缺陷定位训练样本中的特征值向量和缺陷标签输入至支持向量机进行训练;所述缺陷分析模块包括以下模块:模块MA1:通过所述依赖分析模块对所述待评源代码进行语句数据依赖关系分析,得到待评语句数据依赖关系;模块MA2:根据所述待评语句数据依赖关系和待评缺陷可疑度列表,为所述待评源代码的各语句构建相应的缺陷定位评估样本;所述缺陷定位评估样本包括特征值向量;模块MA3:将各个缺陷定位评估样本中的特征值向量输入至通过所述模型训练模块训练好了的支持向量机进行评估,得到新的缺陷可疑度列表;上述各模块中,所述缺陷可疑度列表是可疑缺陷定位信息的集合;所述可疑缺陷定位信息至少包括语句位置和可疑度值;所述已知缺陷表是已知缺陷定位信息的集合;所述已知缺陷定位信息至少包括语句位置;所述语句位置用于指示当前语句在源代码中的位置;所述缺陷标签用于表示当前语句是否存在已知缺陷,根据所述已知缺陷表确定;所述特征值向量是由N+1个可疑度值所组成的向量;其中第一个可疑度值是当前语句的可疑度值,其他N个可疑度值是与当前语句存在依赖关系的语句可疑度值最高的N个语句的可疑度值;所述依赖关系根据所述语句数据依赖关系所确定;所述语句的可疑度值根据所述缺陷可疑定位表确定。
[0009]进一步,根据本专利技术的基于程序依赖增强缺陷定位的装置,所述依本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于程序依赖增强缺陷定位的方法,其特征在于,该方法包括:数据获取步骤、依赖分析步骤、模型训练步骤和缺陷分析步骤;所述数据获取步骤,用于:获取训练数据和待评数据;所述训练数据包括训练用源代码、训练用缺陷可疑度列表和已知缺陷表;所述待评数据包括待评源代码和待评缺陷可疑度列表;所述训练用缺陷可疑度列表和待评缺陷可疑度列表均为缺陷可疑度列表;所述依赖分析步骤:根据输入的源代码构建控制流图,然后通过对所述控制流图的数据流分析,构建以所述控制流图各节点之间的语句数据依赖关系;所述模型训练步骤包括以下步骤:步骤ST1:通过所述依赖分析步骤对所述训练用源代码进行语句数据依赖关系分析,得到训练用语句数据依赖关系;步骤ST2:根据所述训练用语句数据依赖关系、训练用缺陷可疑度列表和已知缺陷表,为所述训练用源代码的各语句构建相应的缺陷定位训练样本;所述缺陷定位训练样本包括特征值向量和缺陷标签;步骤ST3:将各个缺陷定位训练样本中的特征值向量和缺陷标签输入至支持向量机进行训练;所述缺陷分析步骤包括以下步骤:步骤SA1:通过所述依赖分析步骤对所述待评源代码进行语句数据依赖关系分析,得到待评语句数据依赖关系;步骤SA2:根据所述待评语句数据依赖关系和待评缺陷可疑度列表,为所述待评源代码的各语句构建相应的缺陷定位评估样本;所述缺陷定位评估样本包括特征值向量;步骤SA3:将各个缺陷定位评估样本中的特征值向量输入至通过所述模型训练步骤训练好了的支持向量机进行评估,得到新的缺陷可疑度列表;上述各步骤中,所述缺陷可疑度列表是可疑缺陷定位信息的集合;所述可疑缺陷定位信息至少包括语句位置和可疑度值;所述已知缺陷表是已知缺陷定位信息的集合;所述已知缺陷定位信息至少包括语句位置;所述语句位置用于指示当前语句在源代码中的位置;所述缺陷标签用于表示当前语句是否存在已知缺陷,根据所述已知缺陷表确定;所述特征值向量是由N+1个可疑度值所组成的向量;其中第一个可疑度值是当前语句的可疑度值,其他N个可疑度值是与当前语句存在依赖关系的语句可疑度值最高的N个语句的可疑度值;所述依赖关系根据所述语句数据依赖关系所确定;所述语句的可疑度值根据所述缺陷可疑定位表确定。2.如权利要求1所述的基于程序依赖增强缺陷定位的方法,其特征在于,所述依赖分析步骤包括以下步骤:步骤SY1:根据所输入的源代码构建控制流图;所述控制流图中,每个节点对应一条源代码语句;
步骤SY2:为所述控制流图中的各个节点解析其中所涉及的变量,得到节点变量信息的集合;所述节点变量信息对应于变量,包括变量信息、变量值类型和语句位置;所述变量值类型分成变更和引用,若所对应的变量在对应的语句中被变更,其变量值类型为变更;若所对应的变量在对应的语句中被使用,其变量值类型为引用;步骤SY3:通过迭代的方式,将所述控制流图中的各个节点的对应的各个前驱节点的节点变量信息的集合合并至当前节点中形成新的节点变量信息的集合,直到各个节点的节点变量信息的集合不再发生变化;步骤SY4:提取各个节点的节点变量信息的集合,剔除其中变量值类型为引用的节点变量信息,简化处理后,组成各个节点对应的数据依赖信息作为其语句数据依赖关系;所述数据依赖信息为当前节点所存续的变量所对应的变量值变更信息的集合;所述变量值变更信息包括变更位置信息;所述变更位置信息表示前序节点中变量的变量值被变更时所在的语句位置;所述前序节点是指控制流图所表示的路径上位于当前节点之前的节点;所述前驱节点是指当前节点相连的前序节点。3.如权利要求2所述的基于程序依赖增强缺陷定位的方法,其特征在于,所述步骤SY4中将各个节点对应的数据依赖信息转换成与当语句存在依赖关系的语句列表作为其语句数据依赖关系。4.一...

【专利技术属性】
技术研发人员:张天潘敏学罗雯波
申请(专利权)人:南京大学
类型:发明
国别省市:

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

1