A Survey of Learning-based Automated Program Repair

01/09/2023
by   Quanjun Zhang, et al.
0

Automated program repair (APR) aims to fix software bugs automatically and plays a crucial role in software development and maintenance. With the recent advances in deep learning (DL), an increasing number of APR techniques have been proposed to leverage neural networks to learn bug-fixing patterns from massive open-source code repositories. Such learning-based techniques usually treat APR as a neural machine translation (NMT) task, where buggy code snippets (i.e., source language) are translated into fixed code snippets (i.e., target language) automatically. Benefiting from the powerful capability of DL to learn hidden relationships from previous bug-fixing datasets, learning-based APR techniques have achieved remarkable performance. In this paper, we provide a systematic survey to summarize the current state-of-the-art research in the learning-based APR community. We illustrate the general workflow of learning-based APR techniques and detail the crucial components, including fault localization, patch generation, patch ranking, patch validation, and patch correctness phases. We then discuss the widely-adopted datasets and evaluation metrics and outline existing empirical studies. We discuss several critical aspects of learning-based APR techniques, such as repair domains, industrial deployment, and the open science issue. We highlight several practical guidelines on applying DL techniques for future APR studies, such as exploring explainable patch generation and utilizing code features. Overall, our paper can help researchers gain a comprehensive understanding about the achievements of the existing learning-based APR techniques and promote the practical application of these techniques. Our artifacts are publicly available at <https://github.com/QuanjunZhang/AwesomeLearningAPR>.

READ FULL TEXT
research
10/25/2022

Practical Program Repair in the Era of Large Pre-trained Language Models

Automated Program Repair (APR) aims to help developers automatically pat...
research
12/18/2018

Learning to Generate Corrective Patches using Neural Machine Translation

Bug fixing is generally a manually-intensive task. However, recent work ...
research
07/17/2022

Less Training, More Repairing Please: Revisiting Automated Program Repair via Zero-shot Learning

Due to the promising future of Automated Program Repair (APR), researche...
research
03/31/2023

A Survey on Automated Program Repair Techniques

With the rapid development and large-scale popularity of program softwar...
research
10/05/2022

On the Use of Deep Learning in Software Defect Prediction

Context: Automated software defect prediction (SDP) methods are increasi...
research
04/30/2021

Explanation-Based Human Debugging of NLP Models: A Survey

To fix a bug in a program, we need to locate where the bug is, understan...
research
08/24/2020

Patching as Translation: the Data and the Metaphor

Machine Learning models from other fields, like Computational Linguistic...

Please sign up or login with your details

Forgot password? Click here to reset