Results 1 -
4 of
4
An Analysis of Patch Plausibility and Correctness for Generate-And-Validate Patch Generation Systems
, 2015
"... We analyze reported patches for three prior generate-and-validate patch generation systems (GenProg, RSRepair, and AE). Because of experimental error, the majority of the re-ported patches violate the basic principle behind the design of these systems — they do not produce correct outputs even for t ..."
Abstract
-
Cited by 8 (2 self)
- Add to MetaCart
We analyze reported patches for three prior generate-and-validate patch generation systems (GenProg, RSRepair, and AE). Because of experimental error, the majority of the re-ported patches violate the basic principle behind the design of these systems — they do not produce correct outputs even for the inputs in the test suite used to validate the patches. We also show that the overwhelming majority of the ac-cepted patches are not correct and are equivalent to a single modification that simply deletes functionality. We also present Kali, a generate-and-validate patch gen-eration system that simply deletes functionality. Working with a simpler and more effectively focused search space, Kali generates at least as many correct patches as prior Gen-Prog, RSRepair, and AE systems. Kali also generates at least as many plausible patches that produce correct out-puts for the inputs in the validation test suite as the three prior systems. We also discuss the patches produced by ClearView, a generate-and-validate binary hot patching system that lever-ages learned invariants to produce patches that enable sys-tems to survive otherwise fatal defects and security attacks. 1.
Is the cure worse than the disease? Overfitting in automated program repair
- In European Software Engineering Conference and ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE
, 2015
"... Automated program repair has shown promise for reducing the sig-nificant manual effort debugging requires. This paper addresses a deficit of earlier evaluations of automated repair techniques caused by repairing programs and evaluating generated patches ’ correctness using the same set of tests. Sin ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
(Show Context)
Automated program repair has shown promise for reducing the sig-nificant manual effort debugging requires. This paper addresses a deficit of earlier evaluations of automated repair techniques caused by repairing programs and evaluating generated patches ’ correctness using the same set of tests. Since tests are an imperfect metric of program correctness, evaluations of this type do not discriminate be-tween correct patches and patches that overfit the available tests and break untested but desired functionality. This paper evaluates two well-studied repair tools, GenProg and TrpAutoRepair, on a pub-licly available benchmark of 998 bugs, each with a human-written patch. By evaluating patches using tests independent from those used during repair, we find that the tools are unlikely to improve the proportion of independent tests passed, and that the quality of the patches is proportional to the coverage of the test suite used during repair. For programs that pass most tests, the tools are as likely to break tests as to fix them. However, novice developers also overfit, and automated repair performs no worse than these develop-ers. In addition to overfitting, we measure the effects of test suite coverage, test suite provenance, and starting program quality, as well as the difference in quality between novice-developer-written and tool-generated patches when quality is assessed with a test suite independent from the one used for patch generation.
Repairing Programs with Semantic Code Search
- In: Proceedings of the International Conference on Automated Software Engineering
, 2015
"... Abstract—Automated program repair can potentially reduce debugging costs and improve software quality but recent studies have drawn attention to shortcomings in the quality of automati-cally generated repairs. We propose a new kind of repair that uses the large body of existing open-source code to f ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Abstract—Automated program repair can potentially reduce debugging costs and improve software quality but recent studies have drawn attention to shortcomings in the quality of automati-cally generated repairs. We propose a new kind of repair that uses the large body of existing open-source code to find potential fixes. The key challenges lie in efficiently finding code semantically similar (but not identical) to defective code and then appropri-ately integrating that code into a buggy program. We present SearchRepair, a repair technique that addresses these challenges by (1) encoding a large database of human-written code fragments as SMT constraints on input-output behavior, (2) localizing a given defect to likely buggy program fragments and deriving the desired input-output behavior for code to replace those fragments, (3) using state-of-the-art constraint solvers to search the database for fragments that satisfy that desired behavior and replacing the likely buggy code with these potential patches, and (4) validating that the patches repair the bug against program test suites. We find that SearchRepair repairs 150 (19%) of 778 benchmark C defects written by novice students, 20 of which are not repaired by GenProg, TrpAutoRepair, and AE. We compare the quality of the patches generated by the four techniques by measuring how many independent, not-used-during-repair tests they pass, and find that SearchRepair-repaired programs pass 97.3 % of the tests, on average, whereas GenProg-, TrpAutoRepair-, and AE-repaired programs pass 68.7%, 72.1%, and 64.2 % of the tests, respectively. We conclude that SearchRepair produces higher-quality repairs than GenProg, TrpAutoRepair, and AE, and repairs some defects those tools cannot. I.
©中国科学院软件研究所版权所有. Tel: +86-10-62562563 自动程序修复方法研究进展
"... Abstract: Automatic program repair helps developers reduce the cost of manual bug fixing. Approaches to test-suite based repair aims to generate code patches to pass the test suite as well as maintain the program execution. This paper reviews available literature on test-suite based repair and stat ..."
Abstract
- Add to MetaCart
(Show Context)
Abstract: Automatic program repair helps developers reduce the cost of manual bug fixing. Approaches to test-suite based repair aims to generate code patches to pass the test suite as well as maintain the program execution. This paper reviews available literature on test-suite based repair and state the progress in two directions: approaches to automatic repair and empirical foundations. First, existing approaches to automatic repair are described into three categories, namely search based, exhaustion based, and constraint-solving based patch generation. Second, empirical foundations on repair are detailed, including the argumentation in the research field. Related techniques are then briefly introduced as the supplementation of program repair. Finally, opportunities and challenges are presented to summarize this review.