History driven program repair

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 ca...

Full description

Saved in:
Bibliographic Details
Main Authors: LE, Xuan-Bach D., LO, David, LE GOUES, Claire
Format: text
Language:English
Published: Institutional Knowledge at Singapore Management University 2016
Subjects:
Online Access:https://ink.library.smu.edu.sg/sis_research/3730
https://ink.library.smu.edu.sg/context/sis_research/article/4732/viewcontent/bach_saner16.pdf
Tags: Add Tag
No Tags, Be the first to tag this record!
Institution: Singapore Management University
Language: English
id sg-smu-ink.sis_research-4732
record_format dspace
spelling sg-smu-ink.sis_research-47322020-02-27T03:44:43Z History driven program repair LE, Xuan-Bach D. LO, David LE GOUES, Claire 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 fixes across projects in their development history to effectively guide and drive a program repair process. Our main insight is that recurring bug fixes are common in real-world applications, and that previously-appearing fix patterns can provide useful guidance to an automated repair technique. Based on this insight, our technique first automatically mines bug fix patterns from the history of many projects. We then employ existing mutation operators to generate fix candidates for a given buggy program. Candidates that match frequently occurring historical bug fixes are considered more likely to be relevant, and we thus give them priority in the random search process. Finally, candidates that pass all the previously failed test cases are recommended as likely fixes. We compare our technique against existing generate-and-validate and test-driven APR approaches using 90 bugs from 5 Java programs. The experiment results show that our technique can produce good-quality fixes for many more bugs as compared to the baselines, while being reasonably computationally efficient: it takes less than 20 minutes, on average, to correctly fix a bug. 2016-03-01T08:00:00Z text application/pdf https://ink.library.smu.edu.sg/sis_research/3730 info:doi/10.1109/SANER.2016.76 https://ink.library.smu.edu.sg/context/sis_research/article/4732/viewcontent/bach_saner16.pdf http://creativecommons.org/licenses/by-nc-nd/4.0/ Research Collection School Of Computing and Information Systems eng Institutional Knowledge at Singapore Management University Automated Program Repair Mutation Testing Graph Mining Software Engineering
institution Singapore Management University
building SMU Libraries
continent Asia
country Singapore
Singapore
content_provider SMU Libraries
collection InK@SMU
language English
topic Automated Program Repair
Mutation Testing
Graph Mining
Software Engineering
spellingShingle Automated Program Repair
Mutation Testing
Graph Mining
Software Engineering
LE, Xuan-Bach D.
LO, David
LE GOUES, Claire
History driven program repair
description 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 fixes across projects in their development history to effectively guide and drive a program repair process. Our main insight is that recurring bug fixes are common in real-world applications, and that previously-appearing fix patterns can provide useful guidance to an automated repair technique. Based on this insight, our technique first automatically mines bug fix patterns from the history of many projects. We then employ existing mutation operators to generate fix candidates for a given buggy program. Candidates that match frequently occurring historical bug fixes are considered more likely to be relevant, and we thus give them priority in the random search process. Finally, candidates that pass all the previously failed test cases are recommended as likely fixes. We compare our technique against existing generate-and-validate and test-driven APR approaches using 90 bugs from 5 Java programs. The experiment results show that our technique can produce good-quality fixes for many more bugs as compared to the baselines, while being reasonably computationally efficient: it takes less than 20 minutes, on average, to correctly fix a bug.
format text
author LE, Xuan-Bach D.
LO, David
LE GOUES, Claire
author_facet LE, Xuan-Bach D.
LO, David
LE GOUES, Claire
author_sort LE, Xuan-Bach D.
title History driven program repair
title_short History driven program repair
title_full History driven program repair
title_fullStr History driven program repair
title_full_unstemmed History driven program repair
title_sort history driven program repair
publisher Institutional Knowledge at Singapore Management University
publishDate 2016
url https://ink.library.smu.edu.sg/sis_research/3730
https://ink.library.smu.edu.sg/context/sis_research/article/4732/viewcontent/bach_saner16.pdf
_version_ 1770573705065267200