Java 真实缺陷的自动修复:基于 Defects4J 数据集的大规模实验
软件工程
2021-11-12 v1
摘要
Defects4J 是一个大型、经同行评审的结构化真实世界 Java 缺陷数据集。Defects4J 中的每个缺陷都附带一个测试套件以及至少一个触发该缺陷的失败测试用例。在本文中,我们报告了一项实验,以探索基于测试套件的自动修复在 Defects4J 上的有效性。我们的实验结果表明,所考虑的最先进修复方法能够为 224 个缺陷中的 47 个生成补丁。然而,这些补丁仅满足测试套件,这意味着它们通过了测试套件,并且可能超出测试套件满足这一正确性标准而实际上是不正确的。我们手动分析了 84 个不同的补丁以评估其真实正确性。总体而言,有 9 个真实的 Java 缺陷可以通过基于测试套件的修复被正确修复。该分析表明,基于测试套件的修复受困于欠规范缺陷,对于此类缺陷,平凡或不正确的补丁仍可通过测试套件。就实际适用性而言,找到一个补丁平均需要 14.8 分钟。该实验在科学网格上完成,总计 17.6 天的计算时间。所有修复系统和实验结果均在 Github 上公开,以促进未来关于自动修复的研究。
引用
@article{arxiv.1811.02429,
title = {Automatic Repair of Real Bugs in Java: A Large-Scale Experiment on the Defects4J Dataset},
author = {Matias Martinez and Thomas Durieux and Romain Sommerard and Jifeng Xuan and Martin Monperrus},
journal= {arXiv preprint arXiv:1811.02429},
year = {2021}
}
备注
Empirical Software Engineering, Springer, 2016. arXiv admin note: substantial text overlap with arXiv:1505.07002