1.结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于包括如下步骤:步骤(1)给定n个软件缺陷报告集合R=(R1,R2,...,Rn),将其中每个缺陷报告表示成Ri=
步骤(2)给定m个源代码文件集合S=(S1,S2,...,Sm),利用JDT解析每一个源代码文件,将每一个源代码文件处理成Sj=
2,...,m,其中className表示源代码文件的类名,method表示每个源代码文件的方法集合,property表示源代码文件的属性名集合,comment表示源代码文件的注释集合;
步骤(3)对每一个缺陷报告Ri和源代码文件Sj进行预处理;
步骤(4)将经过预处理后所有的缺陷报告和所有的源代码文件组成一个语料库Q=(R1,R2...,Rn,S1,S2,...,Sm),并用l表示语料库中包含的单词个数,然后将每个缺陷报告与每个源代码文件组对,即pair=
步骤(5)构建平滑逆频率模型,得到平滑逆频率模型的分数值SIFScore;
首先使用GloVe词嵌入技术对语料库Q中的单词进行训练,得到每个单词Wk,k=1,
2,...,l的词向量
然后计算每个单词的权重ω(Wk);在此基础上分别计算Ri和Sj对应的句向量 和最后计算每一组句向量 之间的余弦相似度作为平滑逆频率模型的分数值SIFScore;
步骤(6)计算表面词汇相似度分数VSMScore;
步骤(7)计算缺陷的修复历史记录分数RScore;
步骤(8)计算缺陷修复频率分数:将软件缺陷报告提交之前源代码文件被修复的次数记为FScore;
步骤(9)计算协同过滤分数CFScore;
步骤(10)将多个不同层面的缺陷报告与源代码文件的分数进行线性组合形成一个最终得分;
finalScore=α1*SIFScore+α2*VSMScore+α3*RScrore+α4*FScore+α5*CFScore 公式10步骤(11)利用粒子群优化算法优化5个分数的线性权重;
步骤(12)根据得到的最优权重计算目标缺陷报告和所有的源代码文件的finalScore并进行排序,finalScore最高的源代码文件最可能是导致该缺陷出现的源代码文件;
步骤(6)具体实现如下:
首先利用TF‑IDF计算每一个Ri和Sj在语料库中第k个单词的权重tfidfi,k和tfidfj,k,从而Ri的句向量表示为 Sj的句向量表示为然后计算每一组句向量对 之间的余弦相似度作为VSMScore;
步骤(7)具体实现如下
令SR_month为最新的修复时间,R_month为当前软件缺陷报告的创建时间,缺陷的修复历史记录分数定义为:步骤(9)具体实现如下:
设BRSi(BR,BS)为第i条记录Ri创建之前的所有已修复的软件缺陷报告BR以及对应的源代码文件BS的集合,若Sj∈BS,则对应存在缺陷报告Rk∈BR,软件缺陷报告Ri与Sj的协同过滤分数CFScore定义为Ri与Rk的相似度:其中, 和 分别表示Ri和Rk经过SIF计算出的句向量。
2.根据权利要求1所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(3)具体实现如下:首先对Ri中的description和summary以及Sj中的所有元素进行提取,然后用空格对Ri和Sj中提取的信息初步区分成单词,并删除其中的符号;
然后基于停用词列表移除其中的停用词,将初步区分后单词中的组合词再次进行分离,得到最终的单词集合;
最后将单词集合中的每个单词转为原型。
3.根据权利要求1所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(11)具体优化实现如下:
11‑1.确定粒子群优化算法的适应度函数,使用两个评估指标:ObjectFun=MAP+MRR 公式11
其中MAP是广泛用于信息检索的标准度量,即平均准确率;MRR是每个软件缺陷报告的第一个正确定位的缺陷源代码文件的排名倒数累加的平均值;
11‑2.设置种群数量P,P=20,随机初始化每个个体的速度Vi=(vi1,vi2,…,vid)和位置Xi=(xi1,xi2,…,xid),其中d=5为需要优化的权重的个数;根据适应度函数确定每个个体的当前最优位置pbesti和种群的全局最优位置gbest;
11‑3.在第t+1次迭代时,更新每个粒子的速度和位置,公式如下:其中w为惯性权重w∈[0.1,0.9],c1和c2是学习因子,设置为2,rand1和rand2为两个随机值,在[0,1]范围内取值;
11‑4.计算每个个体的适应度函数值,并更新每个个体的当前最优位置pbesti和种群的全局最优位置gbest;
11‑5.重复执行步骤11‑1到步骤11‑4,直至达到最大迭代次数MaxIter,设定为1000;最后获得最优的权重组合α1,α2,α3,α4,α5。
4.根据权利要求3所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(5)具体实现如下:
5‑1.使用GloVe词嵌入技术对语料库中的单词进行训练,得到每个单词Wk,k=1,2,...,l的词向量
5‑2.计算每个单词Wk的权重ω(Wk):
其中,α为常数,设置为0.0001,p(Wk)表示单词Wk出现的概率;
5‑3.句向量计算,分别计算Ri和Sj对应的句向量 和 并去除最大主成分, 的实现形式如下:其中, 为去除最大主成分前的句向量,|Ri|表示Ri中包含的单词个数,μ为 经过奇T异值分解得到的特征矩阵,μ为μ的转置矩阵, 为 的最大主成分向量;
5‑4.计算每一组句向量 之间的余弦相似度作为SIFScore:
5.根据权利要求4所述的结合句嵌入和粒子群优化算法的软件缺陷定位方法,其特征在于步骤(6)具体实现如下:
6‑1.利用TF‑IDF计算语料库中每一个Ri和Sj中第k,k=1,2,...,l个单词的权重tfidfi,k和tfidfj,k:tfidfi或j,k=tfi或j,k*idfk 公式5其中,tfi,k和tfj,k分别表示Ri和Sj中第k个单词的频率,dfk表示包含第k个单词的文档的数量;从而Ri的句向量表示为 Sj的句向量表示为Ri句向量中的权重值为0时,说明该权重对应的单
词不属于该Ri;同理Sj句向量中的权重值为0时,说明该权重对应的单词不属于该Sj;
6‑2.计算每一组句向量 之间的余弦相似度作为VSMScore: