一种基于多任务多视角学习的多目标软件缺陷预测方法技术

技术编号:35294269 阅读:16 留言:0更新日期:2022-10-22 12:41
本发明专利技术提出一种基于多任务多视角学习的多目标软件缺陷预测方法,能够基于目标软件已知缺陷情况的历史代码对未知缺陷情况的待测代码中的缺陷进行预测;解决传统软件缺陷预测方法仅能完成一项缺陷预测目标而对不同的缺陷预测目标采用不同预测方法时,使用复杂度与资源消耗较大的难题,并且能够有效地改善静态分析工具的误报与漏报情况。能够基于集成静态分析方法提取包含代码度量特征、缺陷空间结构特征与缺陷典型语义特征的多视角特征信息。通过所构建的多任务多视角神经网络模型,完成目标代码的缺陷倾向性、位置与类型预测,准确而高效地提供多个方面的缺陷预测信息,大幅度改善静态分析的漏报与误报情况,帮助开发者完成有效的缺陷挖掘。有效的缺陷挖掘。有效的缺陷挖掘。

【技术实现步骤摘要】
一种基于多任务多视角学习的多目标软件缺陷预测方法


[0001]本专利技术提供一种基于多任务多视角学习的多目标软件缺陷预测方法,属于软件缺陷预测领域。

技术介绍

[0002]准确而有效的软件缺陷预测对于软件可靠性保证和维护十分重要。然而,软件功能的丰富和软件结构的日益复杂对软件缺陷预测方法提出了更高的要求。因此,软件缺陷预测多年来一直是软件工程研究中的活跃领域。软件缺陷预测工作的核心就是,主要包含以下三项预测目标:
[0003](1)预测代码的缺陷倾向性:预测目标软件的待测代码中是否包含缺陷;
[0004](2)预测代码的缺陷位置:预测软件代码中的缺陷位置;
[0005](3)预测代码的缺陷类型:预测软件代码中的缺陷类型。
[0006]然而,常见的缺陷预测方法大多数仅能够完成上述目标中的其中一种,即为单目标缺陷预测方法。它们仅能够提供某一个方面的缺陷预测信息,因此对开发人员进行缺陷挖掘的帮助相对有限。同时,针对不同的缺陷预测目标采用不同的缺陷预测方法又会大大增加缺陷预测工作的操作复杂度与时间消耗,从而导致可用性较差。因此,研发一个多目标的软件缺陷方法能够同时准确地完成多项缺陷预测目标,能够大大提升缺陷预测的效率,是十分有意义的。同时,多任务多视角学习是一种新颖的机器学习方法,它能够充分利用来自不同视角的信息从而有效的学习多个相关任务。它在计算机视觉与自然语言处理领域的优秀表现证明了,采取多任务多视角神经网络模型能够有效地提升模型的表现。并且,静态分析方法是一种通过直接扫描目标代码来提取缺陷警告的方法,能够提供充分的多个视角的缺陷信息,例如缺陷的位置信息、缺陷的类型信息等。因此本专利技术选择通过多任务多视角学习与静态分析方法构建一个多目标软件缺陷预测方法。
[0007]本专利技术提供了一种基于多任务多视角学习的多目标软件缺陷预测方法,能够基于目标软件已知缺陷情况的历史代码对未知缺陷情况的待测代码中的缺陷进行预测。它基于集成静态分析方法从源代码中提取了缺陷的空间分布和语义特征,深度挖掘了多视角的缺陷信息。之后,所构建的多任务多视角神经网络模型具有强大的学习能力,可以充分考虑各个任务与各个视角的特征间的关联关系,从而同时预测出待测代码的缺陷的倾向性、位置和类型。它充分考虑了多个软件缺陷预测任务之间和特征之间的相关性,并分享各个任务中学习的经验,从而有效地提高软件缺陷预测的效率与准确率,并且显着地减少了静态分析工具的误报和漏报情况。本专利技术能够从多个角度对软件开发者提供更加全面而准确的缺陷预测信息,从而高效的完成缺陷挖掘并有效地提升软件的质量与可靠性。

技术实现思路

[0008](一)目的
[0009]本专利技术一种基于多任务多视角学习的多目标软件缺陷预测方法,能够基于目标软
件已知缺陷情况的历史代码对未知缺陷情况的待测代码中的缺陷进行预测,属于软件缺陷预测领域。本专利技术方法可以解决传统软件缺陷预测方法仅能完成一项缺陷预测目标而对不同的缺陷预测目标采用不同预测方法时,使用复杂度与资源消耗较大的难题,并且能够有效地改善静态分析工具的误报与漏报情况。本专利技术能够基于集成静态分析方法提取包含代码度量特征、缺陷空间结构特征与缺陷典型语义特征的多视角特征信息。通过本专利技术所构建的多任务多视角神经网络模型,能够基于所提取的多视角特征信息同时完成目标代码的缺陷倾向性、位置与类型预测,准确而高效地提供多个方面的缺陷预测信息,大幅度改善静态分析的漏报与误报情况,帮助开发者完成有效的缺陷挖掘。
[0010](二)技术方案
[0011]本专利技术一种基于多任务多视角学习的多目标软件缺陷预测方法,能够基于已知缺陷情况的目标软件的历史代码,对未知缺陷情况的待测代码中的缺陷进行预测,其具体实施步骤如下:如图1所示;
[0012]步骤1:收集目标软件历史代码的缺陷数据,包括代码是否存在缺陷、缺陷的代码行数与缺陷的类型,从而为后续的缺陷预测模型训练提供缺陷倾向性、缺陷位置与缺陷类型预测的标签;
[0013]步骤2:通过集成静态分析方法提取目标软件历史代码的缺陷信息,包括代码度量信息,代码经过扫描后是否存在缺陷告警,缺陷告警所在代码的位置信息以及具体的缺陷告警的描述信息;
[0014]步骤3:从集成静态分析得到的缺陷信息中提取软件代码的度量信息,包括代码行数、圈复杂度、分支语句数等,组成代码度量特征向量;
[0015]步骤4:从集成静态分析得到的缺陷信息中提取软件代码缺陷告警的位置信息,将源代码分为20个代码片段,并采用多热编码标记对应的缺陷位置,组成缺陷空间结构特征向量;
[0016]步骤5:从集成静态分析得到的缺陷信息中提取软件代码缺陷告警的描述信息,计算缺陷描述与每个缺陷类别描述的语义相似度,并采用多热编码标记对应的缺陷类别,组成缺陷典型语义特征向量;
[0017]步骤6:将步骤3

5中得到的代码度量特征向量、缺陷空间结构特征向量与缺陷典型语义特征向量组合为多视角特征向量;
[0018]步骤7:将目标软件历史代码的多视角特征向量与对应的标签数据输入构建的多任务多视角神经网络模型中完成训练与调优;
[0019]步骤8:对目标软件的待测代码按顺序执行步骤2

步骤6,得到待测代码的多视角特征向量;
[0020]步骤9:将目标软件待测代码的多视角特征向量输入步骤7中完成训练的多任务多视角神经网络模型中,得到待测代码的缺陷倾向性、位置与类型预测结果。
[0021]通过以上步骤,可以基于目标软件已知缺陷情况的历史代码对未知缺陷情况的待测代码中缺陷的有无,缺陷位置与缺陷类型同时进行预测,从而解决传统软件缺陷预测方法仅能完成一项缺陷预测目标而对不同的缺陷预测目标采用不同预测方法时使用复杂度与资源消耗较大的难题,并且能够有效地改善静态分析工具的误报与漏报情况。本专利技术能够基于集成静态分析与多任务多视角模型同时完成目标代码的缺陷倾向性、位置与类型预
测,准确而高效地提供多个方面的缺陷预测信息,帮助开发者完成有效的缺陷挖掘。本专利技术的原理示意图如图2所示。本专利技术基于使用多个静态分析方法s1至s
n
对带分析软件的源代码f至f
n
得到的静态分析结果,之后对静态分析结果进行集成,提取其中的代码度量信息,代码经过扫描后是否存在缺陷告警,缺陷告警所在代码的位置信息以及具体的缺陷告警的描述信息。之后从集成静态分析结果中,提取出多视角特征,包含代码度量特征、缺陷空间结构特征与缺陷典型语义特征,并生成多视角特征向量。将多视角特征向量输入训练调优后的多任务多视角神经网络模型中,即可同时完成代码的缺陷倾向性预测、缺陷位置预测与缺陷类型预测,并得到相应的多目标缺陷预测结果。此时,本专利技术可完成准确而高效的多目标软件缺陷预测,并且有效地改善静态分析工具的漏报与误报情况。
[0022]其中,步骤1中所述的“收集目标软件历史代码的缺陷数据,包括代码是否存在缺陷、缺陷的代码行数与缺陷的类型,从而为后续的缺陷预测模型本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多任务多视角学习的多目标软件缺陷预测方法,其特征在于:步骤1:收集目标软件历史代码的缺陷数据,包括代码是否存在缺陷、缺陷的代码行数与缺陷的类型,为后续的缺陷预测模型训练提供缺陷倾向性、缺陷位置与缺陷类型预测的标签;步骤2:通过集成静态分析方法提取目标软件历史代码的缺陷信息,包括代码度量信息,代码经过扫描后是否存在缺陷告警,缺陷告警所在代码的位置信息以及具体的缺陷告警的描述信息;步骤3:从集成静态分析得到的缺陷信息中提取软件代码的度量信息,包括代码行数、圈复杂度及分支语句数,组成代码度量特征向量;步骤4:从集成静态分析得到的缺陷信息中提取软件代码缺陷告警的位置信息,将源代码分为20个代码片段,并采用多热编码标记对应的缺陷位置,组成缺陷空间结构特征向量;步骤5:从集成静态分析得到的缺陷信息中提取软件代码缺陷告警的描述信息,计算缺陷描述与每个缺陷类别描述的语义相似度,并采用多热编码标记对应的缺陷类别,组成缺陷典型语义特征向量;步骤6:将步骤3

5中得到的代码度量特征向量、缺陷空间结构特征向量与缺陷典型语义特征向量组合为多视角特征向量;步骤7:将目标软件历史代码的多视角特征向量与对应的标签数据输入构建的多任务多视角神经网络模型中完成训练与调优;步骤8:对目标软件的待测代码按顺序执行步骤2

步骤6,得到待测代码的多视角特征向量;步骤9:将目标软件待测代码的多视角特征向量输入步骤7中完成训练的多任务多视角神经网络模型中,得到待测代码的缺陷倾向性、位置与类型预测结果。2.根据权利要求1所述的一种基于多任务多视角学习的多目标软件缺陷预测方法,其特征在于:在步骤1中,具体为:从软件缺陷库或缺陷数据集中收集目标软件历史代码的缺陷信息,目标软件代码由常见的C/C++语言或Java语言编写;编写自动化提取工具将缺陷与否、缺陷的位置与缺陷的具体描述进行提取;之后通过热编码生成对应的缺陷倾向性、缺陷位置与缺陷类型预测的标签,并使用CSV文件进行统一储存。3.根据权利要求1所述的一种基于多任务多视角学习的多目标软件缺陷预测方法,其特征在于:在步骤2中,具体为:通过调用对应语言的多个静态分析工具对目标软件历史代码的缺陷进行扫描分析,将多个静态分析工具生成的不同静态分析结果进行提取与集成;其中,代码度量结果通过代码度量软件进行提取,而缺陷分析结果通过开源的静态分析工具进行提取,包括缺陷位置信息与具体描述信息;提取后的缺陷信息通过CSV文件进行统一储存。4.根据权利要求1或2或3所述的一种基于多任务多视角学习的多目标软件缺陷预测方法,其特征在于:在步骤3中,具体为:从步骤2中提取的缺陷信息中筛选出11个代码度量指标,包括代码行数、除去空行后的代码行数、语句数、分支语句百分比、注释百分比、方法数、最复杂方法所在行数、最深嵌套块所在行数、最大嵌套深度、平均嵌套深度与圈复杂度;将上述指标合成为一个一维向量,即为代码度量特征向量;它是后续步骤训练预测模型时所需的输入特征的一部分;用F1至F
11
分别表示这11个代码度量指标,则代码度量特征向量表
示为:Feature1=[F1,F2,F3,...,F
11
]。5.根据权利要求1或2或3所述的一种基于多任务多视角学习的多目标软件缺陷预测方法,其特征在于:在步骤4中,具体为:从步骤2中提取的缺陷信息中筛选出缺陷所在的代码行数,将代码平均分为20个片段后,通过热编码方式针对缺陷告警行数所在的片段进行标记,生成位置标记向量;并且在标记时,针对每个工具的结果根据告警的严重程度将告警分为Error与Warning两类;将每个工具告警的...

【专利技术属性】
技术研发人员:杨顺昆杨明浩侯展意林欧雅
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

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

1