基于静态分析的神经程序生成
机器学习
2021-11-23 v2 人工智能
编程语言
摘要
最先进的源代码神经模型往往在生成单个表达式和代码行上进行评估,并且通常在生成长程任务(如整个方法体)时失败。我们提议利用静态程序分析器的弱监督来解决这一缺陷。我们的神经符号方法允许深度生成模型通过调用静态分析工具,符号化地计算其已生成代码中的长距离语义关系。在训练期间,模型观察这些关系,并学习以它们为条件生成程序。我们将此方法应用于给定包含该方法的类的其余部分来生成整个 Java 方法的问题。我们的实验表明,该方法在该任务上显著优于最先进的 Transformer 以及一个显式尝试学习程序语义的模型,无论是在生成没有基本语义错误的程序方面,还是在语法上匹配真实代码方面。
引用
@article{arxiv.2111.01633,
title = {Neural Program Generation Modulo Static Analysis},
author = {Rohan Mukherjee and Yeming Wen and Dipak Chaudhari and Thomas W. Reps and Swarat Chaudhuri and Chris Jermaine},
journal= {arXiv preprint arXiv:2111.01633},
year = {2021}
}
备注
Accepted for publication at Neurips 2021