SelfAPR: Self-supervised Program Repair with Test Execution Diagnostics

@article{Ye2022SelfAPRSP,
  title={SelfAPR: Self-supervised Program Repair with Test Execution Diagnostics},
  author={He Ye and Matias Martinez and Xiapu Luo and Tao Zhang and Monperrus Martin},
  journal={ArXiv},
  year={2022},
  volume={abs/2203.12755}
}
Learning-based program repair has achieved good results in a recent series of papers. Yet, we observe that the related work fails to repair some bugs because of a lack of knowledge about 1) the application domain of the program being repaired, and 2) the fault type being repaired. In this paper, we solve both problems by changing the learning paradigm from supervised training to self-supervised training in an approach called SelfAPR. First, SelfAPR generates training samples on disk by… 

Figures and Tables from this paper

Is this Change the Answer to that Problem? Correlating Descriptions of Bug and Code Changes for Evaluating Patch Correctness

Quatrain proposes a novel perspective to the problem of patch correctness assessment: a correct patch implements changes that “answer” to a problem posed by buggy behaviour, and leverages a neural network architecture to learn the semantic correlation between bug reports and commit messages.

Neural Program Repair with Execution-based Backpropagation

The core novelty of RewardRepair is to improve NMT-based program repair with a loss function based on program compilation and test execution information, rewarding the network to produce patches that compile and that do not overfit.

References

SHOWING 1-10 OF 96 REFERENCES

On Multi-Modal Learning of Editing Source Code

Modit, a multi-modal NMT based code editing engine, shows that developers’ hint as an input modality can narrow the search space for patches and outperform state-of-the-art models to generate correctly patched code in top-1 position.

A syntax-guided edit decoder for neural program repair

Recoder is the first DL-based APR approach that has outperformed the traditional APR approaches on this benchmark, and results suggest that Recoder has better generalizability than existing APR approaches.

CURE: Code-Aware Neural Machine Translation for Automatic Program Repair

CURE designs a new code-aware search strategy that finds more correct fixes by focusing on searching for compilable patches and patches that are close in length to the buggy code, outperforming all existing APR techniques on both benchmarks.

CoCoNuT: combining context-aware neural translation models using ensemble for program repair

A new G&V technique—CoCoNuT, which uses ensemble learning on the combination of convolutional neural networks (CNNs) and a new context-aware neural machine translation (NMT) architecture to automatically fix bugs in multiple programming languages.

Graph-based, Self-Supervised Program Repair from Diagnostic Feedback

This work introduces a program-feedback graph, which connects symbols relevant to program repair in source code and diagnostic feedback, and then applies a graph neural network on top to model the reasoning process, and presents a self-supervised learning paradigm for program repair.

DeepFix: Fixing Common C Language Errors by Deep Learning

DeepFix is a multi-layered sequence-to-sequence neural network with attention which is trained to predict erroneous program locations along with the required correct statements and could fix 1881 programs completely and 1338 programs partially.

Defects4J: a database of existing faults to enable controlled testing studies for Java programs

Defects4J, a database and extensible framework providing real bugs to enable reproducible studies in software testing research, and provides a high-level interface to common tasks in softwareTesting research, making it easy to con- duct and reproduce empirical studies.

Neural Program Repair with Execution-based Backpropagation

The core novelty of RewardRepair is to improve NMT-based program repair with a loss function based on program compilation and test execution information, rewarding the network to produce patches that compile and that do not overfit.

SequenceR: Sequence-to-Sequence Learning for End-to-End Program Repair

This paper devise, implement, and evaluate a technique, called SEQUENCER, for fixing bugs based on sequence-to-sequence learning on source code, which captures a wide range of repair operators without any domain-specific top-down design.

Is this Change the Answer to that Problem? Correlating Descriptions of Bug and Code Changes for Evaluating Patch Correctness

Quatrain proposes a novel perspective to the problem of patch correctness assessment: a correct patch implements changes that “answer” to a problem posed by buggy behaviour, and leverages a neural network architecture to learn the semantic correlation between bug reports and commit messages.
...