GAMMA:通过掩码预测重访基于模板的自动化程序修复
摘要
自动化程序修复(APR)旨在无需人工干预地修复软件缺陷,基于模板的APR已被广泛研究并取得了有前景的结果。然而,对于基于模板的APR而言,选择合适的供体代码具有挑战性,而供体代码是生成候选补丁的重要修复要素。即便修复模式正确,不恰当的供体代码也可能导致生成看似合理实则错误的补丁,从而限制修复性能。本文旨在重访基于模板的APR,并提出GAMMA,以直接利用大型预训练语言模型生成供体代码。我们的核心见解是,不必在本地缺陷文件中检索供体代码,而是可以通过完形填空任务,基于上下文代码片段与修复模式直接预测正确的代码词元。具体而言,(1)GAMMA修订了最先进的基于模板的APR技术(即TBar)中的多种修复模板,并将其转换为掩码模式。(2)GAMMA采用预训练语言模型以填空任务的形式为掩码代码预测正确代码。实验结果表明,GAMMA在Defects4J-v1.2上正确修复了82个缺陷,相较此前的基于模板的最优方法TBar与基于学习的方法Recoder分别提升了20.59%(14个缺陷)与26.15%(17个缺陷)。此外,GAMMA在额外的Defects4J-v2.0与QuixBugs上分别修复了45个与22个缺陷,表明GAMMA在解决数据集过拟合问题上的泛化能力。我们还证明采用其他预训练语言模型可带来显著进展,例如基于CodeBERT与ChatGPT的GAMMA能够在Defects4J-v1.2上分别修复80个与67个缺陷,表明GAMMA的可扩展性。总体而言,我们的研究凸显了在修复模式之上采用预训练模型生成正确补丁的光明前景。
引用
@article{arxiv.2309.09308,
title = {GAMMA: Revisiting Template-based Automated Program Repair via Mask Prediction},
author = {Quanjun Zhang and Chunrong Fang and Tongke Zhang and Bowen Yu and Weisong Sun and Zhenyu Chen},
journal= {arXiv preprint arXiv:2309.09308},
year = {2023}
}
备注
Accepted to 38th IEEE/ACM International Conference on Automated Software Engineering (ASE2023)