一句话:提出 SeAPR,利用 APR 过程中早先的补丁执行信息动态提升现有自动程序修复技术的补丁验证效率。
自动程序修复是软件生命周期的重要环节,但真实缺陷程序常会产生大量候选补丁,每个补丁都需用原始测试套件验证,计算成本极高。本文提出 SeAPR(Self-Boosted Automated Program Repair),首个通用技术,能在 APR 过程中利用早先补丁执行信息,直接即时地增强现有 APR 技术。其核心直觉是:与早先高质量补丁相似的补丁应被促进,与低质量补丁相似的补丁应被降级,从而更快找到期望补丁。在 13 个先进 APR 工具上的实验表明,SeAPR 能以可忽略的开销显著减少补丁执行次数;研究还分析了不同配置的影响,并证明 SeAPR 可利用其他 APR 工具对同一缺陷程序的历史补丁执行信息进一步提速当前工具。
Program repair is an integral part of every software system's life-cycle but can be extremely challenging. To date, various automated program repair (APR) techniques have been proposed to reduce manual debugging efforts. However, given a real-world buggy program, a typical APR technique can generate a large number of patches, each of which needs to be validated against the original test suite, incurring extremely high computation costs. Although existing APR techniques have already leveraged various static and/or dynamic information to find the desired patches faster, they are still rather costly. In this work, we propose SeAPR (Self-Boosted Automated Program Repair), the first general-purpose technique to leverage the earlier patch execution information during APR to directly boost existing APR techniques themselves on-the-fly. Our basic intuition is that patches similar to earlier high-quality/low-quality patches should be promoted/degraded to speed up the detection of the desired patches. The experimental study on 13 state-of-the-art APR tools demonstrates that, overall, SeAPR can substantially reduce the number of patch executions with negligible overhead. Our study also investigates the impact of various configurations on SeAPR. Lastly, our study demonstrates that SeAPR can even leverage the historical patch execution information from other APR tools for the same buggy program to further boost the current APR tool.