Skip to main content
QUICK REVIEW

[论文解读] Empirical Review of Java Program Repair Tools: A Large-Scale Experiment on 2,141 Bugs and 23,551 Repair Attempts

Thomas Durieux, Fernanda Madeiral|arXiv (Cornell University)|May 28, 2019
Software Testing and Debugging Techniques参考文献 44被引用 5
一句话总结

这项大规模实证研究在5个缺陷基准(包括Defects4J)上对11个基于测试套件的Java程序修复工具进行了评估,共进行了23,551次修复尝试。研究发现,工具的整体修复能力仅为21%,在Defects4J上的修复成功率显著更高(47%),而在其他基准上的成功率则为10%至30%不等,并识别出导致生成修复补丁失败的六个关键原因,例如故障定位错误和多个故障位置。

ABSTRACT

In the past decade, research on test-suite-based automatic program repair has grown significantly. Each year, new approaches and implementations are featured in major software engineering venues. However, most of those approaches are evaluated on a single benchmark of bugs, which are also rarely reproduced by other researchers. In this paper, we present a large-scale experiment using 11 Java test-suite-based repair tools and 5 benchmarks of bugs. Our goal is to have a better understanding of the current state of automatic program repair tools on a large diversity of benchmarks. Our investigation is guided by the hypothesis that the repairability of repair tools might not be generalized across different benchmarks of bugs. We found that the 11 tools 1) are able to generate patches for 21% of the bugs from the 5 benchmarks, and 2) have better performance on Defects4J compared to other benchmarks, by generating patches for 47% of the bugs from Defects4J compared to 10-30% of bugs from the other benchmarks. Our experiment comprises 23,551 repair attempts in total, which we used to find the causes of non-patch generation. These causes are reported in this paper, which can help repair tool designers to improve their techniques and tools.

研究动机与目标

  • 调查自动程序修复工具在不同缺陷基准上的性能是否具有泛化能力。
  • 识别并分析在多样化基准上生成修复补丁失败的根本原因。
  • 在常用Defects4J基准之外,对修复工具进行全面的实证评估。
  • 开发并发布可重用的执行框架RepairThemAll,以标准化和简化大规模修复实验。

提出的方法

  • 设计并执行了一项大规模实验,对来自5个不同基准的2,141个缺陷,使用11个基于测试套件的修复工具进行评估。
  • 开发了RepairThemAll,一个统一框架,用于抽象和自动化不同基准上修复工具的执行。
  • 执行了23,551次修复尝试,系统性地记录每个工具-缺陷对的结果和失败原因。
  • 通过将非补丁生成归类为六种主要原因,分析了失败模式,包括错误的故障定位和多个故障位置。
  • 使用标准化的评估流程,确保工具和基准之间结果的可重现性和一致性。
  • 收集并分析了所有工具-基准组合的修复能力、补丁正确性和执行时间数据。

实验结果

研究问题

  • RQ1修复工具在不同缺陷基准上的表现是否一致,还是对特定基准存在过拟合?
  • RQ2哪些主要因素导致修复工具无法生成有效补丁?
  • RQ3修复工具在Defects4J上的表现与在其他基准上的表现相比如何?
  • RQ4基准选择在评估修复工具有效性时,有多大程度上构成混淆因素?
  • RQ5失败原因是否可以系统性地分类,并用于指导未来工具的改进?

主要发现

  • 11个修复工具在所有基准的2,141个缺陷中,仅成功生成了21%的补丁,表明整体修复能力有限。
  • Defects4J的修复成功率显著更高(47%),而其他基准的修复成功率则在10%至30%之间。
  • 错误的故障定位是失败的主要原因,导致工具无法识别需要修改的正确代码位置。
  • 单个缺陷中存在多个故障位置是重大障碍,因为大多数工具假设每个缺陷仅包含一个故障。
  • 工具特有的限制,如搜索空间约束和语法修复操作符,导致30%的非补丁情况失败。
  • RepairThemAll框架成功实现了所有工具和基准的可重现执行,促进了大规模分析。

更好的研究,从现在开始

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

无需绑定信用卡

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