CURE:用于自动程序修复的代码感知神经机器翻译
软件工程
2021-09-03 v4 人工智能
机器学习
摘要
自动程序修复(APR)对提升软件可靠性至关重要。近来,神经机器翻译(NMT)技术已被用于自动修复软件缺陷。尽管前景可期,这些方法存在两个主要局限:其搜索空间常不包含正确修复,且其搜索策略忽略诸如严格代码语法之类的软件知识。由于这些局限,现有基于 NMT 的方法表现不及最佳的基于模板的方法。我们提出 CURE,一种新颖的基于 NMT 的 APR 技术,具有三项主要创新。首先,CURE 在 APR 任务之前于大型软件代码库上预训练编程语言(PL)模型,以学习类开发者的源代码。其次,CURE 设计了一种新的代码感知搜索策略,通过聚焦于可编译补丁以及与缺陷代码长度相近的补丁,找到更多正确修复。最后,CURE 使用子词分词技术生成更小的搜索空间,其中含有更多正确修复。我们在两个广泛使用的基准上的评估表明,CURE 正确修复了 57 个 Defects4J 缺陷和 26 个 QuixBugs 缺陷,在两个基准上均优于所有现有 APR 技术。
引用
@article{arxiv.2103.00073,
title = {CURE: Code-Aware Neural Machine Translation for Automatic Program Repair},
author = {Nan Jiang and Thibaud Lutellier and Lin Tan},
journal= {arXiv preprint arXiv:2103.00073},
year = {2021}
}
备注
This paper is accepted by 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE)