SequenceR: Sequence-to-Sequence Learning for End-to-End Program Repair
This addresses the problem of reducing manual effort in debugging for software developers, presenting a novel data-driven approach that is incremental in applying existing machine learning techniques to program repair.
The paper tackles automated program repair by introducing SequenceR, an end-to-end sequence-to-sequence learning system that fixes bugs in source code, achieving perfect predictions for 950 out of 4,711 test samples and correct patches for 14 bugs in the Defects4J benchmark.
This paper presents a novel end-to-end approach to program repair based on sequence-to-sequence learning. We devise, implement, and evaluate a system, called SequenceR, for fixing bugs based on sequence-to-sequence learning on source code. This approach uses the copy mechanism to overcome the unlimited vocabulary problem that occurs with big code. Our system is data-driven; we train it on 35,578 samples, carefully curated from commits to open-source repositories. We evaluate it on 4,711 independent real bug fixes, as well on the Defects4J benchmark used in program repair research. SequenceR is able to perfectly predict the fixed line for 950/4711 testing samples, and find correct patches for 14 bugs in Defects4J. It captures a wide range of repair operators without any domain-specific top-down design.