少训练多修复:基于零样本学习重访自动化程序修复
软件工程
2024-12-06 v3
摘要
由于自动化程序修复(APR)前景广阔,研究者提出了多种 APR 技术,包括基于启发式、基于模板和基于约束的技术。在此类经典 APR 技术中,基于模板的技术被广泛认为是当前最优(state of the art)。然而,此类基于模板的技术需要预定义模板来执行修复,其效果因此受限。为此,研究者利用深度学习的最新进展来进一步改进 APR。此类基于学习的技术将 APR 视为神经机器翻译问题,使用有缺陷/已修复的代码段作为翻译的源/目标语言。如此,这类技术严重依赖大量高质量的错误修复提交,而构建这些提交成本极高且具挑战性。此外,这些基于学习的技术的编辑多样性受限于其训练数据集中的可用错误修复。因此,本文旨在重访基于学习的 APR 问题,并提出 AlphaRepair,以直接利用大型预训练代码模型通过零样本学习进行 APR。我们的核心见解是:与其建模修复编辑应是什么样子,不如基于上下文信息直接预测正确代码是什么。我们已将 AlphaRepair 实现为基于近期 CodeBERT 模型的实用多语言 APR 工具。我们在广泛使用的 Defects4J 基准上的结果表明,AlphaRepair 可大幅优于当前最优 APR 工具。我们还研究了不同设计选择的影响,并表明 AlphaRepair 在较新版本的 Defects4J(2.0)上表现更优,比最佳基线多修复 3.3 倍,表明 AlphaRepair 有可能避免现有基于学习技术的数据集过拟合问题。
引用
@article{arxiv.2207.08281,
title = {Less Training, More Repairing Please: Revisiting Automated Program Repair via Zero-shot Learning},
author = {Chunqiu Steven Xia and Lingming Zhang},
journal= {arXiv preprint arXiv:2207.08281},
year = {2024}
}
备注
Accepted at ESEC/FSE 2022