一种基于位置敏感层次注意力网络的软件缺陷预测方法技术

技术编号:39178284 阅读:17 留言:0更新日期:2023-10-27 08:26
本发明专利技术涉及人工智能、源码语义特征抽取领域,为一种基于位置敏感层次注意力网络的软件缺陷预测方法,主要包括以下步骤:源代码预处理为嵌入向量;构建样本数据集;构建位置敏感层次注意力网络模型,通过加性注意力机制和自注意力机制抽取源码语义特征;利用反向传播算法计算损失函数对模型参数的梯度,采用Adam优化算法自适应地调整参数实现对模型的训练和调优;最后将待检测源码文件输入模型,输出源码是否存在缺陷。本发明专利技术通过利用层次分割和重构来从不同的层级捕捉源码语义信息的局部和全局特征,同时引入相对位置编码来解决位置信息问题和长距离路径依赖问题,能够更准确地预测软件缺陷,提高软件开发和测试的效率。提高软件开发和测试的效率。提高软件开发和测试的效率。

【技术实现步骤摘要】
一种基于位置敏感层次注意力网络的软件缺陷预测方法


[0001]本专利技术涉及人工智能、源码语义特征抽取领域,具体涉及一种基于位置敏感层次注意力网络的软件缺陷预测方法。

技术介绍

[0002]软件缺陷预测是指利用历史版本的项目数据,在软件缺陷发生之前辨别出新版本项目源码中可能存在缺陷的软件模块,从而提前预防和纠正缺陷以保证软件质量和可靠性。软件缺陷越早被发现,其修复的成本也将越低,例如在软件开发阶段就对其加以处理,可以降低测试阶段发现缺陷所带来的软件成本,通过针对缺陷高风险模块投入更多的测试资源,可以保障软件的质量和测试效率。
[0003]早期软件缺陷预测研究着眼于传统手工特征,但由于编程语言本身具备各种语法结构与语义信息,传统手工度量无法捕获代码中这些复杂信息。随着深度学习的兴起,通过深度学习获取源码的深度语义特征得到广泛应用。在早期,源码被当作一般的文本序列,使用自然语言处理方法为每一个单词进行编码。但由于源代码是具有一定语法规则的特殊文本数据,其中有些语义通过符号进行表示,如赋值符和运算符,直接编码容易产生无用的歧义信息。
[0004]而抽象语法树(Abstract Syntax Tree,AST)作为源代码语法结构的一种表示形式,其节点的类型囊括了符号等内部的语义信息,节点的顺序反映了源码的语法结构。在软件缺陷领域也经常使用AST作为代码的中间表示来抽取语义信息,常见的处理方法主要有简单地遍历树生成一维序列,将AST看作图,输入到树状网络等。无论是当作文本序列,将AST直接平面化为一条节点序列,还是使用树状结构等,这些方法仍是在粗粒度上将AST整体序列化,忽略了项目源码在细粒度上的表达。而细粒度的缺陷预测能够实现对缺陷的进一步定位,有助于开发人员将有限的精力侧重在源码的高风险区域,具备更高的效率。
[0005]除此之外,源代码天然地具有层次结构,出现在不同位置中的相同代码很可能具有不同的语义,与其上下文密切相关。因此,预测代码的缺陷倾向性应该根据它们的位置而不同,而目前大多数基于深度学习的方法尚未充分利用这种信息。

技术实现思路

[0006]为解决现有技术所存在的技术问题,本专利技术提供一种基于位置敏感层次注意力网络的软件缺陷预测方法,采用改进的层次注意力网络作为骨干网络,设计一种基于路径分割和重构的AST表示学习方法,分别从节点和路径两种上下文级别使用注意力机制动态地给不同输入分配不同的权重,在路径层引入了相对位置编码从而区分不同位置路径的贡献,使得模型能够捕获到有缺陷的区域,解决了长距离路径依赖问题,提高了软件缺陷预测的准确性和稳健性。
[0007]本专利技术目的可以通过采取如下技术方案达到:
[0008]基于位置敏感层次注意力网络的软件缺陷预测方法,所述方法包括:
[0009]S1、源代码预处理,采用工具包将源码解析为抽象语法树,解析器按照语法结构生成词元流,再按照先序遍历获取抽象语法树中所有根节点到叶节点的路径;
[0010]S2、构建样本数据集,使用历史版本项目的源码文件预处理后的路径集合作为训练集,使用新版本项目的源码文件预处理后的路径集合作为测试集,每个源码文件均设置一个标签,标签用于指明源码文件是否存在缺陷;
[0011]S3、构建位置敏感层次注意力网络模型,嵌入层将每个节点转换为节点嵌入向量,层次注意力层在层次注意力网络的基础上进行改进,将两层加性注意力机制中的其中一层更改为自注意力机制,并在该自注意力机制中引入相对位置编码,在路径层次上捕捉到不同路径在树结构中的位置信息,得到位置敏感层次注意力网络模型;
[0012]S4、使用训练样本集对位置敏感层次注意力网络模型进行训练和调优,并将位置敏感层次注意力网络模型抽取出的源码语义特征输入到一个逻辑回归分类器以获得收敛;
[0013]S5、将待检测的项目代码输入到训练后的位置敏感层次注意力网络模型中进行缺陷预测,输出待检测的项目代码是否存在缺陷。
[0014]具体地,所述步骤S1具体包括:
[0015]在编码之前使用代码处理工具包将源代码解析为抽象语法树,并根据语法结构生成节点流,通过遍历抽象语法树提取所有根节点到叶节点的路径,将最大路径数和每个路径中的节点数分别限制为L和T;
[0016]L=coe1*max_path_len,
[0017]T=coe2*max_node_len,
[0018]其中,max_path_len为AST中最大树的路径数,max_node_len为AST中最长路径的节点数,coe1和coe2分别为限制这两种长度的可调系数;
[0019]具体地,所述步骤S2具体包括:
[0020]将历史版本项目代码中的数据集作为训练集,用于训练软件预测模型;将新版本项目代码中的数据集作为测试集,用于评估软件预测模型的性能;
[0021]对训练集进行随机过采样操作,增加少数类样本数据。
[0022]具体地,所述步骤S3具体包括:
[0023]将抽象语法树分割成三种不同粒度,三种不同粒度分别为节点粒度、路径粒度和抽象语法树粒度;
[0024]根据节点流构建词汇表,将每个节点映射到一个唯一的索引后,通过一个嵌入层将节点初始化为向量,得到节点粒度向量;
[0025]在节点层级编码采用加性注意力机制得到路径粒度向量,在路径层级编码采用自注意力机制,在自注意机制中引入相对位置嵌入编码得到抽象语法树粒度向量,将抽象语法树粒度向量作为源码语义特征。
[0026]本专利技术与现有技术相比,具有如下优点和有益效果:
[0027]1、本专利技术提供一种基于位置敏感层次注意力网络的软件缺陷预测方法,通过构建位置敏感层次注意力网络模型,层次注意力层在层次注意力网络的基础上进行改进,将两层加性注意力机制中的其中一层更改为自注意力机制,并在该自注意力机制中引入相对位置编码,相对于传统人工选择的特征和卷积神经网络提取的特征,通过利用层次分割和重构来从不同的层级捕捉源码语义信息的局部和全局特征,同时引入相对位置编码来解决位
置信息问题和长距离路径依赖问题,能够更准确地预测软件缺陷,提高软件开发和测试的效率。
[0028]2、本专利技术考虑到表征不同源码的AST缺乏规则性,通过对AST做出若干限制,包括语法树的节点类型、路径长度和路径数,在保留有效信息的基础上节约了资源。
附图说明
[0029]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
[0030]图1是本专利技术实施例中的基于位置敏感层次注意力网络的软件缺陷预测方法的流程图;
[0031]图2是本专利技术实施例中的模型方法的整体网络架构图;
[0032]图3是本专利技术实施例中的节点编码层和路径编码层的详细本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于位置敏感层次注意力网络的软件缺陷预测方法,其特征在于,包括以下步骤:S1、源代码预处理,采用工具包将源码解析为抽象语法树,解析器按照语法结构生成词元流,再按照先序遍历获取抽象语法树中所有根节点到叶节点的路径;S2、构建样本数据集,使用历史版本项目的源码文件预处理后的路径集合作为训练集,使用新版本项目的源码文件预处理后的路径集合作为测试集,每个源码文件均设置一个标签,标签用于指明源码文件是否存在缺陷;S3、构建位置敏感层次注意力网络模型,嵌入层将每个节点转换为节点嵌入向量,层次注意力层在层次注意力网络的基础上进行改进,将两层加性注意力机制中的其中一层更改为自注意力机制,并在该自注意力机制中引入相对位置编码,在路径层次上捕捉到不同路径在树结构中的位置信息,得到位置敏感层次注意力网络模型;S4、使用训练样本集对位置敏感层次注意力网络模型进行训练和调优,并将位置敏感层次注意力网络模型抽取出的源码语义特征输入到一个逻辑回归分类器以获得收敛;S5、将待检测的项目代码输入到训练后的位置敏感层次注意力网络模型中进行缺陷预测,输出待检测的项目代码是否存在缺陷。2.如权利要求1所述的一种基于位置敏感层次注意力网络的软件缺陷预测方法,其特征在于,所述步骤S1具体包括:在编码之前使用代码处理工具包将源代码解析为抽象语法树,并根据语法结构生成节点流,通过遍历抽象语法树提取所有根节点到叶节点的路径,将最大路径数和每个路径中的节点数分别限制为L和T;L=coe1*max_path_len,T=coe2*max_node_len,其中,max_path_len为AST中最大树的路径数,max_node_len为AST中最长路径的节点数,coe1和coe2分别为限制这两种长度的可调系数。3.如权利要求2所述的一种基于位置敏感层次注意力网络的软件缺陷预测方法,其特征在于,所述coe1可调系数和coe2可调系数均设置为0.9。4.如权利要求1所述的一种基于位置敏感层次注意力网络的软件缺陷预测方法,其特征在于,所述步骤S2具体包括:将历史版本项目代码中的数据集作为训练集,用于训练软件预测模型;将新版本项目代码中的数据集作为测试集,用于评估软件预测模型的性能;对训练集进行随机过采样操作,增加少数类样本数据。5.如权利要求1所述的一种基于位置敏感层次注意力网络的软件缺陷预测方法,其特征在于,所述步骤S3具体包括:将抽象语法树分割成三种不同粒度,三种不同粒度分别为节点粒度、路径粒度和抽象语法树粒度;根据节点流构建词汇表,将每个节点映射到一个唯一的索引后,通过一个嵌入层将节点初始化为向量,得到节点粒度向量;在节点层级编码采用加性注意力机制得到路径粒度向量,在路径层级编码采用自注意力机制,在自注意机制中引入相对位置嵌入编码得到抽象语法树粒度向量,将抽象语法树
粒度向量作为源码语义特征。6.根据权利要求5所述的基于位置敏感层次注意力网络的软件缺陷预测方法,其特征在于,在节点层级编码采用加性注意力机制得到路径粒度向量,具体包括:对一组节点粒度向量进行线性变换得到一组上下文向量表示,将这组上下文向量表示相加并通过一个非线性函数tanh进行激活得到非线性表示;将这个非线性函数的输出归一化后作为节点级注意力权重,将节点级注意力权重与关键...

【专利技术属性】
技术研发人员:易昕妍陆璐徐浩冼允廷
申请(专利权)人:华南理工大学
类型:发明
国别省市:

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

1