JFIX: semantics-based repair of Java programs via symbolic PathFinder
Xuan-Bach D. Le,Duc-Hiep Chu,David Lo,Claire Le Goues,Willem Visser +4 more
- pp 376-379
TLDR
JFix is presented, a semantics-based APR framework that targets Java, and is designed to be sufficiently generic to support a variety of such techniques, and supports the claim that the framework can both support developers seeking semantics- based repair of bugs in Java programs, as well as enable larger scale empirical studies comparing syntactic- and semantics-Based APR targeting Java.Abstract:
Recently there has been a proliferation of automated program repair (APR) techniques, targeting various programming languages. Such techniques can be generally classified into two families: syntactic- and semantics-based. Semantics-based APR, on which we focus, typically uses symbolic execution to infer semantic constraints and then program synthesis to construct repairs conforming to them. While syntactic-based APR techniques have been shown success- ful on bugs in real-world programs written in both C and Java, semantics-based APR techniques mostly target C programs. This leaves empirical comparisons of the APR families not fully explored, and developers without a Java-based semantics APR technique. We present JFix, a semantics-based APR framework that targets Java, and an associated Eclipse plugin. JFix is implemented atop Symbolic PathFinder, a well-known symbolic execution engine for Java programs. It extends one particular APR technique (Angelix), and is designed to be sufficiently generic to support a variety of such techniques. We demonstrate that semantics-based APR can indeed efficiently and effectively repair a variety of classes of bugs in large real-world Java programs. This supports our claim that the framework can both support developers seeking semantics-based repair of bugs in Java programs, as well as enable larger scale empirical studies comparing syntactic- and semantics-based APR targeting Java. The demonstration of our tool is available via the project website at: https://xuanbachle.github.io/semanticsrepair/read more
Citations
More filters
Proceedings ArticleDOI
Context-aware patch generation for better automated program repair
TL;DR: This paper proposes CapGen, a context-aware patch generation technique that achieves a high precision of 84.00% and can prioritize the correct patches before 98.78% of the incorrect plausible ones, and studies the use of AST nodes' context information to estimate the likelihood.
Proceedings ArticleDOI
S3: syntax- and semantic-guided repair synthesis via programming by examples
TL;DR: This work presents S3, a new repair synthesis engine that leverages programming-by-examples methodology to synthesize high-quality bug repairs and compares S3’s repair effectiveness with state-of-the-art synthesis engines Angelix, Enumerative, and CVC4.
Journal ArticleDOI
ARJA: Automated Repair of Java Programs via Multi-Objective Genetic Programming
Yuan Yuan,Wolfgang Banzhaf +1 more
TL;DR: ARJA as discussed by the authors is a genetic programming based approach for automated repair of Java programs, which decouples the search subspaces of likely-buggy locations, operation types and potential fix ingredients, enabling GP to explore the search space more effectively.
Journal ArticleDOI
Overfitting in semantics-based automated program repair
TL;DR: The overfitting problem is revisited with a focus on semantics-based APR techniques, complementing previous studies of the over fitting problem in heuristics- based APR, and it is found that similar to heuristical APR, overfitting also occurs in semantics-Based APR in various different ways.
Proceedings ArticleDOI
A Comprehensive Study of Automatic Program Repair on the QuixBugs Benchmark
TL;DR: In this article, three patch correctness assessment techniques were proposed to comprehensively study overfitting and incorrect patches in the QuixBugs benchmark, which has never been studied in the context of program repair.
References
More filters
Journal ArticleDOI
Model checking programs
TL;DR: A verification and testing environment for Java, called Java PathFinder (JPF), which integrates model checking, program analysis and testing, and uses state compression to handle big states and partial order and symmetry reduction, slicing, abstraction, and runtime analysis techniques to reduce the state space.
Journal ArticleDOI
GenProg: A Generic Method for Automatic Software Repair
TL;DR: This paper describes GenProg, an automated method for repairing defects in off-the-shelf, legacy programs without formal specifications, program annotations, or special coding practices, and analyzes the generated repairs qualitatively and quantitatively to demonstrate the process efficiently produces evolved programs that repair the defect.
Proceedings ArticleDOI
On the Accuracy of Spectrum-based Fault Localization
TL;DR: This work investigates diagnostic accuracy as a function of several parameters (such as quality and quantity of the program spectra collected during the execution of the system), some of which directly relate to test design, and indicates that the superior performance of a particular similarity coefficient, used to analyze the programSpectrum-based fault localization, is largely independent of test design.
Proceedings ArticleDOI
Automatic patch generation learned from human-written patches
TL;DR: A novel patch generation approach, Pattern-based Automatic program Repair (Par), using fix patterns learned from existing human-written patches to generate program patches automatically, which is more acceptable than GenProg.
Syntax-guided synthesis
Rajeev Alur,Rastislav Bodik,Garvit Juniwal,Milo M. K. Martin,Mukund Raghothaman,Sanjit A. Seshia,Rishabh Singh,Emina Torlak,Abhishek Udupa,Armando Solar-Lezama +9 more
TL;DR: This work describes three different instantiations of the counter-example-guided-inductive-synthesis (CEGIS) strategy for solving the synthesis problem, reports on prototype implementations, and presents experimental results on an initial set of benchmarks.