KNOD:用于自动程序修复的领域知识蒸馏树解码器
软件工程
2023-04-18 v3 人工智能
摘要
自动程序修复 (APR) 通过为有缺陷的程序自动生成补丁来提高软件可靠性。最近的 APR 技术利用深度学习 (DL) 构建模型,以学习从现有补丁和代码语料库中生成补丁。尽管前景广阔,基于 DL 的 APR 技术仍受困于补丁空间中大量语法或语义不正确的补丁。这些补丁常常违反源代码的语法和语义领域知识,因此无法成为修复缺陷的正确补丁。我们提出了一种基于 DL 的 APR 方法 KNOD,它以直接且全面的方式融入领域知识来指导补丁生成。KNOD 有两大创新点,包括:(1) 一种新颖的三阶段树解码器,它根据固有的树结构直接生成已修补代码的抽象语法树;(2) 一种新颖的领域规则蒸馏,它利用语法和语义规则以及师生分布,在训练和推理阶段将领域知识显式注入解码过程。我们在三个广泛使用的基准上评估了 KNOD。KNOD 在 Defects4J v1.2 上修复了 72 个缺陷,在 QuixBugs 上修复了 25 个缺陷,在额外的 Defects4J v2.0 基准上修复了 50 个缺陷,优于所有现有的 APR 工具。
引用
@article{arxiv.2302.01857,
title = {KNOD: Domain Knowledge Distilled Tree Decoder for Automated Program Repair},
author = {Nan Jiang and Thibaud Lutellier and Yiling Lou and Lin Tan and Dan Goldwasser and Xiangyu Zhang},
journal= {arXiv preprint arXiv:2302.01857},
year = {2023}
}
备注
This paper is accepted by 2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE)