scispace - formally typeset
Open AccessProceedings ArticleDOI

JFIX: semantics-based repair of Java programs via symbolic PathFinder

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

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

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.
Related Papers (5)