【技术实现步骤摘要】
一种基于多维度代码联合图表示的软件缺陷预测方法
[0001]本专利技术涉及一种基于多维度代码联合图表示的软件缺陷预测方法,属于软件工程中的软件分析及软件缺陷预测的
。
技术介绍
[0002]随着软件规模的扩大和复杂度的不断提高
,
软件的质量问题成为关注的焦点,软件缺陷是软件质量的对立面,威胁着软件质量,如何在软件开发的早期挖掘出缺陷模块成为一个亟需解决的问题
。
软件缺陷预测通过挖掘软件历史仓库,设计出与缺陷相关的内在度量元,然后借助机器学习等方法来提前发现与锁定缺陷模块,从而合理地分配有限的资源
。
长期以来,软件缺陷预测一直是研究人员和行业从业者感兴趣的话题,因为知道预测的缺陷可能性有助于提高软件质量并降低成本
。
例如,开发人员可以使用软件缺陷来确定维护任务的优先级,规划活动以减少技术债务,估计项目质量保证工作的成本和所需资源,并通过了解导致缺陷发生的系统因素来改进整个开发过程
。
因此,软件缺陷预测是软件质量保证的重要途径之一
。
与软件缺陷预测相关的专利主要有:基于深度神经网络和概率决策森林的软件缺陷预测模型
(
公开号
CN109446090)
;一种基于长短期记忆网络和
LASSO
算法的软件缺陷预测方法
(CN113778862A)
等
。
[0003]近年来,提出了许多基于机器学习的方法和各种软件度量并将其应 ...
【技术保护点】
【技术特征摘要】
1.
一种基于多维度代码联合图表示的软件缺陷预测方法,其特征在于:针对对应代码库中的代码内容信息和代码注释信息构建软件缺陷预测模型,并运用到软件缺陷预测任务当中,实现缺陷预测,此过程包括如下步骤:步骤
A.
将含有类标的源代码信息提交至存储库当中充当代码样本,将代码样本分解为不含注释的源代码和代码注释两个部分,其中不含有注释的源代码包括子部分:函数和类的定义
、
变量和常量定义
、
控制流语句
、
错误处理和异常处理;步骤
B.
针对代码样本中的上述两部分,从不含注释的源代码中抽取抽象语法树
AST
结构,获取抽象语法树节点,同时对抽象语法树进行遍历,获取其中的依赖关系表征数据和调用关系表征数据,最终获取其语法树节点
、
依赖关系
、
调用关系数据的特征序列,再从代码注释文本中抽取单词序列并对其进行编码,获取代码注释序列;步骤
C.
针对步骤
B
中分别获取的语法树节点和代码注释序列,通过
Word2vec
模型将新的序列转化为对应的向量:语法树节点向量和代码注释向量;步骤
D.
针对代码信息中获取的语法树节点向量和代码注释向量,将两者拼接成新的节点向量作为图结构的最终节点向量表示,并且利用步骤
B
中获取的依赖关系和调用关系作为边构建完整的图结构表示;步骤
E.
将步骤
D
中获取的图结构表示输入到图卷积神经网络中,在若干卷积层后使用池化操作来构建图集表示,通过两个全连接层综合网络中学习到的所有信息,最后使用
Softmax
分类器输出缺陷倾向;步骤
F.
基于代码内容对应的
AST
词向量和代码注释对应的词向量构建的图结构预测模型,针对构建好的图卷积神经网络
GCN
模型执行训练任务,优化
GCN
模型参数,获得训练好的
GCN
预测模型,即获得软件缺陷预测的模型;基于软件缺陷预测模型的构建,按如下步骤Ⅰ至步骤Ⅲ,实现应用代码预测模型针对代码内容和代码注释的软件缺陷检测任务;步骤Ⅰ.
收集源代码并分解成各个模块,需要先对各个模块进行缺陷标记处理,将有缺陷的模块进行标记;步骤
II.
将标注好的数据集分为训练集和测试集,源代码数据集中的
70
%和
30
%分别作为训练集和测试集;步骤Ⅲ.
针对已经划分好的数据集,输入到构建好的缺陷预测模型中去,让模型学习特征与标签之间的关系,并对模型进行优化和调整,从而获得更好的预测效果得到最终预测模型
。2.
根据权利要求1所述的一种基于多维度代码联合图表示的软件缺陷预测方法,其特征在于:步骤
B1.
针对提交至代码库中的源代码内容抽取抽象语法树结构,并进行解析结构关系,获取控制依赖关系和调用关系,按照步骤
B1.1
至步骤
B1.4
:步骤
B1.1
词法分析过程按照预定的规则将源代码中的代码内容合并成
tokens
标识并去除代码语句中空白
、
注释等冗余信息,最后将所有合成的
tokens
标识分割进一个
tokens
列表中;步骤
B1.2
语法分析过程将步骤
B1.1
中获取的
tokens
列表转化成树型结构,同时验证是否存在语法上的错误,将有语法错误的部分抛出;
步骤
B1.3
在进行依赖关系解析时,对构建的语法树进行遍历,计算代码语句中的控制和数据依赖关系,获取依赖关系的表征数据;步骤
B1...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。