A Survey of Learning-based Automated Program Repair
Quanjun Zhang, Chunrong Fang, Yuxiang Ma, Weisong Sun, Zhenyu Chen

TL;DR
This survey reviews recent advances in learning-based automated program repair, emphasizing neural network approaches that treat bug fixing as a translation task, and discusses datasets, evaluation, and future directions.
Contribution
It provides a comprehensive overview of the state-of-the-art in learning-based APR, detailing workflows, components, datasets, evaluation metrics, and practical guidelines for future research.
Findings
Learning-based APR treats bug fixing as neural machine translation.
Remarkable performance achieved by deep learning techniques.
Discussion on datasets, evaluation, and industrial deployment challenges.
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software System Performance and Reliability · Software Testing and Debugging Techniques
