一种基于源代码文件依赖关系的软件缺陷定位系统技术方案

技术编号:27204412 阅读:32 留言:0更新日期:2021-01-31 12:22
本发明专利技术通过人工智能领域的方法,实现了一种基于源代码文件依赖关系的软件缺陷定位系统,系统分为输入、运算、输出三个模块,输入模块用于导入缺陷报告和源码文件,输出模块用于将源码文件按照相关性得分排序后对外输出,运算模块采用DependLoc框架,由三个子模块组成,CNN4TFIDF模型子模块根据缺陷报告和源码文件的TF

【技术实现步骤摘要】
一种基于源代码文件依赖关系的软件缺陷定位系统


[0001]本专利技术涉及人工智能领域,尤其涉及一种基于源代码文件依赖关系的软件缺陷定位系统。

技术介绍

[0002]开源软件通常使用缺陷追踪系统(如Bugzilla和JIRA)对缺陷进行记录,每天都有大量的缺陷报告提交。缺陷报告中包含对缺陷的描述,失效时的相关程序状态、日志等。因此,研究人员试图根据提交的缺陷报告,自动定位到出错的程序实体。基于缺陷报告的缺陷定位可被看作是一个查询问题,即对于给定的缺陷报告(查询),需要从应用的所有源代码文件(文档)中找到可能出错的文件,并将可疑的源码文件按照出错的可能性进行排名。近些年来,围绕缺陷报告进行定位的研究工作主要可划分为两类:采用信息检索技术和采用深度学习技术。
[0003]基于信息检索的缺陷定位的相关研究工作可从信息检索的三个要素进行分类:检索模型、文档(表示)、以及查询(表示)。多数研究工作关注于如何利用或优化信息检索模型来提高缺陷定位的准确性。其中,对于缺陷定位,向量空间模型(VSM)已被证明效果优于其他常用信息检索模型。BugLocator是利用VSM 的代表性研究工作。该工作利用TF-IDF分别将缺陷报告和源代码文件向量化,然后通过计算余弦相似度来衡量它们之间的相似性。BugLocator在VSM的基础上还考虑了源代码文件大小(即文件越大,出错的可能性越高),和已被修复缺陷的修复信息(即如果两个缺陷报告相似度较高,那它们可能需要修复相似的文件)。
[0004]基于深度学习的缺陷定位为基于信息检索的定位方法,主要依赖于缺陷报告和源代码文件的文本相似度。但以自然语言为主的缺陷报告和以编程语言为主的源代码文件之间存在词法失配问题。当缺陷报告和源码文件的重叠信息较少时,定位效果并不好。因此,深度学习技术被引入用来提高定位的准确性。采用深度学习技术的缺陷定位中,一些研究工作不仅利用词嵌入(word embedding)技术 (如Word2Vec)来捕获缺陷报告和源代码文件之间的语义相似度,还利用深度神经网络(DNN)对多种特征(例如,基于VSM的文本相似度,基于DNN的相似度,缺陷修复历史(如文件被修复的频率和时近性))进行非线性组合来计算源代码文件的可疑度,如HyLoc以及DNNLoc。还有一些研究工作利用不同的网络模型来处理缺陷报告和源代码文件,以便更好地提取源代码的结构信息,如 NP-CNN。或是利用不同的向量化方法(如词嵌入、句子嵌入)来表示缺陷报告和源代码文件,如DeepLoc。
[0005]其中,Yoon Kim提出的用于文本分类的卷积神经网络(CNN)模型经常被用于处理词嵌入之后的本文向量。
[0006]以上现有技术存在如下问题:
[0007]基于信息检索的缺陷定位,不能解决缺陷报告和源代码文件之间的词法失配问题。基于深度学习技术的缺陷定位中,虽然利用不同的嵌入技术(如词嵌入、句子嵌入、文档嵌入等)和不同的网络模型(如卷积神经网络、循环神经网络) 来捕获缺陷报告和源代码中
的语义信息,但并未考虑源代码之间的关联关系。而通研究发现,对于一些缺陷,虽然出错的源代码文件与缺陷报告并不高度相似,但该文件与那些和缺陷报告高度相似的源代码文件之间存在依赖关系。因此,依赖关系可以被用于提高缺陷定位的准确性。
[0008]此外,现有工作中,虽然TF-IDF向量经常被用于缺陷报告和源代码文件的表示,但仅通过简单的余弦相似度来衡量它们之间的文本相似度。事实上,缺陷报告和源代码文件的TF-IDF向量还可用捕获除文本相似度之外的特征,有助于提高定位的准确性。
[0009]本专利技术针对基于缺陷报告的缺陷自动定位问题,旨在提出一种基于源代码文件依赖关系的缺陷定位方法,解决现有方法定位不够准确,且未考虑文件依赖关系的问题。
[0010]具体来说,主要解决的问题包括:(1)直接利用源代码间的依赖关系进行定位会引入较多不相关文件,因此需要寻找一种依赖关系的量化方法,该方法需要满足两个条件:能有效区分错误和非错误源码文件;能覆盖当前应用中的所有源码文件。(2)现有缺陷报告和源代码文件的TF-IDF向量表示未被充分利用,现有研究工作仅利用这些向量去获得文本相似度,本专利技术试图利用这些向量去捕获除文本相似度以外的特征,从而提高定位的准确度。

技术实现思路

[0011]为此,本专利技术提出了一种基于源代码文件依赖关系的软件缺陷定位系统,系统分为输入、运算、输出三个模块,其中所述输入模块用于导入缺陷报告和源码文件,所述运算模块采用DependLoc框架,由三个子模块CNN4TFIDF模型子模块、片段RefHI编码器子模块和CNN4RefHI子模块组成,具体地:
[0012]CNN4TFIDF模型子模块根据缺陷报告和源码文件的TF-IDF向量,以卷积神经网络的方法捕获文本相似度、源码文件长度以及相似缺陷报告等特征;
[0013]片段RefHI编码器子模块首先在将所述缺陷报告和源码文件拆分成等大小的片段,片段词汇通过词嵌入并输入卷积神经网络一,若词嵌入的向量维度为k,一条语句包含n个词汇,则将n
×
k维的向量输入所述卷积神经网络一,令所述卷积神经网络一的卷积核高度为k
h
,k
h
为正整数,则卷积核大小为k
h
×
k,可同时设置多个不同规格的卷积核,即卷积核的高度k
h
可同时设置为多个值,常用的值包括3、4、5,然后对不同卷积核大小得到的结果进行最大池化操作,再将最大池化后的结果进行拼接,最后,所述卷积神经网络一通过两个全连接层输出一个n
HI
维向量,同时构建文件依赖图,进而结合所述基于文件依赖图,采用一种基于文件依赖图的定制化蚁群算法来模拟可能的文件引用路径,得到反应每个文件被引用的次数的引用热度值,并将所述引用热度值划定引用热度区间,利用引用热度区间向量的构建方法得到片段RefHI向量,将缺陷报告和源码文件编码成具有源码依赖关系特征的向量;
[0014]CNN4RefHI子模块基于缺陷报告和源码文件的RefHI向量它们之间的相关性得分;
[0015]所述输出模块用于将源码文件按照相关性得分排序后对外输出。
[0016]所述CNN4TFIDF模型子模块针对输入的缺陷报告和源码文件,根据源代码文件的词汇空间,所述词汇空间大小为N,N为正整数,生成两个N维的TF-IDF 向量,将缺陷报告和源码文件的TF-IDF向量合并为2
×
N维张量作为卷积神经网络模型的输入,并设定卷积核的大小为2
×
k
w
,k
w
为所述卷积核宽度,所述卷积核个数为k
n
,进行卷积运算后得到(N-k
w
+1)维的向量,设定池化窗口大小为 p,完成最大池化操作后,得到用于与所述CNN4RefHI子模块
的输出拼接并融合的,尺寸为k
n
×
((n-k
w<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于源代码文件依赖关系的软件缺陷定位系统,其特征在于:系统分为输入、运算、输出三个模块,其中所述输入模块用于导入缺陷报告和源码文件,所述运算模块采用DependLoc框架,由三个子模块CNN4TFIDF模型子模块、片段RefHI编码器子模块和CNN4RefHI子模块组成,具体地:CNN4TFIDF模型子模块根据缺陷报告和源码文件的TF-IDF向量,以卷积神经网络的方法捕获文本相似度、源码文件长度以及相似缺陷报告等特征;片段RefHI编码器子模块首先在将所述缺陷报告和源码文件拆分成等大小的片段,片段词汇通过词嵌入并输入卷积神经网络一,若词嵌入的向量维度为k,一条语句包含n个词汇,则将n
×
k维的向量输入所述卷积神经网络一,令所述卷积神经网络一的卷积核高度为k
h
,k
h
为正整数,则卷积核大小为k
h
×
k,可同时设置多个不同规格的卷积核,即卷积核的高度k
h
可同时设置为多个值,常用的值包括3、4、5,然后对不同卷积核大小得到的结果进行最大池化操作,再将最大池化后的结果进行拼接,最后,所述卷积神经网络一通过两个全连接层输出一个n
HI
维向量,同时构建文件依赖图,进而结合所述基于文件依赖图,采用一种基于文件依赖图的定制化蚁群算法来模拟可能的文件引用路径,得到反应每个文件被引用的次数的引用热度值,并将所述引用热度值划定引用热度区间,利用引用热度区间向量的构建方法得到片段RefHI向量,将缺陷报告和源码文件编码成具有源码依赖关系特征的向量;CNN4RefHI子模块基于缺陷报告和源码文件的RefHI向量它们之间的相关性得分;所述输出模块用于将源码文件按照相关性得分排序后对外输出。2.如权利要求1所述的一种基于源代码文件依赖关系的软件缺陷定位系统,其特征在于:所述CNN4TFIDF模型子模块针对输入的缺陷报告和源码文件,根据源代码文件的词汇空间,所述词汇空间大小为N,N为正整数,生成两个N维的TF-IDF向量,将缺陷报告和源码文件的TF-IDF向量合并为2
×
N维张量作为卷积神经网络模型的输入,并设定卷积核的大小为2
×
k
w
,k
w
为所述卷积核宽度,所述卷积核个数为k
n
,进行卷积运算后得到(N-k
w
+1)维的向量,设定池化窗口大小为p,完成最大池化操作后,得到用于与所述CNN4RefHI子模块的输出拼接并融合的,尺寸为k
n
×
((N-k
w
+1)/p)的输出向量,k
w
、k
n
、p均为正整数。3.如权利要求2所述的一种基于源代码文件依赖关系的软件缺陷定位系统,其特征在于:所述片段RefHI编码器子模块采用的所述一种基于文件依赖图的定制化蚁群算法具体实现方式为:首先,定义蚁群算法中每只蚂蚁的能量,并设定路径集合初始化为空,所述文件依赖图中所有节点作为起始节点集合,从所述起始节点集合中随机选择一个节点作为起始,若当前节点的出度为0,则重新从所述起始节点集合中随机选择一个节点作为起始;否则,蚂蚁从当前节点的出节点中随机选择一个节点作为下一步,如果所述下一步未被访问,即不在所述路径集合中,则所述下一步加入所述路径集合;如果所述下一步已被访问,即在所述路径集合中,且所述下一步的出节点中仍有节点未被访问,则所述下一步加入所述路径集合;如果所述下一步已被访问,且所述下一步的所有出节点均被访问过,则蚂蚁停止;同时设置检查下一步的出节点是否均被访问过的机制来避免环形依赖导致的无限循环,收集所述路径集合后,每个文件被引用的次数...

【专利技术属性】
技术研发人员:孙海龙刘旭东袁薇齐斌航
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

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

1