面向自动化程序修复的对抗补丁生成
软件工程
2023-09-06 v4
摘要
自动化程序修复近年来吸引了大量研究,催生了侧重于两个主要方向的多种技术:基于搜索的程序修复与基于语义的程序修复。前者常因庞大的搜索空间而面临挑战,导致难以识别正确解;后者则受限于底层语义分析器的能力,可扩展性不足。本文提出 NEVERMORE,一种受缺陷与修复之间对抗性启发的新颖基于学习的机制。NEVERMORE 构建于生成对抗网络(Generative Adversarial Networks, GAN)架构之上,并在历史缺陷修复数据上训练,以生成高度模仿人工修复的修复方案。我们在 500 个真实缺陷上的实证评估证明了 NEVERMORE 在缺陷修复中的有效性,其为 21.2% 的受检缺陷生成了与人工修复相匹配的修复。此外,我们在 Defects4J 数据集上评估 NEVERMORE,该方法为 4 个最先进(state-of-the-art, SOTA)基线未能解决的缺陷生成了修复。NEVERMORE 还修复了另外 8 个仅被这些基线中的部分方法解决的缺陷。最后,我们深入分析了输入与训练风格对 NEVERMORE 性能的影响,揭示了所选风格在何处影响模型的缺陷修复能力。
引用
@article{arxiv.2012.11060,
title = {Adversarial Patch Generation for Automated Program Repair},
author = {Abdulaziz Alhefdhi and Hoa Khanh Dam and Thanh Le-Cong and Bach Le and Aditya Ghose},
journal= {arXiv preprint arXiv:2012.11060},
year = {2023}
}