【技术实现步骤摘要】
一种基于多任务多视角学习的多目标软件缺陷预测方法
[0001]本专利技术提供一种基于多任务多视角学习的多目标软件缺陷预测方法,属于软件缺陷预测领域。
技术介绍
[0002]准确而有效的软件缺陷预测对于软件可靠性保证和维护十分重要。然而,软件功能的丰富和软件结构的日益复杂对软件缺陷预测方法提出了更高的要求。因此,软件缺陷预测多年来一直是软件工程研究中的活跃领域。软件缺陷预测工作的核心就是,主要包含以下三项预测目标:
[0003](1)预测代码的缺陷倾向性:预测目标软件的待测代码中是否包含缺陷;
[0004](2)预测代码的缺陷位置:预测软件代码中的缺陷位置;
[0005](3)预测代码的缺陷类型:预测软件代码中的缺陷类型。
[0006]然而,常见的缺陷预测方法大多数仅能够完成上述目标中的其中一种,即为单目标缺陷预测方法。它们仅能够提供某一个方面的缺陷预测信息,因此对开发人员进行缺陷挖掘的帮助相对有限。同时,针对不同的缺陷预测目标采用不同的缺陷预测方法又会大大增加缺陷预测工作的操作复杂度与时间消耗,从而导致可用性较差。因此,研发一个多目标的软件缺陷方法能够同时准确地完成多项缺陷预测目标,能够大大提升缺陷预测的效率,是十分有意义的。同时,多任务多视角学习是一种新颖的机器学习方法,它能够充分利用来自不同视角的信息从而有效的学习多个相关任务。它在计算机视觉与自然语言处理领域的优秀表现证明了,采取多任务多视角神经网络模型能够有效地提升模型的表现。并且,静态分析方法是一种通过直接扫描目标代码来提取缺 ...
【技术保护点】
【技术特征摘要】
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两类;将每个工具告警的...
【专利技术属性】
技术研发人员:杨顺昆,杨明浩,侯展意,林欧雅,
申请(专利权)人:北京航空航天大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。