【技术实现步骤摘要】
基于软件缺陷关联分析的软件缺陷定位方法
[0001]本专利技术涉及源代码程序分析及软件缺陷的分析及定位领域,特别涉及基于软件缺陷关联分析的缺陷定位方法。
技术介绍
[0002]如今软件系统已经渗透到了人类生产和生活的各个方面。与此同时,由于软件缺陷导致的问题也带来了很大危害,造成了人员伤亡和经济损失。软件缺陷是指软件系统或者程序中出现的一些故障或者问题,是软件开发和维护过程中不可避免的问题。
[0003]在过去十几年,软件缺陷不断出现,并在软件系统的发展过程中不断得到修复。同时,像版本控制系统和问题跟踪系统这样的软件管理工具存储了大量历史缺陷数据以及缺陷修复信息。这些缺陷数据可以为高质量的软件维护和发展提供指导。因此,研究人员花费了大量的精力来构建基于这些历史数据的缺陷预测/检测模型。在这些模型的帮助下,软件工程师可以检测包含潜在缺陷的缺陷源文件,或者从类似的缺陷中获得推荐的修复建议。但真正理解并使用这些缺陷信息,挖掘缺陷之间的关系,成为应用于维护软件质量的知识,还有许多挑战。与此同时,对于一个大型的不断发展的软件系统,项目团队每天会收到大量的缺陷报告,查找需要更改的源代码文件以修复缺陷是一项具有挑战性的任务。近年来,使用信息检索(Information Retrieval)技术在给出缺陷报告的情况下自动定位缺陷源文件,取得了良好的效果。然而,已有的方法缺乏基于更大数据集的实用性评价,且未进一步考虑到缺陷之间存在的关联关系对定位缺陷文件的影响。
[0004]基于软件缺陷关联分析的缺陷定位方法是指通过发
【技术保护点】
【技术特征摘要】
1.基于软件缺陷关联分析的软件缺陷定位方法,其特征在于,包括如下步骤:S1:通过对软件源代码文件执行词法分析,创建词法标记的向量,剔除不必要的词汇,建立源代码语料库SCSet,S2:根据源代码文件的长度,计算每个源代码文件的长度得分G(#terms).S3:对源代码语料库中的所有文件构建索引向量,形成Index
i
文件库;S4:从软件缺陷报告的标题和描述中提取单个词汇,构建缺陷报告的查询Query;S5:将文件索引Index和缺陷报告查询Query转换为特征向量和并采用TF
‑
IDF方法赋予权值;S6:使用向量空间模型,计算缺陷报告的查询和源代码文档之间的相似度得分rVSMScore;S7:根据S6的相似度得分对每个源代码文件按照得分高低进行排序,返回一个源代码文件序列FileSet;S8:根据缺陷报告BugReport和挖掘的软件缺陷数据集,通过启发式的方法分析与缺陷报告存在缺陷关联的历史缺陷报告集合HistorySet;S9:根据版本控制系统的修复提交日志FixCommit,通过启发式的方法提取关联缺陷报告集合的修复文件;S10:根据S9得到的文件序列,返回关联缺陷的修复文件序列RelevantSet;S11:对S7和S10返回的源代码文件序列FileSet和修复文件序列RelevantSet进行加权计算,输出缺陷定位的源代码文件序列FixSet,终止算法。2.根据权利要求1所述基于软件缺陷关联分析的缺陷定位方法,其特征在于,所述步骤S1中,通过对软件源代码文件执行词法分析,创建词法标记的向量,剔除不必要的词汇,建立源代码语料库SCSet,步骤S1具体包括:S101:对每个源代码文件执行词法分析,并创建词法记号的向量;S102:删除词法记号中的关键字,分隔符,停顿词;S103:分割源代码中一些由分词组成的变量;S104:使用波特词干提取算法进行一些分词的后缀剥离;1)所述步骤S104中,使用波特词干提取算法进行一些分词的后缀剥离,具体表现如下:S10401:处理分词中的复数,以及ed和ing结束的单词;S10402:如果分词中包含元音,并且以y结尾,将y改为i;S10403:将双后缀的分词映射为单后缀;S10404:处理
‑
ic
‑
,
‑
full,
‑
ness,
‑
ative,
‑
alize等等后缀;2)所述步骤S104中,使用波特词干提取算法进行一些分词的后缀剥离,最终形成语料库SCSet,其中SCSet表示为:SCSet={d1,d2,...,d
n
}d
i
={t1,t2,...,t
n
}其中,d代表单个源代码文件,n代表源代码文件个数,t代表源代码文件中的单个分词。3.根据权利要求1所述的基于软件缺陷关联分析的缺陷定位方法,其特征在于,所述步
骤S2中,根据源代码文件的长度,使用logistic函数计算每个源代码文件的长度得分G(#terms),确保较长的文档在排序时得到较高的分数,具体的计算公式如下:其中#terms表示某个文档中分词术语的总数,使用了#terms的归一化值作为函数e
‑
x
的输入,归一化函数N(x)的定义如下:其中,假设x是一组数据,x
max
和x
min
分别是x中的最大值和最小值。4.根据权利要求1所述的基于软件缺陷关联分析的缺陷定位方法,其特征在于,所述步骤S4中,从软件缺陷报告的标题和描述中提取单个词汇,构建查询Query,具体步骤如下:S401:从软件缺陷报告的标题和描述中提取单个词汇;S402:删除词汇中的关键字,分隔符,停顿词等;S403:使用波特词干提取算法对所有的词汇进行后缀剥离;S404:根据S403得到的词汇文档q,构建查询向量Query;所述步骤S404中,构建查询Query的方法具体如下:1)根据词频(tf)和反文档频率(idf)计算词权值w:,其中,f
tq
指分词t在查询文档q中出现的次数,n
t
指包含分词t的文档数量,#docs表示缺陷语料库中文档的总数;2)再根据词权值w,得到每个缺陷的查询向量其计算方式如下:其计算方式如下:5.根据权利要求1所述的基于软件缺陷关联分析的缺陷定位方法,其特征在于,所述步骤S5中,对源代码语料库中的所有文件构建索引向量,形成Index
i
文件库,表示为:Index
i
={Index1,Index2,...,Index
n
}其中n代表源代码文档的个数,单个文件的向量Index
d
的计算方式如下:1)根据词频(tf)和反文档频率(idf)计算词权值w:其中,f
td
指分词...
【专利技术属性】
技术研发人员:刘烃,马雪,崔笛,徐茜,刘靖雯,钟定洪,
申请(专利权)人:西安交通大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。