Skip to main content
QUICK REVIEW

[论文解读] Issues with SZZ: An empirical assessment of the state of practice of defect prediction data collection.

Steffen Herbold, Alexander Trautsch|arXiv (Cornell University)|Nov 20, 2019
Software Engineering Research被引用 21
一句话总结

本文实证评估了SZZ算法——缺陷预测研究中用于标注引入缺陷的提交的行业标准方法——发现其存在显著的不准确性:仅有50%的SZZ识别出的修复缺陷提交实际上是在修复缺陷,且在发布级别缺陷标注中的假阳性率几乎与真阳性率相当。本研究通过人工验证和改进启发式方法提升了缺陷标注的准确性,揭示了广泛使用的缺陷预测数据集中存在的关键缺陷。

ABSTRACT

Defect prediction research has a strong reliance on published data sets that are shared between researchers. The SZZ algorithm is the de facto standard for collecting defect labels for this kind of data and is used by most public data sets. Thus, problems with the SZZ algorithm may have a strong indirect impact on almost the complete state of the art of defect prediction. Recent research uncovered potential problems in different parts of the SZZ algorithm. Within this article, we provide an extensive empirical analysis of the defect labels created with the SZZ algorithm. We used a combination of manual validation and adopted or improved heuristics for the collection of defect data to establish ground truth data for bug fixing commits, improved the heuristic for the identification of inducing changes for defects, as well as the assignment of bugs to releases. We conducted an empirical study on 398 releases of 38 Apache projects and found that only half of the bug fixing commits determined by SZZ are actually bug fixing. Moreover, if a six month time frame is used in combination with SZZ to determine which bugs affect a release, one file is incorrectly labeled as defective for every file that is correctly labeled as defective. In addition, two defective files are missed. We also explored the impact of the relatively small set of features that are available in most defect prediction data sets, as there are multiple publications that indicate that, e.g., churn related features are important for defect prediction. We found that the difference of using more features is negligible.

研究动机与目标

  • 评估SZZ算法在缺陷预测研究中作为事实标准生成缺陷标签的准确性。
  • 识别并修正SZZ在标注引入缺陷的提交及将缺陷分配至发布版本方面的方法论缺陷。
  • 评估现有缺陷预测数据集中特征集有限性的影响,特别是与变更量相关的特征。
  • 通过人工验证和改进的启发式方法,建立更可靠的缺陷预测数据基准。

提出的方法

  • 在38个Apache项目的398个发布版本中开展实证研究,以评估SZZ在缺陷标注准确性方面的表现。
  • 通过人工验证建立缺陷修复提交的基准真实情况,纠正SZZ的误标。
  • 利用基于时间和基于变更的准则,改进识别引入缺陷变更及将缺陷分配至发布版本的启发式方法。
  • 应用六个月的时间窗口,评估哪些缺陷影响特定发布版本,将SZZ的输出与基准真实情况进行比较。
  • 评估特征集大小对预测性能的影响,特别关注与变更量相关的特征。
  • 量化SZZ标注数据中的假阳性和假阴性率,以衡量其可靠性。

实验结果

研究问题

  • RQ1在实际应用中,SZZ识别出的缺陷修复提交的准确性如何,其中实际修复缺陷的比例是多少?
  • RQ2在使用SZZ将文件标注为某次发布中缺陷文件时,假阳性和假阴性的比率是多少?
  • RQ3用于将缺陷分配至发布版本的不同启发式方法如何影响标注的准确性?
  • RQ4现有缺陷预测数据集中特征集有限性在多大程度上影响了预测性能?
  • RQ5与其它特征相比,变更量相关特征对缺陷预测的影响有多大?

主要发现

  • SZZ标注为缺陷修复的提交中,仅有50%实际上是在修复缺陷,表明假阳性率极高。
  • 在使用六个月窗口确定某次发布中哪些文件为缺陷文件时,每有一个文件被正确标注为缺陷,就有一个文件被错误地标记为缺陷。
  • 在评估过程中,SZZ完全遗漏了两个缺陷文件,表明存在不可忽视的假阴性率。
  • 在特征集较多的数据集与特征集较少的数据集之间,预测性能的差异可忽略不计,表明扩展特征集的收益有限。
  • 本研究证实SZZ的缺陷标注过程存在根本性缺陷,严重削弱了大多数现有缺陷预测数据集的可靠性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。