Automatic software repair, by Martin Monperrus

by Martin Monperrus

I've been working on automatic software repair since 2011. I maintain this curated list of pointers for helping newcomers to understand the field. –Martin

Short presentation

Automatic software repair is the process of fixing software bugs automatically, by generating patches. It is called automated program repair, automated patch generation or automated bug fixing. Repair may also happen at runtime, in response to field failures, in a self-healing manner.

How to learn about automatic software repair?

Reading I would recommend this informal introduction to automatic software repair, this academic survey of the field (ACM CSUR) and the living review (full disclosure: I'm the author of all :-). There is a Wikipedia page on Automatic bug fixing and Gazzola and colleagues have also written another survey.

Watching Claire Le Goues introduces you to the field at

Discussing program-repair is an open discussion forum dedicated to program repair.

Research in my group

In my group, we invent systems to automatically fix software bugs. Our systems repair Java code, are strongly validated on real bugs and large scale programs. Our software prototypes are all made open-source for sake of reproducible research and open-science. See our publications.

Publicly available automatic repair tools

Look at this page that lists publicly available tools and prototypes for automatic repair.

Known courses about automatic software repair

Drop me an email to add your course here.

Dagstuhl seminars about automatic software repair

Seminar 17022 (Jan 2017): Automated Program Repair

Seminar 16201 (May 2016): Synergies among Testing, Verification, and Repair for Concurrent Programs

Seminar 13061 (Feb 2013): Fault Prediction, Localization, and Repair

Seminar 09201 (May 2009): Self-Healing and Self-Adaptive Systems

PhD Theses about automatic software repair

Drop me an email to add your PhD thesis.

From Runtime Failures to Patches: Study of Patch Generation in Production, Thomas Durieux, University of Lille, 2018

Overfitting in Automated Program Repair: Challenges and Solutions, Xuan Bach D Le, Singapore Management University, 2018

Automatic patch generation via learning from successful human patches  Fan Long, Massachusetts Institute of Technology, 2018

Unifying Program Repair and Program Synthesis, Jinru Hua, University of Texas at Austin, 2018

Semantic program repair, Sergey Mechtaev, National University of Singapore, 2018

Design of repair operators for automated program repair, Shin Hwei Tan, National University of Singapore, 2017

Systematic techniques for more effective fault localization and program repair, Divya Gopinath, University of Texas, 2016.

Automatic Analysis and Repair of Exception Bugs for Java Programs, Benoit Cornu, University of Lille, 2015

Extraction and Analysis of Knowledge for Automatic Software Repair, Matias Martinez, University of Lille, 2014

Automatic Program Repair Using Genetic Programming, Claire Le Goues, University of Virginia, 2013

Automating Program Verification and Repair Using Invariant Analysis and Test Input Generation, Thanh V. Nguyen, The Unversity of New Mexico, 2010


Tagged as: