基于神经符号变换网络的语义代码修复
人工智能
2017-10-31 v1 编程语言
软件工程
摘要
我们研究语义代码修复问题,可宽泛地定义为自动修复源代码中的非语法错误。过去大多数语义代码修复工作都假定可访问单元测试以验证候选修复。相反,本文目标是开发一个强健的统计模型,在无法获知程序预期正确行为信息的情况下,准确预测错误位置与精确修复。实现该目标需要鲁棒的上下文修复模型,我们在经合成注入错误增强的大规模真实世界源代码语料上训练该模型。我们的框架采用两阶段方法:首先由基于规则的处理器生成大量修复候选,然后由使用一种新颖神经网络架构(我们称之为共享、专精与竞争)的统计模型对这些候选打分。具体地,该架构(1)利用 RNN 在抽象语法树上生成源代码的共享编码,(2)使用专精网络模块对每个候选修复打分,(3)将这些分数归一化以便它们在可比较的概率空间中相互竞争。我们在从 GitHub 收集的包含四类常见错误的真实世界测试集上评估模型。单次猜测下,我们的模型能预测出精确正确修复的占比为 41%,而注意力序列到序列模型的准确率为 13%。
引用
@article{arxiv.1710.11054,
title = {Semantic Code Repair using Neuro-Symbolic Transformation Networks},
author = {Jacob Devlin and Jonathan Uesato and Rishabh Singh and Pushmeet Kohli},
journal= {arXiv preprint arXiv:1710.11054},
year = {2017}
}