中文

TransRepair:面向编译错误的上下文感知程序修复

软件工程 2022-10-11 v1

摘要

自动修复编译错误能够通过引导新手或 AI 程序员编写和调试代码,极大提升软件开发效率。近年来,基于学习的程序修复受到广泛关注,并成为实践中的最优方法(state-of-the-art, SOTA)。但其仍有很大改进空间。本文提出一种端到端方案 TransRepair,可同时定位 C 程序中的错误行并生成正确的替换代码。与同类方法相比,我们的方法考虑了错误代码的上下文以及诊断性编译反馈。随后,我们设计了一个基于 Transformer 的神经网络,从错误代码及其上下文和诊断反馈中学习修复方式。为提升 TransRepair 的有效性,我们从两个真实世界程序数据集和互联网中总结出 5 类共 74 种细粒度子类型的编译错误,并开发了一种程序损坏技术,合成了包含 1,821,275 个错误 C 程序的大规模数据集。大量实验表明,TransRepair 在单行修复准确率和完整修复准确率上均优于现有最优方法。进一步分析揭示了当前解决方案的优势与不足,为未来改进提供方向。

关键词

引用

@article{arxiv.2210.03986,
  title  = {TransRepair: Context-aware Program Repair for Compilation Errors},
  author = {Xueyang Li and Shangqing Liu and Ruitao Feng and Guozhu Meng and Xiaofei Xie and Kai Chen and Yang Liu},
  journal= {arXiv preprint arXiv:2210.03986},
  year   = {2022}
}

备注

11 pages, accepted to ASE '22