机器生成补丁与开发者提供补丁的差异几何?一项关于自动化程序修复技术所生成正确补丁的实证研究
摘要
背景:多年来,自动化程序修复(APR)因能降低修复缺陷的成本而备受学术界与工业界关注。然而,如何评估补丁正确性仍是一项开放挑战。应对该挑战的两种广泛采用方式——人工检查与基于自动生成测试的验证——均存在偏差(即分别受主观性与低精度所困)。目的:为解决此问题,我们提出对现有最先进 APR 技术所生成的正确补丁开展实证研究,旨在为未来的补丁评估提供指导。方法:为此,我们首先对近期技术在 Defects4J 基准上所报告的正确补丁进行文献综述(LR),并经健全性检查流程后收集到 177 个正确补丁。我们考察了这些机器生成的正确补丁如何达成与开发者提供补丁的语义等价但句法相异,这些补丁在不同项目与 APR 技术中如何分布,以及一个缺陷的特征如何影响其被生成的补丁。结果:我们的主要发现包括:1)我们无需像开发者那样精确修复缺陷,因为我们观察到 APR 技术生成的 25.4%(45/177)正确补丁在句法上不同于开发者提供的补丁;2)机器生成正确补丁在 Defects4J 项目与 APR 技术方面的分布存在分歧;3)对于补丁规模较大的缺陷,APR 技术倾向于生成不同于开发者所提供的补丁。结论:我们的研究不仅验证了先前研究的结论,也凸显了对未来补丁正确性评估研究的启示。
引用
@article{arxiv.1906.03447,
title = {How Different Is It Between Machine-Generated and Developer-Provided Patches? An Empirical Study on The Correct Patches Generated by Automated Program Repair Techniques},
author = {Shangwen Wang and Ming Wen and Liqian Chen and Xin Yi and Xiaoguang Mao},
journal= {arXiv preprint arXiv:1906.03447},
year = {2019}
}
备注
10+2 pages; accepted by The 13th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM), Proto de Galinhas, Brazil, 2019. arXiv admin note: text overlap with arXiv:1805.05983, arXiv:1602.05643 by other authors