中文

CODIT:基于树结构神经模型的代码编辑

软件工程 2022-04-21 v3

摘要

开发者日常的代碼编辑往往具有重复性,且经常复用已有的代码元素。许多研究者试图通过从特定变更模板中学习来自动化重复的代码改动,但这些模板适用范围有限。深度神经网络的发展以及大量开源演化数据的可得性,为直接从实际代码中自动学习这些模板提供了可能。然而,基于深度神经网络的代码变更及一般代码建模带来了一些特定问题,需要研究界给予专门关注。例如,与自然语言相比,源代码的词汇量可能显著更大。此外,良好的代码变更不应破坏其语法结构。因此,若不将方法适配到源代码领域,直接部署最先进的神经网络模型会产生次优结果。为此,我们提出了一种新颖的基于树的神经网络系统,用于建模源代码变更并从实际代码中学习代码变更模式。具体而言,我们提出了一种基于树的神经机器翻译模型,以学习代码中变更的概率分布。我们实现了一个变更建议引擎 CODIT,并用超过 24k 个真实世界变更训练该模型,在 5k 个补丁上进行了评估。我们的评估显示了 CODIT 在学习和建议补丁方面的有效性。CODIT 还能从缺陷修复补丁中学习特定的缺陷修复模式,并能在 Defects4J 的 80 个缺陷中修复 25 个。

关键词

引用

@article{arxiv.1810.00314,
  title  = {CODIT: Code Editing with Tree-Based Neural Models},
  author = {Saikat Chakraborty and Yangruibo Ding and Miltiadis Allamanis and Baishakhi Ray},
  journal= {arXiv preprint arXiv:1810.00314},
  year   = {2022}
}