Skip to main content
QUICK REVIEW

[论文解读] E-APR: Mapping the Effectiveness of Automated Program Repair

Aldeida Aleti, Matías Martínez|arXiv (Cornell University)|Feb 10, 2020
Software Testing and Debugging Techniques参考文献 66被引用 5
一句话总结

E-APR 提出了一种新颖的实例空间分析框架,通过识别解释修复难度的程序特征,客观评估自动化程序修复(APR)技术。它在特征空间中可视化存在错误的程序,以揭示 APR 工具的优势、劣势以及泛化能力的局限性,表明数据集多样性与特征相关性对有效性具有显著影响。

ABSTRACT

Automated Program Repair (APR) is a fast growing area with numerous new techniques being developed to tackle one of the most challenging software engineering problems. APR techniques have shown promising results, giving us hope that one day it will be possible for software to repair itself. In this paper, we focus on the problem of objective performance evaluation of APR techniques. We introduce a new approach, Explaining Automated Program Repair (E-APR), which identifies features of buggy programs that explain why a particular instance is difficult for an APR technique. E-APR is used to examine the diversity and quality of the buggy programs used by most researchers, and analyse the strengths and weaknesses of existing APR techniques. E-APR visualises an instance space of buggy programs, with each buggy program represented as a point in the space. The instance space is constructed to reveal areas of hard and easy buggy programs, and enables the strengths and weaknesses of APR techniques to be identified.

研究动机与目标

  • 为解决现有自动化程序修复(APR)技术评估缺乏基于特征的客观方法,而不仅依赖性能指标的问题。
  • 识别与修复难度相关的程序特征,从而更深入理解 APR 技术的局限性。
  • 评估现有 APR 数据集(如 Defects4J)的多样性与代表性,以评估其泛化潜力。
  • 使实践者能够基于机器学习驱动的选择模型,为特定软件系统选择最合适的 APR 技术。
  • 提供一种系统化、数据驱动的方法,用于分析 APR 效果,超越孤立的基准测试结果。

提出的方法

  • E-APR 构建一个实例空间,其中每个存在错误的程序均根据提取的静态与动态代码特征表示为一个点。
  • 它采用受 Rice 框架及机器学习与基于搜索的测试领域先前研究启发的实例空间分析方法,可视化修复难度高或低的区域。
  • 该方法使用多标签分类来基于程序的特征配置预测哪些 APR 技术可能在给定错误程序上成功。
  • 它利用现有的 APR 基准(如 Defects4J),并提取代码复杂度、抽象语法树(AST)结构和测试覆盖率等特征,以表征每个错误实例。
  • 该方法包含统计分析,用于关联特征与修复结果,并识别不同技术在成功或失败模式上的规律。
  • 它与现有工具(如 Gzoltar 和 Repairnator)集成,以提取并验证补丁的正确性及过拟合风险。

实验结果

研究问题

  • RQ1RQ1:存在错误的程序的哪些特征与自动化程序修复技术(APRTs)的有效性相关?为何某些实例更难修复?
  • RQ2RQ2:现有 APR 数据集(如 Defects4J)在影响 APRT 性能的特征方面有多大的多样性?它们是否足以对泛化能力进行压力测试?
  • RQ3RQ3:基于程序特征,机器学习模型能否有效选择最适合特定错误程序的 APRT?其在精确率、召回率和 F1 分数方面的表现如何?

主要发现

  • E-APR 发现,代码复杂度、AST 深度和测试覆盖率等代码特征与修复难度显著相关,解释了为何某些 APRT 在特定错误上会失败。
  • 该研究显示,现有 APR 数据集(如 Defects4J)并非均匀多样化;它们包含相似错误实例的聚类,限制了基于这些数据集训练的 APRT 的泛化能力。
  • 使用 E-APR 实例空间的多标签分类模型在预测哪种 APR 技术最可能在给定错误上成功方面,取得了高达 0.85 的 F1 分数。
  • 该方法识别出实例空间中的‘困难’区域,大多数 APRT 在这些区域失败,通常由于过拟合或语义不匹配,同时突出了测试预言机局限性的作用。
  • E-APR 表明,补丁过拟合在复杂控制流或嵌套条件语句等代码结构中更为普遍,而这些结构在当前基准中尚未得到充分探索。
  • 该框架使实践者能够根据程序特征选择 APRT,减少试错过程,并在真实环境中提高修复成功率。

更好的研究,从现在开始

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

无需绑定信用卡

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