· 2016
History Driven Program Repair
- 344citations
- 2016year
Short summary
A new automated program repair (APR) technique uses historical bug fix patterns from multiple projects to prioritize candidate fixes, successfully repairing more bugs in under 20 minutes on average compared to existing methods.
AI-generated from the title and abstract; the full text is not read.
Key points
- Automated program repair (APR) techniques often struggle with real-world bugs, even with extensive computation.
- This new technique mines bug fix patterns from project histories to guide repair.
- Candidate fixes matching frequent historical patterns are prioritized in the search.
- The method successfully repairs more bugs than baseline approaches within an average of 20 minutes.
AI-generated from the title and abstract; the full text is not read.
Abstract
Effective automated program repair techniques have great potential to reduce the costs of debugging and maintenance. Previously proposed automated program repair (APR) techniques often follow a generate-and-validate and test-case-driven procedure: They first randomly generate a large pool of fix candidates and then exhaustively validate the quality of the candidates by testing them against existing or provided test suites. Unfortunately, many real-world bugs cannot be repaired by existing techniques even after more than 12 hours of computation in a multi-core cloud environment. More work is needed to advance the capabilities of modern APR techniques. We propose a new technique that utilizes the wealth of bug fixesacross projects in their development history to effectively guide and drive a programrepair process. Our main insight is that recurring bug fixes are common inreal-world applications, and that previously-appearing fix patterns canprovide useful guidance to an automated repair technique. Based on this insight, our technique first automaticallymines bug fix patterns from the history of many projects. We then employ existingmutation operators to generate fix candidates for a given buggy program. Candidates that match frequently occurring historical bug fixes are consideredmore likely to be relevant, and we thus give them priority inthe random search process. Finally, candidates thatpass all the previously failed test cases are recommended as likely fixes. We compare our technique against existinggenerate-and-validate and test-driven APR approaches using 90 bugs from 5 Javaprograms. The experiment results show that our technique can producegood-quality fixes for many more bugs as compared to the baselines, while beingreasonably computationally efficient: it takes less than 20minutes, on average, to correctly fix a bug.
The authors' abstract, as published at the source., 2016 · DOI ↗
Continue with a free account
Ask the paper: 3 free questions a day about this paper; save it, get its citation, new summaries every day for your field. Takeaways are Premium.
Continue free on the webSign in with Google or Apple; no card needed. You come back to this paper.
On your phone:
Field: Software
SoftwareComputer Science