Skip to main content
QUICK REVIEW

[论文解读] Fault Localization Using Textual Similarities

Zachary P. Fry, Westley Weimer|arXiv (Cornell University)|Nov 13, 2012
Software Engineering Research参考文献 41被引用 7
一句话总结

本文提出了一种语言无关的静态故障定位技术,通过缺陷报告与源代码之间的文本相似性来缩小错误定位的搜索空间。通过分析报告和代码中的自然语言内容(例如,标识符、注释、堆栈跟踪),该方法使用结构化文档相似性度量对源文件进行排序,从而在650万行代码的三个大型程序中,针对5345个真实缺陷,将每个缺陷需检查的文件数量减少了91.5%。

ABSTRACT

Maintenance is a dominant component of software cost, and localizing reported defects is a significant component of maintenance. We propose a scalable approach that leverages the natural language present in both defect reports and source code to identify files that are potentially related to the defect in question. Our technique is language-independent and does not require test cases. The approach represents reports and code as separate structured documents and ranks source files based on a document similarity metric that leverages inter-document relationships. We evaluate the fault-localization accuracy of our method against both lightweight baseline techniques and also reported results from state-of-the-art tools. In an empirical evaluation of 5345 historical defects from programs totaling 6.5 million lines of code, our approach reduced the number of files inspected per defect by over 91%. Additionally, we qualitatively and quantitatively examine the utility of the textual and surface features used by our approach.

研究动机与目标

  • 通过提高故障定位效率,降低软件维护的高昂成本。
  • 减少开发人员在分类和定位用户报告缺陷时的工作量。
  • 开发一种可扩展的、语言无关的技术,无需测试用例、编译或执行轨迹。
  • 利用缺陷报告和源代码中的自然语言特征,提高定位准确性。
  • 在大型真实软件系统中,证明文本相似性在识别与故障相关的代码文件方面的有效性。

提出的方法

  • 基于自然语言内容(例如,注释、标识符、堆栈跟踪)将缺陷报告和源文件表示为结构化文档。
  • 应用文档相似性度量,通过词频和逆文档频率(TF-IDF)加权,计算缺陷报告与源文件之间的相似性。
  • 将文档分解为子结构(例如,方法名、注释、变量名),以提高相似性匹配的粒度和相关性。
  • 根据相似性得分对源文件进行排序,优先处理最可能包含故障的文件。
  • 仅使用静态、语法和文本特征——不使用测试用例、执行轨迹或动态分析。
  • 将相似性形式化为向量空间模型,通过报告和代码文本的TF-IDF加权向量之间的相似性进行计算。

实验结果

研究问题

  • RQ1缺陷报告和源代码中的自然语言特征是否可有效用于无测试用例的故障定位?
  • RQ2所提出的基于相似性的方法与基线技术(如堆栈跟踪分析)相比,在缩小搜索空间方面表现如何?
  • RQ3报告优先级或重复报告等因素在多大程度上影响故障定位模型的性能?
  • RQ4该方法的成功是否主要由自然语言实体中的词汇选择驱动,如假设所述?
  • RQ5轻量级、静态、语言无关的方法是否能在真实世界系统中实现最先进的故障定位准确率?

主要发现

  • 该方法在三个大型程序共650万行代码的5345个历史缺陷中,将每个缺陷的平均检查文件数减少了91.5%。
  • 该技术优于基线方法,如使用用户报告的堆栈跟踪,后者仅将搜索空间减少53.1%。
  • 模型性能未受报告优先级或重复报告数量的显著影响,表明这些元数据因素并非定位准确性的强预测因子。
  • 成功的主要驱动因素是自然语言实体中的人类词汇选择——支持了报告者与开发人员之间共享词汇可实现有效故障定位的假设。
  • 该方法在无需测试套件、编译或动态分析的情况下实现了最先进的性能,证明了其在真实世界维护场景中的可扩展性和实用性。
  • 实证评估证实,对源代码和报告进行结构化的文本分析已足够实现高精度的故障定位,即使在缺乏执行轨迹或测试用例的情况下亦然。

更好的研究,从现在开始

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

无需绑定信用卡

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