中文

基于神经机器翻译在真实场景中学习缺陷修复补丁的实证研究

软件工程 2019-05-22 v2

摘要

代码仓库中有数百万个带有大量缺陷修复的开源项目。软件开发历史的这种激增可被用于学习如何修复常见编程错误。为探索这一潜力,我们进行了一项实证研究,以评估使用神经机器翻译(Neural Machine Translation)技术为真实缺陷学习修复补丁的可行性。首先,我们从托管于GitHub的项目的变更历史中挖掘数百万个缺陷修复,以提取此类修复的有意义示例。接下来,我们对有缺陷代码及相应修复代码进行抽象,并用其训练一个能够将缺陷代码翻译为其修复版本的编码器—解码器模型。在我们的实证研究中发现,这样的模型能够修复真实场景中数千个独特的有缺陷方法。总体而言,根据我们允许其生成的候选补丁数量,该模型能够在9%—50%的案例中预测出开发者生成的修复补丁。此外,该模型能够模拟多种不同的抽象语法树操作,并在瞬间生成候选补丁。

关键词

引用

@article{arxiv.1812.08693,
  title  = {An Empirical Study on Learning Bug-Fixing Patches in the Wild via Neural Machine Translation},
  author = {Michele Tufano and Cody Watson and Gabriele Bavota and Massimiliano Di Penta and Martin White and Denys Poshyvanyk},
  journal= {arXiv preprint arXiv:1812.08693},
  year   = {2019}
}

备注

Accepted to the ACM Transactions on Software Engineering and Methodology