Page 133 - 《软件学报》2025年第4期
P. 133
曹帅 等: 深度学习在基于信息检索的缺陷定位中的应用综述 1539
P(i)× pos(i)
N ∑
AP = (2)
number o f positive instances
i=1
其中, N 是通过方法排名的文件数量. pos(i) 是排名列表的第 i 个文件是否是有缺陷的文件, 若是则值为 1, 若不是
则值为 0. P(i) 表示检索在位置 i 时的准确率. 计算公式为
number o f buggy files in top i
P(i) = (3)
i
2.2.2 平均倒数排名 MRR
MRR 平均倒数排名 [74] 计算的是在一组查询中, 第 1 个真正导致缺陷的代码模块在给出的缺陷列表中的排名
的均值, 能准确地评价缺陷定位方法的排序性能. 该指标数值越大, 表示缺陷定位方法排序性能越优秀. 比如
MRR=0.5, 则这个缺陷定位方法可以在前两个建议中找到一个正确的含有缺陷的代码模块. 计算公式为
1 n ∑ 1
MRR = (4)
n f-rank
j=1 j
F-measure =
其中, n 是缺陷报告的数量. f-rank 是第 j 个查询中的第 1 个可能导致此缺陷的代码模块的排名位置.
j
2.2.3 Top-N 准确度
Top-N 准确度 [75] 指标 (通常来说 N=1, 5, 10), 是指在缺陷定位返回的结果的前 N 个相关文件中, 至少包含一个
导致缺陷产生的程序模块的比例. 该指标在有些文献中, 也被称为 Accuracy@k. 该指标数值越大, 说明该缺陷定位
方法排序性能越好.
2.2.4 曲线下面积 AUC
AUC 是接收者操作特征曲线 ROC (receiver operating characteristic curve) 下的面积, 它是一个图形化曲线, 说
明了二元分类器系统的诊断能力, AUC 值介于 0.5 和 1 之间, 曲线下面积越接近 0.5 表示分类器效果越差, 越接近
1 表示缺陷定位方法分类效果越优秀.
2.2.5 准确率
true positive
Precision rate = (5)
true positive+ false positive
真阳性 (true positive) 是指缺陷定位的推荐列表中被预测为缺陷文件且真的导致缺陷发生的文件个数, false
positive 假阳性表示缺陷定位的推荐列表中被预测为缺陷文件但没有导致缺陷发生的文件个数. 准确率是推荐列
表中真阳性文件个数与所有推荐列表中文件个数的比值, 即代表查询中查询出真的导致缺陷发生的文件的查询准
确性. 该指标数值越大表示缺陷定位方法效果越好.
2.2.6 召回率
true positive
Recall rate = (6)
true positive+ false negative
召回率是推荐列表中导致缺陷的文件个数占所有代码库中所有导致缺陷的文件的比例. 该指标数值越大表示
缺陷定位方法越好.
2.2.7 F-measure
2× Precision×Recall
(7)
Precision+Recall
F-measure 平衡了准确率和召回率, 更全面地考虑了真阳性、假阳性和假阴性, 该指标数值越大表示缺陷定位
方法越好.
2.2.8 总 结
使用深度学习的基于信息检索的缺陷定位方法在数据集处理与测评数据集上和传统基于信息检索的缺陷定
位方法存在差异, 但对定位方法评估的指标与传统方法相同.