CN112286807A - 一种基于源代码文件依赖关系的软件缺陷定位*** - Google Patents

一种基于源代码文件依赖关系的软件缺陷定位*** Download PDF

Info

Publication number
CN112286807A
CN112286807A CN202011171646.8A CN202011171646A CN112286807A CN 112286807 A CN112286807 A CN 112286807A CN 202011171646 A CN202011171646 A CN 202011171646A CN 112286807 A CN112286807 A CN 112286807A
Authority
CN
China
Prior art keywords
source code
vector
code file
segment
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011171646.8A
Other languages
English (en)
Other versions
CN112286807B (zh
Inventor
孙海龙
刘旭东
袁薇
齐斌航
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN202011171646.8A priority Critical patent/CN112286807B/zh
Publication of CN112286807A publication Critical patent/CN112286807A/zh
Application granted granted Critical
Publication of CN112286807B publication Critical patent/CN112286807B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明通过人工智能领域的方法,实现了一种基于源代码文件依赖关系的软件缺陷定位***,***分为输入、运算、输出三个模块,输入模块用于导入缺陷报告和源码文件,输出模块用于将源码文件按照相关性得分排序后对外输出,运算模块采用DependLoc框架,由三个子模块组成,CNN4TFIDF模型子模块根据缺陷报告和源码文件的TF‑IDF向量,捕获文本特征;片段RefHI编码器子模块将缺陷报告和源码文件编码成具有源码依赖关系特征的向量;CNN4RefHI子模块基于缺陷报告和源码文件的RefHI向量它们之间的相关性得分;从而实现了有效区分错误和非错误源码文件;覆盖当前应用中的所有源码文件;充分利用缺陷报告和源代码文件的TF‑IDF向量表示中的信息的技术效果。

Description

一种基于源代码文件依赖关系的软件缺陷定位***
技术领域
本发明涉及人工智能领域,尤其涉及一种基于源代码文件依赖关系的软件缺陷定位***。
背景技术
开源软件通常使用缺陷追踪***(如Bugzilla和JIRA)对缺陷进行记录,每天都有大量的缺陷报告提交。缺陷报告中包含对缺陷的描述,失效时的相关程序状态、日志等。因此,研究人员试图根据提交的缺陷报告,自动定位到出错的程序实体。基于缺陷报告的缺陷定位可被看作是一个查询问题,即对于给定的缺陷报告(查询),需要从应用的所有源代码文件(文档)中找到可能出错的文件,并将可疑的源码文件按照出错的可能性进行排名。近些年来,围绕缺陷报告进行定位的研究工作主要可划分为两类:采用信息检索技术和采用深度学习技术。
基于信息检索的缺陷定位的相关研究工作可从信息检索的三个要素进行分类:检索模型、文档(表示)、以及查询(表示)。多数研究工作关注于如何利用或优化信息检索模型来提高缺陷定位的准确性。其中,对于缺陷定位,向量空间模型(VSM)已被证明效果优于其他常用信息检索模型。BugLocator是利用VSM 的代表性研究工作。该工作利用TF-IDF分别将缺陷报告和源代码文件向量化,然后通过计算余弦相似度来衡量它们之间的相似性。BugLocator在VSM的基础上还考虑了源代码文件大小(即文件越大,出错的可能性越高),和已被修复缺陷的修复信息(即如果两个缺陷报告相似度较高,那它们可能需要修复相似的文件)。
基于深度学习的缺陷定位为基于信息检索的定位方法,主要依赖于缺陷报告和源代码文件的文本相似度。但以自然语言为主的缺陷报告和以编程语言为主的源代码文件之间存在词法失配问题。当缺陷报告和源码文件的重叠信息较少时,定位效果并不好。因此,深度学习技术被引入用来提高定位的准确性。采用深度学习技术的缺陷定位中,一些研究工作不仅利用词嵌入(word embedding)技术 (如Word2Vec)来捕获缺陷报告和源代码文件之间的语义相似度,还利用深度神经网络(DNN)对多种特征(例如,基于VSM的文本相似度,基于DNN的相似度,缺陷修复历史(如文件被修复的频率和时近性))进行非线性组合来计算源代码文件的可疑度,如HyLoc以及DNNLoc。还有一些研究工作利用不同的网络模型来处理缺陷报告和源代码文件,以便更好地提取源代码的结构信息,如 NP-CNN。或是利用不同的向量化方法(如词嵌入、句子嵌入)来表示缺陷报告和源代码文件,如DeepLoc。
其中,Yoon Kim提出的用于文本分类的卷积神经网络(CNN)模型经常被用于处理词嵌入之后的本文向量。
以上现有技术存在如下问题:
基于信息检索的缺陷定位,不能解决缺陷报告和源代码文件之间的词法失配问题。基于深度学习技术的缺陷定位中,虽然利用不同的嵌入技术(如词嵌入、句子嵌入、文档嵌入等)和不同的网络模型(如卷积神经网络、循环神经网络) 来捕获缺陷报告和源代码中的语义信息,但并未考虑源代码之间的关联关系。而通研究发现,对于一些缺陷,虽然出错的源代码文件与缺陷报告并不高度相似,但该文件与那些和缺陷报告高度相似的源代码文件之间存在依赖关系。因此,依赖关系可以被用于提高缺陷定位的准确性。
此外,现有工作中,虽然TF-IDF向量经常被用于缺陷报告和源代码文件的表示,但仅通过简单的余弦相似度来衡量它们之间的文本相似度。事实上,缺陷报告和源代码文件的TF-IDF向量还可用捕获除文本相似度之外的特征,有助于提高定位的准确性。
本发明针对基于缺陷报告的缺陷自动定位问题,旨在提出一种基于源代码文件依赖关系的缺陷定位方法,解决现有方法定位不够准确,且未考虑文件依赖关系的问题。
具体来说,主要解决的问题包括:(1)直接利用源代码间的依赖关系进行定位会引入较多不相关文件,因此需要寻找一种依赖关系的量化方法,该方法需要满足两个条件:能有效区分错误和非错误源码文件;能覆盖当前应用中的所有源码文件。(2)现有缺陷报告和源代码文件的TF-IDF向量表示未被充分利用,现有研究工作仅利用这些向量去获得文本相似度,本发明试图利用这些向量去捕获除文本相似度以外的特征,从而提高定位的准确度。
发明内容
为此,本发明提出了一种基于源代码文件依赖关系的软件缺陷定位***,***分为输入、运算、输出三个模块,其中所述输入模块用于导入缺陷报告和源码文件,所述运算模块采用DependLoc框架,由三个子模块CNN4TFIDF模型子模块、片段RefHI编码器子模块和CNN4RefHI子模块组成,具体地:
CNN4TFIDF模型子模块根据缺陷报告和源码文件的TF-IDF向量,以卷积神经网络的方法捕获文本相似度、源码文件长度以及相似缺陷报告等特征;
片段RefHI编码器子模块首先在将所述缺陷报告和源码文件拆分成等大小的片段,片段词汇通过词嵌入并输入卷积神经网络一,若词嵌入的向量维度为k,一条语句包含n个词汇,则将n×k维的向量输入所述卷积神经网络一,令所述卷积神经网络一的卷积核高度为kh,kh为正整数,则卷积核大小为kh×k,可同时设置多个不同规格的卷积核,即卷积核的高度kh可同时设置为多个值,常用的值包括3、4、5,然后对不同卷积核大小得到的结果进行最大池化操作,再将最大池化后的结果进行拼接,最后,所述卷积神经网络一通过两个全连接层输出一个nHI维向量,同时构建文件依赖图,进而结合所述基于文件依赖图,采用一种基于文件依赖图的定制化蚁群算法来模拟可能的文件引用路径,得到反应每个文件被引用的次数的引用热度值,并将所述引用热度值划定引用热度区间,利用引用热度区间向量的构建方法得到片段RefHI向量,将缺陷报告和源码文件编码成具有源码依赖关系特征的向量;
CNN4RefHI子模块基于缺陷报告和源码文件的RefHI向量它们之间的相关性得分;
所述输出模块用于将源码文件按照相关性得分排序后对外输出。
所述CNN4TFIDF模型子模块针对输入的缺陷报告和源码文件,根据源代码文件的词汇空间,所述词汇空间大小为N,N为正整数,生成两个N维的TF-IDF 向量,将缺陷报告和源码文件的TF-IDF向量合并为2×N维张量作为卷积神经网络模型的输入,并设定卷积核的大小为2×kw,kw为所述卷积核宽度,所述卷积核个数为kn,进行卷积运算后得到(N-kw+1)维的向量,设定池化窗口大小为 p,完成最大池化操作后,得到用于与所述CNN4RefHI子模块的输出拼接并融合的,尺寸为kn×((n-kw+1)/p)的输出向量,kw、kn、p均为正整数。
所述片段RefHI编码器子模块采用的所述一种基于文件依赖图的定制化蚁群算法具体实现方式为:首先,定义蚁群算法中每只蚂蚁的能量,并设定路径集合初始化为空,所述文件依赖图中所有节点作为起始节点集合,从所述起始节点集合中随机选择一个节点作为起始,若当前节点的出度为0,则重新从所述起始节点集合中随机选择一个节点作为起始;否则,蚂蚁从当前节点的出节点中随机选择一个节点作为下一步,如果所述下一步未被访问,即不在所述路径集合中,则所述下一步加入所述路径集合;如果所述下一步已被访问,即在所述路径集合中,且所述下一步的出节点中仍有节点未被访问,则所述下一步加入所述路径集合;如果所述下一步已被访问,且所述下一步的所有出节点均被访问过,则蚂蚁停止;同时设置检查下一步的出节点是否均被访问过的机制来避免环形依赖导致的无限循环,收集所述路径集合后,每个文件被引用的次数即为蚂蚁访问过的次数,通过所述蚂蚁访问过的次数定义文件的依赖特征,即为引用热度值。
所述每只蚂蚁的能量的定义方法为:对于当前应用中源码文件的数目为nsrc,设置蚂蚁个数为100*nsrc,且每只蚂蚁初始能量为
Figure BDA0002747478700000041
所述引用热度区间向量的构建方法为:将所有文件的引用热度值取对数后的值域等分为nHI个区间定义为引用热度区间,且
Figure BDA0002747478700000042
每个源码文件所属的所述引用热度区间为该文件的引用热度值取对数后落入的区间,
根据所有源码中的词汇,定义N为所有源码的词汇空间大小,tij表示源码文件s中,s∈[1,nsrc],第i个词汇在第j维的值,Is指示源码文件s是否属于第j 个引用热度区间,tij正规化为t′ij,则第i个词汇的引用热度值词汇向量被表示为ti,根据下列关系为每一个词汇生成一个nHI维的向量:
Figure BDA0002747478700000043
Figure BDA0002747478700000044
Figure BDA0002747478700000045
则每个词汇从所属的源码文件中继承了引用热度特征,进一步,根据下列关系:
Figure BDA0002747478700000051
Figure BDA0002747478700000052
分别计算出每个缺陷报告片段和源码文件片段的引用热度值词汇向量,fr(i) 和fs(i)分别代表缺陷报告r和源码文件s中词汇i的个数,
Figure BDA0002747478700000053
表示在所有源码文件中词汇i的IDF值,通过上述方法为每个片段计算出一个nHI维的引用热度值向量,将所述卷积神经网络一输出的向量和每个片段计算出的引用热度值向量两个向量组合成一个2×nHI维的向量输入卷积神经网络二,采用2×1大小的卷积核,输出一个nHI维的向量,表示当前片段属于nHI个区间的不同概率,则该片段落入最大概率值对应的区间,每个缺陷报告片段或源码文件片段的引用热度值词汇向量为片段内词汇的加权引用热度值词汇向量,片段中的相同词汇不进行重复加权计算,对词汇i的权重wi通过TF-IDF计算得到,每个片段的目标引用热度值即为片段所属文档的引用热度值。
所述CNN4RefHI子模块基于片段RefHI编码器得到的片段引用热度值向量,并根据下列方法计算缺陷报告和源码文件的引用热度值向量r′和s′:
Figure BDA0002747478700000054
Figure BDA0002747478700000055
seg表示来自缺陷报告或源码文件的片段,qseg表示由片段中RefHI编码器得到的nHI维引用热度值向量,wseg表示每个片段的权重,由该片段中不重复词汇的 TF-IDF值累加得到,将向量r′和s′组合成一个2×nHI维的向量输入CNN4RefHI的卷积神经网络模型,卷积核大小为
Figure BDA0002747478700000056
卷积核个数为
Figure BDA0002747478700000057
最大池化的窗口大小为pHI
Figure BDA0002747478700000058
pHI均为正整数,则该模型输出向量的形状为
Figure BDA0002747478700000059
Figure BDA00027474787000000510
最后,将CNN4TFIDF模型子模块和CNN4RefHI子模块的输出向量拼接,并通过三个全连接层输出一个相关性得分。
本发明所要实现的技术效果在于:
通过CNN4TFIDF模型子模块、片段RefHI编码器子模块和CNN4RefHI子模块之间的配合,实现***层面上
1.能有效区分错误和非错误源码文件;覆盖当前应用中的所有源码文件;
2.能充分利用缺陷报告和源代码文件的TF-IDF向量表示中的信息;
从而能够提高利用深度学习方法进行缺陷定位的准确性。
附图说明
图1: DependLoc框架;
图2 :CNN4TFIDF模型;
图3:定制化的蚁群算法;
图4:用于词嵌入文本的CNN模型;
具体实施方式
以下是本发明的优选实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于此实施例。
本发明提出了一种基于源代码文件依赖关系的缺陷定位***,***分为输入、运算、输出三个模块,其中所述输入模块用于导入缺陷报告和源码文件,所述运算模块采用DependLoc框架,DependLoc框架总体框架如图1所示。DependLoc 由三个子模块组成:
CNN4TFIDF模型子模块:根据缺陷报告和源码文件的TF-IDF向量捕获文本相似度、源码文件长度以及相似缺陷报告等特征。
用TF-IDF分别计算缺陷报告和源码文件的向量表示。假设当前应用中,源代码文件的词汇空间大小是N,则得到两个N维的TF-IDF向量。如图2所示,将缺陷报告和源码文件的TF-IDF向量合并(2×N维)作为卷积神经网络(CNN) 模型的输入。卷积核的大小为2×kw,kw为卷积核宽度,卷积核个数为kn。则卷积后得到一个(N-kw+1)维的向量。池化窗口大小为p,完成最大池化操作后,得到的向量形状为kn×((N-kw+1)/p)。该向量将在DependLoc最后的融合层与CNN4RefHI模型的输出拼接并融合。
该模型能不仅能捕获缺陷报告和源码文件的文本相似度,还能学习源码文件长度和相似缺陷报告(即相似的缺陷可能修复相似的源码文件)等特征。
片段RefHI编码器:将缺陷报告和源码文件编码成具有源码依赖关系特征的向量。
(1)文件依赖图(File Dependency Graph,FDG)
若文件A引用文件B,则称A依赖于B,记作A→B。根据当前应用的所有源码文件,可构建一个文件依赖图。
(2)基于文件依赖图(FDG)的文件引用热度(RefHeat)
为了量化源码文件的依赖关系,本专利通过提出一种基于文件依赖图的定制化蚁群算法来模拟可能的文件引用路径。与传统蚁群算法(蚂蚁之间共享信息) 不同,该算法中每只蚂蚁进行路径选择是彼此独立。每只蚂蚁均按照图3所示的算法流程图执行。首先,每只蚂蚁能量初始化为e,路径集合Path初始化为空, FDG中所有节点作为起始节点集合Nstart。从Nstart中随机选择一个节点作为起始。若当前节点的出度为0,则重新从Nstart中随机选择一个节点作为起始;否则,蚂蚁从当前节点的出节点(Nout(nodecur))中随机选择一个节点作为下一步(即 nodenext)。如果nodenext未被访问(即不在Path中),则nodenext加入Path。令下一步的出节点集合(Nout(nodenext))中未被访问过的节点的集合为NunVisited。如果nodenext已被访问(即在Path中),且NunVisited不为空,则nodenext加入Path。如果nodenext已被访问,且nodenext的所有出节点均被访问过(即NunVisited为空),则蚂蚁停止。由于FDG中可能存在环形依赖,因此需要检查NunVisited来避免环形依赖导致的无限循环。假设当前应用中源码文件的数目为nsrc,则设置蚂蚁个数为100*nsrc,且每只蚂蚁初始能量为
Figure BDA0002747478700000071
收集所有蚂蚁的路径(即Path)后,可通过每个文件被引用(即蚂蚁访问过)的次数来量化文件的依赖特征,称之为引用热度(reference heat,RefHeat)。
(3)引用热度区间(reference heat interval,RefHI)向量
由于引用热度值是离散的,因此,将所有文件的引用热度值取对数后的值域等分为nHI个区间(且
Figure BDA0002747478700000072
),称之为引用热度区间(RefHI)。每个源码文件所属的RefHI为该文件的RefHeat值取对数后落入的区间。
根据所有源码中的词汇,按照公式(1)-(3)为每一个词汇生成一个nHI维的向量。N为所有源码的词汇空间大小,tij表示源码文件s(s∈[1,nsrc])中,第i个词汇在第j维的值。Is指示源码文件s是否属于第j个引用热度区间。tij正规化为t′ij,则第i个词汇的RefHI词汇向量被表示为ti。因此,每个词汇从所属的源码文件中继承了引用热度特征。
Figure BDA0002747478700000081
RefHI向量。即每个文档(缺陷报告或源码文件)的RefHI向量为文档内词汇的加权RefHI向量。需要注意的是,文档中的相同词汇不进行重复加权计算。词汇 i的权重wi通过TF-IDF计算可得。fr(i)和fs(i)分别代表缺陷报告r和源码文件 s中词汇i的个数。
Figure BDA0002747478700000082
表示在所有源码文件中词汇i的IDF值。
Figure BDA0002747478700000083
Figure BDA0002747478700000084
(4)片段RefHI向量
给定一个缺陷报告,需要通过RefHI来匹配出错的源码文件。对于源码文件,其目标ReHI即为该文件所属的引用热度区间。对于缺陷报告,其目标ReHI为该缺陷对应的缺陷文件所属的引用热度区间。然而,由公示(4)和(5)计算的静态 RefHI向量并不足以准确地预测热度区间。此外,文档(缺陷报告和源码文件) 长度变化较大且通常在输入模型之前会进行截断处理,一些关键信息可能丢失。因此,为得到更有效的RefHI向量,且更好地捕获文档语义信息,本发明设计了片段RefHI编码器(图1)。其中,文档被拆分成等大小(即每个片段包含相等个数的词汇)的片段,片段词汇通过词嵌入并输入CNN-1,CNN-1和Yoon Kim 提出的用于文本分类的CNN模型类似,如图4所示。若词嵌入的向量维度为k,一条语句包含n个词汇,则将n×k维的向量输入CNN-1,令CNN-1的卷积核高度为kh(正整数),则卷积核大小为kh×k,可同时设置多个不同规格的卷积核,即卷积核的高度kh可同时设置为多个值,常用的值包括3、4、5。然后对不同卷积核大小得到的结果进行最大池化操作,再将最大池化后的结果进行拼接。最后,CNN-1通过两个全连接层输出一个nHI维向量。同时,类似公式(4)和(5),可以为每个片段计算出一个nHI维的RefHI向量。将这两个向量组合成一个2×nHI维的向量输入CNN-2。CNN-2的卷积核大小为2×1,CNN-2的输出是一个nHI维的向量,表示当前片段属于nHI个区间的不同概率,则该片段落入最大概率值对应的区间。
用于训练的缺陷报告和所有源码文件的片段均被用于训练片段RefHI编码器,且每个片段的目标RefHI即为片段所属文档的RefHI。对于有多个出错源码文件的缺陷报告,则采用与该报告文本相似度最高的源码文件所对应的RefHI。片段RefHI编码器中的词嵌入采用现有工作中非监督的skip-gram模型及当前应用中的所有源码文件训练得到。
CNN4RefHI子模块:基于缺陷报告和源码文件的RefHI向量发掘它们之间的相关性。
基于片段RefHI编码器得到的片段RefHI向量,可根据公式(6)和(7)计算缺陷报告和源码文件的RefHI向量r′和s′。公式中,seg表示来自缺陷报告或源码文件的片段,qseg表示由片段中RefHI编码器得到的nHI维RefHI向量,wseg表示每个片段的权重,由该片段中不重复词汇的TF-IDF值累加得到。
Figure BDA0002747478700000091
Figure BDA0002747478700000092
将向量r′和s′组合成一个2×nHI维的向量输入CNN4RefHI模型,CNN4RefHI 的卷积核大小为
Figure BDA0002747478700000093
卷积核个数为
Figure BDA0002747478700000094
最大池化的窗口大小为pHI,且
Figure BDA0002747478700000095
Figure BDA0002747478700000096
pHI均为正整数,则该模型输出向量的形状为
Figure BDA0002747478700000097
最后,将CNN4TFIDF和CNN4RefHI的输出向量拼接,并通过三个全连接层输出一个相关性得分,用于表示缺陷报告与源码文件的相关程度。

Claims (6)

1.一种基于源代码文件依赖关系的软件缺陷定位***,其特征在于:***分为输入、运算、输出三个模块,其中所述输入模块用于导入缺陷报告和源码文件,所述运算模块采用DependLoc框架,由三个子模块CNN4TFIDF模型子模块、片段RefHI编码器子模块和CNN4RefHI子模块组成,具体地:
CNN4TFIDF模型子模块根据缺陷报告和源码文件的TF-IDF向量,以卷积神经网络的方法捕获文本相似度、源码文件长度以及相似缺陷报告等特征;
片段RefHI编码器子模块首先在将所述缺陷报告和源码文件拆分成等大小的片段,片段词汇通过词嵌入并输入卷积神经网络一,若词嵌入的向量维度为k,一条语句包含n个词汇,则将n×k维的向量输入所述卷积神经网络一,令所述卷积神经网络一的卷积核高度为kh,kh为正整数,则卷积核大小为kh×k,可同时设置多个不同规格的卷积核,即卷积核的高度kh可同时设置为多个值,常用的值包括3、4、5,然后对不同卷积核大小得到的结果进行最大池化操作,再将最大池化后的结果进行拼接,最后,所述卷积神经网络一通过两个全连接层输出一个nHI维向量,同时构建文件依赖图,进而结合所述基于文件依赖图,采用一种基于文件依赖图的定制化蚁群算法来模拟可能的文件引用路径,得到反应每个文件被引用的次数的引用热度值,并将所述引用热度值划定引用热度区间,利用引用热度区间向量的构建方法得到片段RefHI向量,将缺陷报告和源码文件编码成具有源码依赖关系特征的向量;
CNN4RefHI子模块基于缺陷报告和源码文件的RefHI向量它们之间的相关性得分;
所述输出模块用于将源码文件按照相关性得分排序后对外输出。
2.如权利要求1所述的一种基于源代码文件依赖关系的软件缺陷定位***,其特征在于:所述CNN4TFIDF模型子模块针对输入的缺陷报告和源码文件,根据源代码文件的词汇空间,所述词汇空间大小为N,N为正整数,生成两个N维的TF-IDF向量,将缺陷报告和源码文件的TF-IDF向量合并为2×N维张量作为卷积神经网络模型的输入,并设定卷积核的大小为2×kw,kw为所述卷积核宽度,所述卷积核个数为kn,进行卷积运算后得到(N-kw+1)维的向量,设定池化窗口大小为p,完成最大池化操作后,得到用于与所述CNN4RefHI子模块的输出拼接并融合的,尺寸为kn×((N-kw+1)/p)的输出向量,kw、kn、p均为正整数。
3.如权利要求2所述的一种基于源代码文件依赖关系的软件缺陷定位***,其特征在于:所述片段RefHI编码器子模块采用的所述一种基于文件依赖图的定制化蚁群算法具体实现方式为:首先,定义蚁群算法中每只蚂蚁的能量,并设定路径集合初始化为空,所述文件依赖图中所有节点作为起始节点集合,从所述起始节点集合中随机选择一个节点作为起始,若当前节点的出度为0,则重新从所述起始节点集合中随机选择一个节点作为起始;否则,蚂蚁从当前节点的出节点中随机选择一个节点作为下一步,如果所述下一步未被访问,即不在所述路径集合中,则所述下一步加入所述路径集合;如果所述下一步已被访问,即在所述路径集合中,且所述下一步的出节点中仍有节点未被访问,则所述下一步加入所述路径集合;如果所述下一步已被访问,且所述下一步的所有出节点均被访问过,则蚂蚁停止;同时设置检查下一步的出节点是否均被访问过的机制来避免环形依赖导致的无限循环,收集所述路径集合后,每个文件被引用的次数即为蚂蚁访问过的次数,通过所述蚂蚁访问过的次数定义文件的依赖特征,即为引用热度值。
4.如权利要求3所述的一种基于源代码文件依赖关系的软件缺陷定位***,其特征在于:所述每只蚂蚁的能量的定义方法为:对于当前应用中源码文件的数目为nsrc,设置蚂蚁个数为100*nsrc,且每只蚂蚁初始能量为
Figure FDA0002747478690000021
5.如权利要求4所述的一种基于源代码文件依赖关系的软件缺陷定位***,其特征在于:所述引用热度区间向量的构建方法为:将所有文件的引用热度值取对数后的值域等分为nHI个区间定义为引用热度区间,且
Figure FDA0002747478690000022
每个源码文件所属的所述引用热度区间为该文件的引用热度值取对数后落入的区间,
根据所有源码中的词汇,定义N为所有源码的词汇空间大小,tij表示源码文件s中,s∈[1,nsrc],第i个词汇在第j维的值,Is指示源码文件s是否属于第j个引用热度区间,tij正规化为t′ij,则第i个词汇的引用热度值词汇向量被表示为ti,根据下列关系为每一个词汇生成一个nHI维的向量:
Figure FDA0002747478690000023
Figure FDA0002747478690000024
Figure FDA0002747478690000031
则每个词汇从所属的源码文件中继承了引用热度特征,进一步,根据下列关系:
Figure FDA0002747478690000032
Figure FDA0002747478690000033
分别计算出每个缺陷报告片段和源码文件片段的引用热度值词汇向量,fr(i)和fs(i)分别代表缺陷报告r和源码文件s中词汇i的个数,
Figure FDA0002747478690000034
表示在所有源码文件中词汇i的IDF值,通过上述方法为每个片段计算出一个nHI维的引用热度值向量,将所述卷积神经网络一输出的向量和每个片段计算出的引用热度值向量两个向量组合成一个2×nHI维的向量输入卷积神经网络二,采用2×1大小的卷积核,输出一个nHI维的向量,表示当前片段属于nHI个区间的不同概率,则该片段落入最大概率值对应的区间,每个缺陷报告片段或源码文件片段的引用热度值词汇向量为片段内词汇的加权引用热度值词汇向量,片段中的相同词汇不进行重复加权计算,对词汇i的权重wi通过TF-IDF计算得到,每个片段的目标引用热度值即为片段所属文档的引用热度值。
6.如权利要求5所述的一种基于源代码文件依赖关系的软件缺陷定位***,其特征在于:所述CNN4RefHI子模块基于片段RefHI编码器得到的片段引用热度值向量,并根据下列方法计算缺陷报告和源码文件的引用热度值向量r′和s′:
Figure FDA0002747478690000035
Figure FDA0002747478690000036
seg表示来自缺陷报告或源码文件的片段,qseg表示由片段中RefHI编码器得到的nHI维引用热度值向量,wseg表示每个片段的权重,由该片段中不重复词汇的TF-IDF值累加得到,将向量r′和s′组合成一个2×nHI维的向量输入CNN4RefHI的卷积神经网络模型,卷积核大小为
Figure FDA0002747478690000037
卷积核个数为
Figure FDA0002747478690000038
最大池化的窗口大小为pHI
Figure FDA0002747478690000039
pHI均为正整数,则该模型输出向量的形状为
Figure FDA00027474786900000310
Figure FDA0002747478690000041
最后,将CNN4TFIDF模型子模块和CNN4RefHI子模块的输出向量拼接,并通过三个全连接层输出一个相关性得分。
CN202011171646.8A 2020-10-28 2020-10-28 一种基于源代码文件依赖关系的软件缺陷定位*** Active CN112286807B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011171646.8A CN112286807B (zh) 2020-10-28 2020-10-28 一种基于源代码文件依赖关系的软件缺陷定位***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011171646.8A CN112286807B (zh) 2020-10-28 2020-10-28 一种基于源代码文件依赖关系的软件缺陷定位***

Publications (2)

Publication Number Publication Date
CN112286807A true CN112286807A (zh) 2021-01-29
CN112286807B CN112286807B (zh) 2022-01-28

Family

ID=74372673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011171646.8A Active CN112286807B (zh) 2020-10-28 2020-10-28 一种基于源代码文件依赖关系的软件缺陷定位***

Country Status (1)

Country Link
CN (1) CN112286807B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022266833A1 (zh) * 2021-06-22 2022-12-29 华为技术有限公司 一种根因分析方法及相关设备
CN117951315A (zh) * 2024-02-06 2024-04-30 佛山科学技术学院 一种代码依赖的检索方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739339A (zh) * 2009-12-29 2010-06-16 北京航空航天大学 一种基于程序动态依赖关系的软件故障定位方法
CN108459965A (zh) * 2018-03-06 2018-08-28 南京大学 一种结合用户反馈和代码依赖的软件可追踪生成方法
CN108829607A (zh) * 2018-07-09 2018-11-16 华南理工大学 一种基于卷积神经网络的软件缺陷预测方法
CN109597747A (zh) * 2017-09-30 2019-04-09 南京大学 一种基于多目标优化算法nsga-ⅱ推荐跨项目关联缺陷报告的方法
CN109697162A (zh) * 2018-11-15 2019-04-30 西北大学 一种基于开源代码库的软件缺陷自动检测方法
CN109918127A (zh) * 2019-03-07 2019-06-21 扬州大学 一种基于代码修改模式差异的缺陷纠错方法
CN110109835A (zh) * 2019-05-05 2019-08-09 重庆大学 一种基于深度神经网络的软件缺陷定位方法
CN110825615A (zh) * 2019-09-23 2020-02-21 中国科学院信息工程研究所 基于网络嵌入的软件缺陷预测方法及***
US20200097387A1 (en) * 2018-09-25 2020-03-26 International Business Machines Corporation Code dependency influenced bug localization
US20200133756A1 (en) * 2018-10-26 2020-04-30 EMC IP Holding Company LLC Method, apparatus and computer storage medium for error diagnostics of an application

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739339A (zh) * 2009-12-29 2010-06-16 北京航空航天大学 一种基于程序动态依赖关系的软件故障定位方法
CN109597747A (zh) * 2017-09-30 2019-04-09 南京大学 一种基于多目标优化算法nsga-ⅱ推荐跨项目关联缺陷报告的方法
CN108459965A (zh) * 2018-03-06 2018-08-28 南京大学 一种结合用户反馈和代码依赖的软件可追踪生成方法
CN108829607A (zh) * 2018-07-09 2018-11-16 华南理工大学 一种基于卷积神经网络的软件缺陷预测方法
US20200097387A1 (en) * 2018-09-25 2020-03-26 International Business Machines Corporation Code dependency influenced bug localization
US20200133756A1 (en) * 2018-10-26 2020-04-30 EMC IP Holding Company LLC Method, apparatus and computer storage medium for error diagnostics of an application
CN109697162A (zh) * 2018-11-15 2019-04-30 西北大学 一种基于开源代码库的软件缺陷自动检测方法
CN109918127A (zh) * 2019-03-07 2019-06-21 扬州大学 一种基于代码修改模式差异的缺陷纠错方法
CN110109835A (zh) * 2019-05-05 2019-08-09 重庆大学 一种基于深度神经网络的软件缺陷定位方法
CN110825615A (zh) * 2019-09-23 2020-02-21 中国科学院信息工程研究所 基于网络嵌入的软件缺陷预测方法及***

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
RIPON K. SAHA: "Improving bug localization using structured information retrieval", 《HTTPS://IEEEXPLORE.IEEE.ORG/ABSTRACT/DOCUMENT/6693093》 *
原子等: "面向细粒度源代码变更的缺陷预测方法", 《软件学报》 *
张芸等: "基于信息检索的软件缺陷定位技术研究进展", 《软件学报》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022266833A1 (zh) * 2021-06-22 2022-12-29 华为技术有限公司 一种根因分析方法及相关设备
CN117951315A (zh) * 2024-02-06 2024-04-30 佛山科学技术学院 一种代码依赖的检索方法

Also Published As

Publication number Publication date
CN112286807B (zh) 2022-01-28

Similar Documents

Publication Publication Date Title
CN109840287B (zh) 一种基于神经网络的跨模态信息检索方法和装置
CN111310438B (zh) 基于多粒度融合模型的中文句子语义智能匹配方法及装置
CN110413785B (zh) 一种基于bert和特征融合的文本自动分类方法
CN112800776B (zh) 双向gru关系抽取数据处理方法、***、终端、介质
CN112507699B (zh) 一种基于图卷积网络的远程监督关系抽取方法
CN111159407A (zh) 训练实体识别和关系分类模型的方法、装置、设备及介质
CN110933518B (zh) 一种利用卷积多层注意力网络机制生成面向查询的视频摘要的方法
CN112286807B (zh) 一种基于源代码文件依赖关系的软件缺陷定位***
CN111985228B (zh) 文本关键词提取方法、装置、计算机设备和存储介质
US11874863B2 (en) Query expansion in information retrieval systems
CN109857457B (zh) 一种在双曲空间中学习源代码中的函数层次嵌入表示方法
CN117094291B (zh) 基于智能写作的自动新闻生成***
CN111814489A (zh) 口语语义理解方法及***
CN114936267A (zh) 基于双线性池化的多模态融合在线谣言检测方法及***
CN110851584A (zh) 一种法律条文精准推荐***和方法
CN117236647B (zh) 一种基于人工智能的岗位招聘分析方法及***
CN116776270A (zh) 一种基于Transformer的微服务性能异常检测方法和***
Lange et al. Feature-dependent confusion matrices for low-resource NER labeling with noisy labels
CN117472789A (zh) 基于集成学习的软件缺陷预测模型构建方法和装置
CN115658853A (zh) 一种基于自然语言处理的气象预警信息审核方法及***
US11720559B2 (en) Bridging textual and tabular data for cross domain text-to-query language semantic parsing with a pre-trained transformer language encoder and anchor text
CN115238705A (zh) 语义解析结果重排序方法及***
CN109918486B (zh) 智能客服的语料构建方法、装置、计算机设备及存储介质
Iyer et al. Efficient model for searching and detecting semantically similar question in discussion forums of e-learning platforms
CN112433756B (zh) 基于加权递归自编码器的快速代码克隆检测方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant