CN115934548A - 一种基于信息检索的语句级软件缺陷定位方法及系统 - Google Patents

一种基于信息检索的语句级软件缺陷定位方法及系统 Download PDF

Info

Publication number
CN115934548A
CN115934548A CN202211621334.1A CN202211621334A CN115934548A CN 115934548 A CN115934548 A CN 115934548A CN 202211621334 A CN202211621334 A CN 202211621334A CN 115934548 A CN115934548 A CN 115934548A
Authority
CN
China
Prior art keywords
defect
statement
source code
target
historical
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.)
Pending
Application number
CN202211621334.1A
Other languages
English (en)
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.)
Beijing Information Science and Technology University
Original Assignee
Beijing Information Science and Technology 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 Beijing Information Science and Technology University filed Critical Beijing Information Science and Technology University
Priority to CN202211621334.1A priority Critical patent/CN115934548A/zh
Publication of CN115934548A publication Critical patent/CN115934548A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于信息检索的语句级软件缺陷定位方法及系统,涉及软件缺陷定位技术领域。包括:基于缺陷库构建历史缺陷报告集;根据历史缺陷报告集和目标缺陷报告进行历史缺陷语句提取;根据目标源码文件集和目标缺陷报告进行可疑目标源码文件检测以获得可疑目标源码语句集;基于历史缺陷语句集和可疑目标源码语句集进行目标缺陷语句定位。本发明实现了语句级别的缺陷定位,相比于现有的基于信息检索的软件缺陷定位方法粒度更细,定位精度更高;相比于现有的语句级别的缺陷定位方法,本发明不需要设计测试用例并执行程序,减少了缺陷定位所需人力和时间开销。

Description

一种基于信息检索的语句级软件缺陷定位方法及系统
技术领域
本发明涉及软件缺陷定位技术领域,更具体的说是涉及一种基于信息检索的语句级软件缺陷定位方法及系统。
背景技术
随着软件规模和复杂程度的不断提高,软件质量和可靠性越来越难以保障。软件调试是保障软件质量和可靠性的一种重要手段,主要包括缺陷定位和缺陷修复两个步骤,其中缺陷定位旨在辅助开发人员快速定位缺陷所在位置,是软件调试过程中最费时费力的一个步骤。根据是否需要执行源程序,现有的软件缺陷定位技术主要分为动态缺陷定位和静态缺陷定位。其中,动态缺陷定位主要通过收集分析程序执行测试用例的信息来定位可疑度较高的模块,具有较高的精确度;而静态缺陷定位主要通过分析程序的结构、缺陷报告等静态信息来识别出可疑度较高的模块,因此其相较于动态缺陷定位具有成本低、时间开销小的优势,近年来受到了广泛关注。
目前,常用的静态缺陷定位主要有基于信息检索的缺陷定位、基于历史的缺陷定位等。其中基于信息检索的缺陷定位(Information Retrieval-based Bug Localization,IRBL)因为其计算成本低、能够充分利用缺陷报告提供的信息而被广泛应用。根据定位粒度不同,IRBL主要分为文件级别和函数级别的缺陷定位。相比于文件级别的缺陷定位,函数级别的缺陷定位因为函数中包含的代码文本和词汇较少,导致定位效果有所降低。文件级别的IRBL虽然具有较高的准确率,但开发人员仍需要花大量时间按照文件的可疑度和文件中语句的默认顺序确认缺陷所在语句。研究表明,开发人员在检查给定列表中的少量语句未发现缺陷后便会失去耐心,因此粗粒度的IRBL并不能满足软件缺陷定位的实际需求。若将IRBL直接应用于语句级,由于单条语句中包含的文本和词汇过少,难以取得较好的缺陷定位效果。
开发人员在Debug过程中遇到无法解决的Bug时,常会在开源社区或平台检索相同或相似问题。在很多时候,开源社区的相似问题提供了相应解决方案,可供开发人员参考。
为此,本发明提出了一种基于信息检索的语句级软件缺陷定位方法。首先,在缺陷库收集大量历史缺陷报告以构建历史缺陷报告集;其次,计算待定位缺陷程序的缺陷报告(后文统称为目标缺陷报告)和历史缺陷报告集中每个报告之间的文本相似度以筛选出相似度较高的历史缺陷报告(后文统称为相似缺陷报告集),并提取其中包含的缺陷语句(后文统称为历史缺陷语句集);再次,根据待定位缺陷程序的源码文件集(后文统称为目标源码文件集)与目标缺陷报告之间的文本相似度筛选出相似度较高的目标源码文件以构建可疑目标源码文件集;最后,计算可疑目标源码文件中每条源码语句(后文统称为目标源码语句)与历史缺陷语句集中每条历史缺陷语句之间的文本相似度,并根据文本相似度将目标源码语句降序排列,排名越靠前的目标源码语句存在缺陷的可能性越大,以此来进行语句级的缺陷定位。
发明内容
现有的动态缺陷定位虽然粒度更细,但需要设计并运行测试用例,需要耗费大量人力和时间开销。对于静态缺陷定位方法,由于其依赖于大量的程序静态信息,单条语句难以提供足够的文本信息,因此静态缺陷定位方法主要为文件、函数级的粗粒度缺陷定位,开发人员仍需要按照文件、函数中代码语句默认排名确认缺陷所在语句。开发人员在检查给定列表中的少量语句未发现缺陷后便会失去耐心,因此文件、函数级的静态缺陷定位方法并不能满足开发人员的实际需求。而单条代码语句中文本数量少,所能提供的信息难以直接应用现有的静态缺陷定位方法进行语句级的缺陷定位。有鉴于此,本发明提供了一种基于信息检索的语句级软件缺陷定位方法及系统,为了解决上述问题,本发明采用如下技术方案:
一种基于信息检索的语句级软件缺陷定位方法,包括:
基于缺陷库构建历史缺陷报告集;
根据历史缺陷报告集和目标缺陷报告brt进行历史缺陷语句提取;
根据目标源码文件集SCt和目标缺陷报告brt进行可疑目标文件检测以获得可疑目标源码语句集;
基于历史缺陷语句集和可疑目标源码语句集进行目标缺陷语句定位。
优选的,所述构建历史缺陷报告集具体步骤为:
步骤1-1:访问现有的缺陷库,其中包含项目对应的历史缺陷报告;
步骤1-2:获取缺陷库中现有的历史缺陷报告信息,包括:报告编号、报告摘要、报告描述、附件信息;
步骤1-3:筛选历史缺陷报告信息,要求缺陷报告类型为Bug、状态处于已解决或已关闭状态;
步骤1-4:存储历史缺陷报告信息,构建历史缺陷报告集。
优选的,所述历史缺陷语句提取具体步骤为:
步骤2-1:输入目标缺陷报告brt和历史缺陷报告集;
步骤2-2:提取目标缺陷报告brt关键词;
步骤2-3:根据目标缺陷报告brt关键词在历史缺陷报告集中进行筛选,提取出包含目标缺陷报告brt关键词的候选历史缺陷报告集BRh
步骤2-4:计算目标缺陷报告brt与候选历史缺陷报告集BRh中每个历史缺陷报告之间的文本相似度,提取文本相似度最高的前r个历史缺陷报告构成相似缺陷报告集BRs
步骤2-5:获取相似缺陷报告集BRs中相似缺陷报告的附件信息,提取其中历史缺陷语句构成历史缺陷语句集BRh
优选的,通过从目标缺陷报告brt中提取的统计文本特征来选择与目标缺陷报告brt最相关的关键词。
优选的,所述文本相似度的计算步骤为:
首先对两段文本进行分词预处理,将文本转化为包含单词的列表,然后将两个单词列表合并去重后构建词袋;
根据构建的词袋以及每段文本的单词列表,计算出词袋中每个单词在单词列表中出现的频率即词频,并以此构建每个文本的词频向量;
最后根据公式计算两个词频向量的余弦相似度,其中为词频向量,x和y为文本,xi和yi为词频,n≥1。
优选的,所述可疑目标文件检测具体步骤为:
步骤3-1:输入目标缺陷报告brt和目标源码文件集SCt
步骤3-2:计算目标缺陷报告brt与目标源码文件集SCt中每个目标源码文件之间的文本相似度;
步骤3-3:根据文本相似度对SCt进行降序排序,筛选出排名前f的目标源码文件构成可疑目标源码文件集SF={F1,F2,…,Ff}。
优选的,所述目标缺陷代码语句定位具体步骤为:
步骤4-1:将历史缺陷语句集BSh和可疑目标源码文件集SF作为输入;
步骤4-2:依次获取可疑目标源码文件集SF中每个可疑目标源码文件Ff,逐行读取可疑目标源码文件Ff中的代码语句以构成可疑目标源码语句集ST={st1,st2,…,stn},从历史缺陷语句集BSh获取每条历史缺陷语句bsi,i>0;
步骤4-3:依次计算每条可疑目标源码语句stj与每条历史缺陷语句bsi之间的余弦相似度,得到可疑目标源码语句stj与历史缺陷语句bsi文本相似度,并将余弦相似度最高值作为可疑目标源码语句stj的可疑度;
步骤4-4:根据可疑度,对可疑目标源码语句集ST中的语句进行降序排序,进行语句级的缺陷定位,可疑度值与存在缺陷的可能性正相关。
优选的,一种基于信息检索的语句级软件缺陷定位系统,包括:
获取模块,基于缺陷库构建历史缺陷报告集;
提取模块,根据历史缺陷报告集和目标缺陷报告brt进行历史缺陷语句提取;
检测模块,根据目标源码文件集SCt和目标缺陷报告brt进行可疑目标文件检测以获得目标源码语句集
定位模块,基于历史缺陷语句集和可疑目标源码语句集进行目标缺陷语句定位。
优选的,一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现定位方法。
经由上述的技术方案可知,与现有技术相比,本发明提供了一种基于信息检索的语句级软件缺陷定位方法及系统,本发明的基于信息检索的语句级的缺陷定位方法,首先利用目标源码文件和目标缺陷报告brt的相似度进行文件级的缺陷定位以检测可疑目标源码文件,其次利用历史缺陷语句和可疑目标源码语句的相似度定位缺陷语句,以进行语句级的缺陷定位。本发明使用信息检索技术实现了语句级别的缺陷定位,相比于现有的基于信息检索的软件缺陷定位方法粒度更细,定位精度更高;相比于现有的语句级别的缺陷定位方法,本发明不需要设计测试用例并执行程序,因此减少了缺陷定位所需人力和时间开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为基于信息检索的语句级软件缺陷定位方法流程图。
图2为构建历史缺陷报告集流程图。
图3为历史缺陷语句提取流程图。
图4为可疑目标源码文件检测流程图。
图5为缺陷语句定位流程图。
图6为基于信息检索的语句级软件缺陷定位系统结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种基于信息检索的语句级软件缺陷定位方法,包括:
基于缺陷库构建历史缺陷报告集;
根据历史缺陷报告集和目标缺陷报告brt进行历史缺陷语句提取;
根据目标源码文件集SCt和目标缺陷报告brt进行可疑目标文件检测以获得可疑目标源码语句集;
基于历史缺陷语句集和可疑目标源码语句集进行目标缺陷语句定位。
进一步的,如图1所示,基于信息检索的语句级缺陷定位方法将目标源码文件集SCt和目标缺陷报告brt作为输入,通过使用信息检索技术输出可疑语句列表以辅助进行语句级缺陷定位,主要分为4个步骤。首先,在缺陷库中收集历史缺陷报告以构建历史缺陷报告集;然后,进行历史缺陷报告筛选及历史缺陷语句提取,在上一步收集缺陷报告集的基础上,通过计算目标缺陷报告brt与历史缺陷报告的文本相似度来筛选出相似缺陷报告集,并提取出相似缺陷报告中包含的历史缺陷语句;接着,进行可疑目标源码文件检测,计算目标缺陷报告与目标源码文件集中每个目标源码文件之间的文本相似度,筛选文本相似度较高的目标源码文件以构建可疑目标源码文件集SCt;最后,通过计算每条目标源码语句与历史缺陷语句集中的历史缺陷语句的文本相似度来对目标源码语句进行排序,最终得到可疑语句列表,其中排名越高的目标源码语句存在缺陷的概率越高。
进一步的,对开源缺陷库中历史缺陷报告进行筛选和收集,以构建历史缺陷报告集,用于步骤2中查找相似缺陷报告。
如图2所示,构建历史缺陷报告集的步骤如下:
步骤1-1:访问现有的缺陷库,其中包含项目对应的历史缺陷报告;
步骤1-2:获取开源缺陷库中现有的历史缺陷报告信息,主要包括:报告编号(ID)、报告摘要(Summary)、报告描述(Description)、附件信息(Attachment)等信息;
步骤1-3:筛选历史缺陷报告,要求缺陷报告类型(Type)为Bug、状态(Status)处于已解决(Resolved)或已关闭(Closed)状态;
步骤1-4:存储历史缺陷报告,构建大规模历史缺陷报告集。
进一步的,在步骤1从构建的历史缺陷报告集中查找相似缺陷报告,并提取其中的历史缺陷语句,以辅助在步骤4中进行缺陷语句定位。
如图3所示,历史缺陷语句提取的步骤如下:
步骤2-1:输入目标缺陷报告brt和历史缺陷报告集;
步骤2-2:提取目标缺陷报告brt关键词;用于步骤2-3中进行历史缺陷报告的初步筛选;
步骤2-3:根据关键词在步骤1构建好的历史缺陷报告集中进行筛选,提取出包含步骤2-2中目标缺陷报告brt关键词的候选历史缺陷报告集BRh
步骤2-4:计算目标缺陷报告brt与步骤2-3筛选出的候选历史缺陷报告集BRh中每个历史缺陷报告之间的文本相似度,提取文本相似度最高的前r个历史缺陷报告构成相似缺陷报告集BRs
步骤2-5:获取相似缺陷报告集BRs中相似缺陷报告的附件信息,提取其中历史缺陷语句构成历史缺陷语句集BRh
进一步的,在步骤2-2中,对于目标缺陷报告brt关键词提取,本发明通过从目标缺陷报告brt中提取的统计文本特征来选择与目标缺陷报告brt最相关的关键词。
在步骤2-4中,对于缺陷报告文本相似度的计算,本发明使用文本余弦相似度进行度量。对于两段文本,首先进行分词预处理,将文本转化为包含单词的列表,然后将两个单词列表合并去重后构建词袋,根据构建的词袋以及每段文本的单词列表,计算出词袋中每个单词在单词列表中出现的频率即词频,并以此构建每个文本的词频向量,最后计算两个个词频向量的余弦相似度。计算方法如公式(1)所示,其中为词频向量,余弦相似度越高则表示两段文本越相似。
例如,以缺陷报告中的两段文本:T1=“Calendar calendar=newGregorianCalendar();”,T2=“Calendar c=newGregorianCalendar(mTimeZone);”。首先,进行分词预处理后转化为包含单词的列表A1=[‘Calendar’,‘calendar’,‘new’,‘GregorianCalendar’,],A2=[‘new’,‘c’,‘mTimeZone,‘calender’,‘gregorianCalendar’,]。然后,将两个单词列表合并去重后构建词袋D={‘calendar’,‘new’,‘GregorianCalendar’,‘c’,‘mTimeZone’},计算词频以构建两段文本的词频向量,最后,对于向量使用公式(1)计算两个向量之间的余弦相似度,余弦相似度越高,则两个文本的相似度越大。
基于上述文本相似度计算方法,计算目标缺陷报告brt与历史缺陷报告集BRh中每个历史缺陷报告之间的文本相似度,筛选最相似的r个历史缺陷报告构成相似缺陷报告集BRs={br1,br2,…,brr}。
在步骤2-5中,对于相似缺陷报告集BRs,可以获取其中每个相似缺陷报告bri的附件信息,其中往往会包含对关键代码的修改情况,通常使用“-”标记针对缺陷进行修改后删除的代码语句,使用“+”标记针对缺陷进行修改后新增的代码语句。本发明将相似缺陷报告集BRs中的每个相似缺陷报告bri中删除的代码视为缺陷代码,将作为历史缺陷语句,构成由k条历史缺陷语句组成的历史缺陷语句集BRh={bs1,bs2,…,bsk},并在步骤4中辅助进行缺陷语句定位。
进一步的,将目标缺陷报告brt和目标源码文件集SCt={sc1,sc2,…,scm}作为输入,计算目标缺陷报告brt与目标源码文件集SCt中每个目标源码文件的余弦相似度,以度量目标源码文件的相似程度,筛选出文本相似度排名前f的目标源码文件构成可疑目标源码文件集SF,步骤4将在此基础上进行语句级缺陷定位。
如图4所示,可疑目标源码文件检测的步骤如下:
步骤3-1:输入目标缺陷报告brt和目标源码文件集SCt
步骤3-2:计算目标缺陷报告brt与目标源码文件集SCt中每个目标源码文件之间的文本相似度;
步骤3-3:根据文本相似度对SCt进行降序排序,筛选出排名前f的目标源码文件构成可疑目标源码文件集SF={F1,F1,…,F1}。
在步骤3-2中,计算目标缺陷报告brt和目标源码文件集SCt中的每个目标源码文件的余弦相似度,以度量目标缺陷报告brt与每个目标源码文件的文本相似程度,余弦相似度计算方法同步骤2-4。
进一步的,将历史缺陷语句集BSh和可疑目标源码文件集SF作为输入,提取目标源码文件集SF中每个可疑目标源码文件的代码语句,构成可疑目标源码语句集ST,依次计算可疑目标源码语句集ST中每条可疑源码语句与历史缺陷语句集BSh中每条历史缺陷语句的余弦相似度,以度量可疑源码语句与历史缺陷语句的文本相似程度,文本相似度越高的可疑源码语句存在缺陷的可能性越大,以此定位缺陷语句。
如图5所示,缺陷语句定位的步骤如下:
步骤4-1:将步骤2提取出的历史缺陷语句集BSh和步骤3检测到的可疑目标源码文件集SF作为输入;
步骤4-2:依次获取可疑目标源码文件集SF中每个可疑目标源码文件Ff,逐行读取可疑目标源码文件中的代码语句以构成可疑目标源码语句集ST={st1,st2,…,stn},从历史缺陷语句集BSh获取每条历史缺陷语句bsi,i>0;
步骤4-3:依次计算每条可疑目标源码语句stj与每条历史缺陷语句bsi之间的余弦相似度,以度量可疑目标源码语句stj与历史缺陷语句bsi的文本相似程度,并将余弦相似度最高值作为可疑目标源码语句stj的可疑度,其中余弦相似度的计算同步骤2-4;
步骤4-4:根据步骤4-3中计算的可疑度,对可疑目标源码语句集ST中的语句进行降序排序,以进行语句级的缺陷定位,排名越高的可疑目标源码语句stj存在缺陷的可能性越大。
本发明提出了一种基于信息检索的语句级软件缺陷定位方法。首先,收集开源缺陷库中的历史缺陷报告,以构建大规模历史缺陷报告集。然后,提取目标缺陷报告bst的关键词,使用关键词在历史缺陷报告集中筛选出相关历史缺陷报告,构成候选历史缺陷报告集BRh。在此基础上,依次计算目标缺陷报告brt与候选历史缺陷报告集BRh中历史缺陷报告的文本相似度,筛选出相似度最高的历史缺陷报告构成相似缺陷报告集BRs,并提取出相似缺陷报告中包含的历史缺陷语句,构建历史缺陷语句集BSh。接着,计算目标缺陷报告brt与目标源码文件Ff的文本相似度,筛选出文本相似度最高的目标源码文件构成可疑目标源码文件集SF,通过提取可疑目标源码文件集SF中目标源码文件的代码语句构建可疑目标源码语句集ST。最后,计算可疑目标源码语句集ST中目标源码语句与历史缺陷语句集BSh中历史缺陷语句间的相似度,度量目标源码语句存在缺陷的可能性,以定位缺陷语句。
本发明提出的缺陷定位方法,使用静态缺陷定位技术实现了语句级别的缺陷定位,相比现有静态缺陷定位方法,定位缺陷的粒度更细,相比动态缺陷定位人力和时间开销更小。融合目标缺陷报告brt、目标源码文件、相似缺陷报告及历史缺陷语句,通过目标缺陷报告brt筛选相似缺陷报告,从相似缺陷报告中提取历史缺陷语句,计算历史缺陷语句与目标源码文件中的目标源码语句的相似度,以进行基于信息检索的软件缺陷定位。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (9)

1.一种基于信息检索的语句级软件缺陷定位方法,其特征在于,包括:
基于缺陷库构建历史缺陷报告集;
根据历史缺陷报告集和目标缺陷报告brt进行历史缺陷语句提取;
根据目标源码文件集SCt和目标缺陷报告brt进行可疑目标源码文件检测以获得可疑目标源码语句集;
基于历史缺陷语句集和可疑目标源码语句集进行目标缺陷语句定位。
2.根据权利要求1所述的一种基于信息检索的语句级软件缺陷定位方法,其特征在于,所述构建历史缺陷报告集具体步骤为:
步骤1-1:访问现有的缺陷库,其中包含项目对应的历史缺陷报告;
步骤1-2:获取缺陷库中现有的历史缺陷报告信息,包括:报告编号、报告摘要、报告描述、附件信息;
步骤1-3:筛选历史缺陷报告信息,要求缺陷报告类型为Bug、状态处于已解决或已关闭状态;
步骤1-4:存储历史缺陷报告信息,构建历史缺陷报告集。
3.根据权利要求1所述的一种基于信息检索的语句级软件缺陷定位方法,其特征在于,所述历史缺陷语句提取具体步骤为:
步骤2-1:输入目标缺陷报告brt和历史缺陷报告集;
步骤2-2:提取目标缺陷报告brt关键词;
步骤2-3:根据目标缺陷报告brt关键词在历史缺陷报告集中进行筛选,提取出包含目标缺陷报告brt关键词的候选历史缺陷报告集BRh
步骤2-4:计算目标缺陷报告brt与候选历史缺陷报告集BRh中每个历史缺陷报告之间的文本相似度,提取文本相似度最高的前r个历史缺陷报告构成相似缺陷报告集BRs
步骤2-5:获取相似缺陷报告集BRs中相似缺陷报告的附件信息,提取其中历史缺陷语句构成历史缺陷语句集BSh
4.根据权利要求3所述的一种基于信息检索的语句级软件缺陷定位方法,其特征在于,通过从目标缺陷报告brt中提取的统计文本特征来选择与目标缺陷报告brt最相关的关键词。
5.根据权利要求3所述的一种基于信息检索的语句级软件缺陷定位方法,其特征在于,所述文本相似度的计算步骤为:
首先对两段文本进行分词预处理,将文本转化为包含单词的列表,然后将两个单词列表合并去重后构建词袋;
根据构建的词袋以及每段文本的单词列表,计算出词袋中每个单词在单词列表中出现的频率即词频,并以此构建每个文本的词频向量;
最后根据公式
Figure FDA0004002324050000021
计算两个词频向量的余弦相似度,其中
Figure FDA0004002324050000022
Figure FDA0004002324050000023
为词频向量,x和y为文本,xi和yi为词频,n≥1。
6.根据权利要求1所述的一种基于信息检索的语句级软件缺陷定位方法,其特征在于,所述可疑目标文件检测具体步骤为:
步骤3-1:输入目标缺陷报告brt和目标源码文件集SCt
步骤3-2:计算目标缺陷报告brt与目标源码文件集SCt中每个目标源码文件之间的文本相似度;
步骤3-3:根据文本相似度对SCt进行降序排序,筛选出排名前f的目标源码文件构成可疑目标源码文件集SF={F1,F2,…,Ff}。
7.根据权利要求1所述的一种基于信息检索的语句级软件缺陷定位方法,其特征在于,所述目标缺陷代码语句定位具体步骤为:
步骤4-1:将历史缺陷语句集BSh和可疑目标源码文件集SF作为输入;
步骤4-2:依次获取可疑目标源码文件集SF中每个可疑目标源码文件Ff,逐行读取可疑目标源码文件Ff中的代码语句以构成可疑目标源码语句集ST={st1,st2,…,stn},从历史缺陷语句集BSh获取每条历史缺陷语句bsi,i>0;
步骤4-3:依次计算每条可疑目标源码语句stj与每条历史缺陷语句bsi之间的余弦相似度,得到可疑目标源码语句stj与历史缺陷语句bsi的文本相似度,并将余弦相似度最高值作为可疑目标源码语句stj的可疑度;
步骤4-4:根据可疑度,对可疑目标源码语句集ST中的语句进行降序排序,进行语句级的缺陷定位,可疑度值与存在缺陷的可能性正相关。
8.一种基于信息检索的语句级软件缺陷定位系统,其特征在于,包括:
获取模块,基于缺陷库构建历史缺陷报告集;
提取模块,根据历史缺陷报告集和目标缺陷报告brt进行历史缺陷语句提取;
检测模块,根据目标源码文件集SCt和目标缺陷报告brt进行可疑目标文件检测以获得可疑目标源码语句集;
定位模块,基于历史缺陷语句集和可疑目标源码语句集进行目标缺陷语句定位。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的定位方法。
CN202211621334.1A 2022-12-16 2022-12-16 一种基于信息检索的语句级软件缺陷定位方法及系统 Pending CN115934548A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211621334.1A CN115934548A (zh) 2022-12-16 2022-12-16 一种基于信息检索的语句级软件缺陷定位方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211621334.1A CN115934548A (zh) 2022-12-16 2022-12-16 一种基于信息检索的语句级软件缺陷定位方法及系统

Publications (1)

Publication Number Publication Date
CN115934548A true CN115934548A (zh) 2023-04-07

Family

ID=86648774

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211621334.1A Pending CN115934548A (zh) 2022-12-16 2022-12-16 一种基于信息检索的语句级软件缺陷定位方法及系统

Country Status (1)

Country Link
CN (1) CN115934548A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117009519A (zh) * 2023-07-19 2023-11-07 上交所技术有限责任公司 一种基于词袋模型的企业挂靠产业方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117009519A (zh) * 2023-07-19 2023-11-07 上交所技术有限责任公司 一种基于词袋模型的企业挂靠产业方法

Similar Documents

Publication Publication Date Title
Yan et al. Automating change-level self-admitted technical debt determination
Kim et al. Classifying software changes: Clean or buggy?
Rattan et al. Software clone detection: A systematic review
Shivaji et al. Reducing features to improve code change-based bug prediction
Kim et al. Dealing with noise in defect prediction
Ray et al. The uniqueness of changes: Characteristics and applications
Rakha et al. Revisiting the performance evaluation of automated approaches for the retrieval of duplicate issue reports
CN111459799A (zh) 一种基于Github的软件缺陷检测模型建立、检测方法及系统
Fioravanti et al. A study on fault-proneness detection of object-oriented systems
Yan et al. Characterizing and identifying reverted commits
Nguyen et al. Filtering noise in mixed-purpose fixing commits to improve defect prediction and localization
JP2014527235A (ja) 項目リストの自動検出のための方法、システム、およびコンピュータ・プログラム
CN107844414A (zh) 一种基于缺陷报告分析的跨项目、并行化缺陷定位方法
Thomas et al. Mining unstructured software repositories
US20160292062A1 (en) System and method for detection of duplicate bug reports
US10346294B2 (en) Comparing software projects having been analyzed using different criteria
Wu et al. Extracting summary knowledge graphs from long documents
Usino et al. Document similarity detection using k-means and cosine distance
Hirsch et al. Root cause prediction based on bug reports
CN115934548A (zh) 一种基于信息检索的语句级软件缺陷定位方法及系统
Xu et al. A GitHub-based data collection method for software defect prediction
Tong et al. Crowdsourced test report prioritization considering bug severity
Guo et al. Code-line-level bugginess identification: How far have we come, and how far have we yet to go?
Jubair et al. A multi‐agent K‐means with case‐based reasoning for an automated quality assessment of software requirement specification
CN115373982A (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