Recently, we can notice a transition to data-driven techniques in Automated Program Repair (APR), in particular towards deep neural networks. This entails training on hundreds of thousands or even millions of non-executable code fragments. We would like to bring more attention to an aspect of code often neglected in Neural Program Repair (NPR), namely its execution. Code execution has several significant advantages. It allows for test-based evaluation of candidate fixes and can provide valuable information to aid repair. In this work we present a fully executable dataset of 450,000 small buggy/fixed program pairs originally submitted to programming competition websites written in eight different programming languages. Along with the dataset we provide infrastructure to compile, safely execute and test programs as well as fine-grained bug-type labels. To give a point of reference, we provide basic evaluation results for two baselines, one based on a generate-and-validate approach and one on deep learning. With this dataset we follow several goals: we want to lift Neural Program Repair beyond fully static code representations, foster the use of execution-based features and, by including several different languages, counterbalance the predominance of Java in the current landscape of APR datasets and benchmarks.
翻译:近年来,我们可以注意到自动程序修复(APR)领域正转向数据驱动技术,特别是深度神经网络。这需要在数十万甚至数百万个不可执行代码片段上进行训练。我们希望能够引起对神经程序修复(NPR)中常被忽视的一个代码方面——即其执行性——的更多关注。代码执行具有若干显著优势:它允许对候选补丁进行基于测试的评估,并能提供有价值的信息来辅助修复。本文提出了一个完全可执行的数据集,包含45万个对小型有缺陷/已修复程序对,这些程序最初提交给编程竞赛网站,使用八种不同编程语言编写。除数据集外,我们还提供了编译、安全执行和测试程序的基础设施,以及细粒度的缺陷类型标签。为提供参考基准,我们给出了两个基线方法的基本评估结果:一种基于生成-验证方法,另一种基于深度学习。通过该数据集,我们旨在实现以下目标:将神经程序修复提升至超越完全静态代码表示的水平,促进基于执行特征的使用,并通过包含多种不同语言来平衡当前APR数据集和基准中Java语言占主导地位的局面。