一种基于图卷积神经网络的软件缺陷预测方法及终端技术

技术编号:30702687 阅读:19 留言:0更新日期:2021-11-06 09:41
本发明专利技术公开了一种基于图卷积神经网络的软件缺陷预测方法及终端,包括:对由代码文件构成的数据集进行统一处理,将其解析成抽象语法树,调整抽象语法树的结构和保留节点的关键信息;将调整后的抽象语法树构造成图结构,构建训练集;训练得到第一预测模型,将需要进行预测的数据输入得到第一缺陷倾向性结果;训练得到第二预测模型,将需要进行预测的数据输入得到第二缺陷倾向性结果;对二者值取平均,作为最终的缺陷预测结果。本发明专利技术能够解析整个代码文件,并转换成图结构,尽可能保留源代码文件所包含的信息,来训练神经网络进行特征提取,然后利用提取到的代码信息,并结合与同缺陷相关的静态代码特征进行缺陷预测。陷相关的静态代码特征进行缺陷预测。陷相关的静态代码特征进行缺陷预测。

【技术实现步骤摘要】
一种基于图卷积神经网络的软件缺陷预测方法及终端


[0001]本专利技术属于软件工程中的软件质量保障领域,具体涉及一种基于图卷积神经网络的软件缺陷预测方法及终端。

技术介绍

[0002]随着互联网的不断发展,软件系统的规模不断扩大,复杂度也不断提高,而软件市场却在不断高速地发展着,开发周期不断缩短,对软件质量安全进行预测和保证的难度日益增加,成本不断扩大。软件缺陷的产生主要是由软件产品的特点和开发过程决定的,需求不清晰、系统结构复杂或开发过程缺乏有效沟通及监督,都有可能导致缺陷的产生,这是不可避免的,并且软件缺陷发现的时间越晚所造成的损失也会越大。因此,在有限的资源(人员、时间、成本等)条件下,尽可能快速全面地识别出软件中存在的缺陷,提高软件产品的质量与可靠性,是软件工程领域一个亟需解决的问题。
[0003]过去几十年,已经提出了多种手工设计的传统度量指标来区分有缺陷和无缺陷文件,但随着不断深入的研究,研究人员发现这些传统度量指标主要关注代码的复杂性,无法区分和利用具有不同语义和结构的程序,即具有不同语义软件模块可能具有相似或相同的传统代码度量指标。为了获取源代码中丰富的语义信息和语法结构,Wang等人首次提出利用深度学习从源代码中提取语义特征进行缺陷预测,目前机器学习技术发展迅速,也逐渐应用到软件开发的过程中,虽然Wang等人提出利用一种强大的表示学习算法,深度置信网络(deep belief network,DBN),来自动学习代码的特征,但他们的方法仅仅是利用部分节点信息作为DBN网络的输入特征,并不能充分地表示整个代码文件的语义和结构信息。此时,若能在上述工作的基础上进行改进,充分利用代码的语义和结构信息,并结合与缺陷相关的传统度量指标,更有利于进行缺陷预测,提高软件开发的效率,提升软件的质量。

技术实现思路

[0004]针对于上述现有技术的不足,本专利技术的目的在于提供一种基于图卷积神经网络的软件缺陷预测方法及终端,以解决现有的深度置信网络方法不能很好捕捉代码语义和结构信息的问题;本专利技术能够解析整个代码文件,并转换成图结构,尽可能保留源代码文件所包含的信息,来训练神经网络进行特征提取,然后利用提取到的代码信息,并结合与同缺陷相关的静态代码特征进行缺陷预测。
[0005]为达到上述目的,本专利技术采用的技术方案如下:
[0006]本专利技术的一种基于图卷积神经网络的软件缺陷预测方法,包括步骤如下:
[0007]1)对由代码文件构成的数据集进行统一处理,将其解析成抽象语法树,过滤其中的冗余节点,然后调整抽象语法树的结构和保留节点的关键信息;
[0008]2)将调整后的抽象语法树构造成图结构,构建训练集;
[0009]3)训练图卷积神经网络,将图结构、节点的关键信息作为输入,图卷积神经网络提取的代码特征信息作为输出;
[0010]4)将步骤3)中图卷积神经网络的输出结果与同缺陷相关的静态代码特征相结合,训练得到第一预测模型,然后将需要进行预测的数据输入训练好的第一预测模型得到第一缺陷倾向性结果;再利用图卷积神经网络的输出结果与同缺陷相关的静态代码特征相结合,训练得到第二预测模型,然后将需要进行预测的数据输入训练好的第二预测模型得到第二缺陷倾向性结果;对第一缺陷倾向性结果和第二缺陷倾向性结果的值取平均,作为最终的缺陷预测结果。
[0011]进一步地,所述步骤1)具体包括:
[0012]11)将代码文件解析成抽象语法树,过滤抽象语法树中的冗余节点,仅保留部分能体现源代码结构和语义信息的节点(例如:方法调用、接口声明、For语句、If语句等),将被删除节点的子节点拼接到其父节点上,构成新的抽象语法树;
[0013]12)对步骤11)构造新的抽象语法树节点所包含的信息(例如注释、局部变量声明、类型、名称、大小等),仅保留部分能体现节点特性的关键信息(例如针对方法调用节点仅保留其方法名,对于For语句节点、If语句节点、Try语句节点等控制语句节点将其记录为其节点类型),供后续转换为图结构。
[0014]进一步地,所述步骤2)具体包括:
[0015]21)对步骤1)得到的抽象语法树,父节点与子节点之间构建一条有向边,并对所有的叶节点从左向右进行连接,将调整后的抽象语法树构造成图结构;
[0016]22)将步骤21)中得到的图结构信息通过稀疏矩阵进行保存;
[0017]23)对所有代码文件解析得到的图节点信息,通过one

hot词嵌入方式将每个节点信息都表示成向量形式;
[0018]24)利用过采样技术处理类不平衡问题,过采样技术通过复制多份少数类样本,以得到均衡的数据集。
[0019]进一步地,所述步骤3)在步骤2)构建训练集的基础上,训练图卷积神经网络,提取代码的特征信息;通过步骤2)得到的图结构稀疏矩阵和节点的关键信息的向量表示,并利用过采样技术得到均衡的数据集,然后在此基础上训练图卷积神经网络的权重和偏差;具体的,图卷积神经网络包括一个输入层、三个卷积层、三个最大池化层和三层全连接层,均使用Relu作为激活函数;其中,图卷积神经网络的实现利用的是PyTorch工具,通过PyTorch快速构建图卷积神经网络,实现对代码进行特征提取。
[0020]进一步地,所述步骤4)具体包括:
[0021]41)将步骤3)中图卷积神经网络的输出结果与同缺陷相关的静态代码特征相结合,训练支持向量机第一预测模型,然后将需要进行预测的数据输入训练好的第一预测模型得到第一缺陷倾向性结果;
[0022]42)利用同缺陷相关的静态代码特征,训练支持向量机第二预测模型,然后将需要进行预测的数据输入训练好的第二预测模型得到第二缺陷倾向性结果;
[0023]43)对第一缺陷倾向性结果和第二缺陷倾向性结果的值取平均,作为最终的缺陷预测结果。
[0024]本专利技术还提供一种基于图卷积神经网络的缺陷预测终端,包括:处理器和存储器,所述存储器用于存储支持缺陷预测终端执行上述预测方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述缺陷预测终端还可以包括通信接口,用于缺陷预测
终端与其他设备或通信网络通信。
[0025]本专利技术还提供了一种计算机可读存储介质,用于存储缺陷预测终端所用的计算机软件指令,其包括用于执行上述基于图卷积神经网络的软件缺陷预测方法为缺陷预测终端所涉及的程序。
[0026]本专利技术的有益效果:
[0027]本专利技术利用了抽象语法树,解析源代码文件,以树状的形式表现源代码的语法结构,利用图卷积神经网络提取源代码的语义和结构信息,并结合传统度量元训练缺陷预测分类模型,提高软件开发的效率;具有以下优点:
[0028](1)本专利技术利用抽象语法树和图结构克服了传统缺陷预测模型仅考虑代码的复杂性,为考虑代码本身所包含的丰富信息,包括:代码上下文信息、程序语义信息、结构信息,当不同语义软件模块具有相似或相同的传统代码度量指标时,缺陷预测模型也能够加以区分。...

【技术保护点】

【技术特征摘要】
1.一种基于图卷积神经网络的软件缺陷预测方法,其特征在于,包括步骤如下:1)对由代码文件构成的数据集进行统一处理,将其解析成抽象语法树,过滤其中的冗余节点,然后调整抽象语法树的结构和保留节点的关键信息;2)将调整后的抽象语法树构造成图结构,构建训练集;3)训练图卷积神经网络,将图结构、节点的关键信息作为输入,图卷积神经网络提取的代码特征信息作为输出;4)将步骤3)中图卷积神经网络的输出结果与同缺陷相关的静态代码特征相结合,训练得到第一预测模型,然后将需要进行预测的数据输入训练好的第一预测模型得到第一缺陷倾向性结果;再利用图卷积神经网络的输出结果与同缺陷相关的静态代码特征相结合,训练得到第二预测模型,然后将需要进行预测的数据输入训练好的第二预测模型得到第二缺陷倾向性结果;对第一缺陷倾向性结果和第二缺陷倾向性结果的值取平均,作为最终的缺陷预测结果。2.根据权利要求1所述的基于图卷积神经网络的软件缺陷预测方法,其特征在于,所述步骤1)具体包括:11)将代码文件解析成抽象语法树,过滤抽象语法树中的冗余节点,仅保留部分能体现源代码结构和语义信息的节点,将被删除节点的子节点拼接到其父节点上,构成新的抽象语法树;12)对步骤11)构造新的抽象语法树节点所包含的信息,仅保留部分能体现节点特性的关键信息,供后续转换为图结构。3.根据权利要求1所述的基于图卷积神经网络的软件缺陷预测方法,其特征在于,所述步骤2)具体包括:21)对步骤1)得到的抽象语法树,父节点与子节点之间构建一条有向边,并对所有的叶节点从左向右进行连接,将调整后的抽象语法树构造成图结构;22)将步骤21)中得到的图结构信息通过稀疏矩阵进行保存;23)对所有代码文件解析得到的图节点信息,通过one

hot词嵌入方式将每个节点信息都表示成向...

【专利技术属性】
技术研发人员:陶传奇唐利金黄志球
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:

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

1