一种基于长短期记忆神经网络的跨项目软件缺陷预测方法技术

技术编号:24330949 阅读:87 留言:0更新日期:2020-05-29 19:35
本发明专利技术公开了一种基于长短期记忆神经网络的跨项目软件缺陷预测方法,包括以下步骤:分析项目的源代码文件,并从源代码中解析出对应的抽象语法树;对所提取的所有抽象语法树的节点转换为Token;将Token映射至词向量空间,使之可以输入至神经网络当中;遍历以词向量形式表示的抽象语法树,得到以词向量表示的抽象语法树节点序列;构建长短期记忆神经网络,并将词向量表示的抽象语法树节点序列按序输入至长短期记忆神经网络当中,提取抽象语法树的语义特征;将语义特征输入至逻辑回归分类器中,分析待检测的文件存在缺陷的概率。本发明专利技术结合深度学习自动化特征提取技术,解决传统软件缺陷预测方法中无法有效利用编程语言的语法语义信息的问题。

【技术实现步骤摘要】
一种基于长短期记忆神经网络的跨项目软件缺陷预测方法
本专利技术涉及软件工程领域,特别涉及一种基于长短期记忆神经网络的跨项目软件缺陷预测方法。
技术介绍
随着移动互联网技术迅猛发展,智能手机功能不断创新,移动应用呈现爆炸式增长,其功能也越来越丰富,从社交娱乐到生活理财,各式各样的应用程序都涵盖了我们生活的每一个方面,而软件的体积以及复杂程度也在与日俱增。软件复杂度的增加不可避免地导致了软件缺陷的出现,而软件缺陷的出现严重影响了软件的质量及其可靠性:轻则出现错误或异常提示,重则导致闪退崩溃甚至造成数据丢失,极大地降低了用户体验,缩短了软件的生命期。为保障软件质量,软件测试是一种常规手段,但其成本高,过程繁琐复杂的特点也使得软件测试无法彻底涵盖软件开发的每一个模块。特别是在一些开发计划比较紧迫的项目中,进行全面的软件测试是不现实的,软件缺陷预测技术便应运而生。传统的软件缺陷预测技术主要基于机器学习算法,通过建立机器学习模型来学习项目源文件的静态手工特征与缺陷之间的关系,具体包括:1)从项目源文件中提取静态手工特征;2)利用提取的手工特征建立对应的机器学习模型;3)使用带缺陷标注的数据集训练模型;4)从待检测的项目源文件中提取同类静态手工特征并输入至训练好的模型,来预测每一个源文件的缺陷概率。然而传统的基于机器学习的软件缺陷预测方法不能利用代码本身的语法和语义信息,导致预测结果非常不理想。长短期记忆神经网络,作为一种深度学习算法,能够从输入的序列中自动学习任意两个输入时刻之间的关系,使之在自然语言处理领域方面被广泛地使用。与自然语言类似,编程语言也蕴含了丰富的的语法语义信息,如果能够从编程语言中提取这些语法和语义信息用于软件缺陷预测,将能够弥补传统基于静态手工特征缺陷预测的不足。
技术实现思路
本专利技术的主要目的在于克服现有技术的缺点与不足,提供一种基于长短期记忆神经网络的跨项目软件缺陷预测方法,该方法结合深度学习自动化特征提取技术,解决传统软件缺陷预测方法中无法有效利用编程语言的语法语义信息的问题。本专利技术的目的通过以下的技术方案实现:一种基于长短期记忆神经网络的跨项目软件缺陷预测方法,包括以下步骤:1)分析项目的源代码文件,并从源代码中解析出对应的抽象语法树;2)对步骤1)所提取的所有抽象语法树的节点,按节点所包含信息的粗细粒度的不同,将所有节点转换为Token;3)使用词嵌入技术,将步骤2)转换后的所有抽象语法树的节点的Token映射至词向量空间,使之可以输入至神经网络当中;4)遍历步骤3)所得到的以词向量形式表示的抽象语法树,得到以词向量表示的抽象语法树节点序列;5)构建长短期记忆神经网络,并将步骤4)所得到词向量表示的抽象语法树节点序列按序输入至长短期记忆神经网络当中,提取抽象语法树的语义特征;6)将步骤5)提取的语义特征输入至逻辑回归分类器中,分析待检测的文件存在缺陷的概率。步骤2)中,对步骤1)所提取的所有抽象语法树节点,按节所包含信息的粗细粒度的不同,将所有节点转换为Token。由于不同类型的抽象语法树节点所包含的信息不同,并且在粒度上存在差异。某些信息对于软件缺陷预测至关重要,因此对于不同的抽象语法树,本专利技术选取不同的粒度的信息来进行标记,将其转换为Token,然后采用词嵌入技术将Token映射至词向量空间中,并对抽象语法树进行遍历,得到序列形式输入至长短期记忆神经网络中进行抽象语义特征提取。所述节点的类型包括:方法调用以及实例创建类节点、声明相关类节点、跳转控制类节点。步骤5)中,所述长短期记忆神经网络是双向的,能够从相反的两个方向来处理步骤4)得到的序列。能够更好地让神经网络学习到抽象语法树节点之间的上下文关系,使提取的抽象语义特征能够更好地保留抽象语法树所包含的语法语义信息,用于后续步骤的分类器进行软件缺陷概率的判断。步骤5)中,所述长短期记忆神经网络,其神经元包含了3种门单元:输入门、遗忘门、输出门;其中,输入门用来更新神经元的状态,先将先前隐藏状态的信息和当前输入的信息输入到Sigmoid函数,在0和1之间调整输出值来决定更新哪些信息,0表示不重要,1表示重要;输出门能决定下个隐藏状态的值,隐藏状态中包含了先前输入的相关信息,而遗忘门则能决定应丢弃或保留哪些信息。步骤5)中,所述长短期记忆神经网络的实现采用的是Pytorch工具。通过Pytorch可以非常便捷地构建双向长短期记忆神经网络,并对抽象语法树的进行语义特征提取。步骤6)中,所述逻辑回归分类器是通过采用开源代码库sklearn来实现。本专利技术与现有技术相比,具有如下优点和有益效果:本专利技术适用于跨项目的软件缺陷预测,使用成熟稳定且带有缺陷标注的项目源代码,作为训练数据集来训练缺陷预测模型。将待检测项目的源代码输入至训练好缺陷预测模型,分析出每一个文件的缺陷概率并呈现给软件开发人员。与传统的静态代码检测工具比较,本方法能够充分利用代码中的抽象语义特征用于缺陷预测,可以提高缺陷检测的成功率,以及帮助软件开发人员快速定位和排查软件潜在的缺陷。附图说明图1是本专利技术所述一种基于长短期记忆神经网络的跨项目软件缺陷预测方法的流程图。图2是本专利技术所述双向长短期记忆神经网络提取语义特征的流程图。图3是本专利技术所述一种基于长短期记忆神经网络的跨项目软件缺陷预测方法的工作示意图。具体实施方式下面结合实施例及附图对本专利技术作进一步详细的描述,但本专利技术的实施方式不限于此。如图1-3,一种基于长短期记忆神经网络的跨项目软件缺陷预测方法,包含以下步骤:步骤1)分析项目的源代码文件,并从源代码中解析出对应的抽象语法树。具体实施方式如下:本专利技术使用一个名为JavaLang(https://github.com/c2nes/javalang)的开源代码库来分析源代码,并从源代码中解析出其对应的语法树。由于语法中节点类型较多,并且不是所有节点都有利于后续的软件缺陷预测,因此本专利技术选取了一部分类型的节点,并将其余的节点舍弃。如表1所示,本专利技术主要选取了三种类型的节点用于缺陷预测:1)方法调用以及实例创建类节点;2)声明相关类节点;3)跳转控制类节点。表1:所保留的节点类别以及其类型步骤2)对步骤1)所提取的所有抽象语法树节点,按节所包含信息的粗细粒度的不同,将所有节点转换为Token。由于不同类型的抽象语法树节点所包含的信息不同,并且在粒度上存在差异。某些信息对于软件缺陷预测至关重要,因此对于不同的抽象语法树,本专利技术选取不同的粒度的信息来进行标记,将其转换为Token,具体转换的方式如表2所示:对于字段声明节点、方法声明节点、类声明节点、变量声明节点、类声明节点和构造器声明节点这6种节点,本专利技术采用其访问修饰符和节点名称来标记这些节点;对于If节点、While节点、For节点和增强的For语句节点这4种节点,本专利技术使用循环终止条件来标记;对于Synchroniz本文档来自技高网
...

【技术保护点】
1.一种基于长短期记忆神经网络的跨项目软件缺陷预测方法,其特征在于,包括以下步骤:/n1)分析项目的源代码文件,并从源代码中解析出对应的抽象语法树;/n2)对步骤1)所提取的所有抽象语法树的节点,按节点所包含信息的粗细粒度的不同,将所有节点转换为Token;/n3)使用词嵌入技术,将步骤2)转换后的所有抽象语法树的节点的Token映射至词向量空间,使之可以输入至神经网络当中;/n4)遍历步骤3)所得到的以词向量形式表示的抽象语法树,得到以词向量表示的抽象语法树节点序列;/n5)构建长短期记忆神经网络,并将步骤4)所得到词向量表示的抽象语法树节点序列按序输入至长短期记忆神经网络当中,提取抽象语法树的语义特征;/n6)将步骤5)提取的语义特征输入至逻辑回归分类器中,分析待检测的文件存在缺陷的概率。/n

【技术特征摘要】
1.一种基于长短期记忆神经网络的跨项目软件缺陷预测方法,其特征在于,包括以下步骤:
1)分析项目的源代码文件,并从源代码中解析出对应的抽象语法树;
2)对步骤1)所提取的所有抽象语法树的节点,按节点所包含信息的粗细粒度的不同,将所有节点转换为Token;
3)使用词嵌入技术,将步骤2)转换后的所有抽象语法树的节点的Token映射至词向量空间,使之可以输入至神经网络当中;
4)遍历步骤3)所得到的以词向量形式表示的抽象语法树,得到以词向量表示的抽象语法树节点序列;
5)构建长短期记忆神经网络,并将步骤4)所得到词向量表示的抽象语法树节点序列按序输入至长短期记忆神经网络当中,提取抽象语法树的语义特征;
6)将步骤5)提取的语义特征输入至逻辑回归分类器中,分析待检测的文件存在缺陷的概率。


2.根据权利要求1所述基于长短期记忆神经网络的跨项目软件缺陷预测方法,其特征在于,所述节点的类型包括:方法调用以及实例创建类节点、声明相关类节点、跳转控制类节点。


3.根据权利要求1所述基...

【专利技术属性】
技术研发人员:邓杰瀚陆璐
申请(专利权)人:华南理工大学
类型:发明
国别省市:广东;44

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

1