scispace - formally typeset
Open AccessProceedings ArticleDOI

SemFix: program repair via semantic analysis

TLDR
This paper presents an automated repair method based on symbolic execution, constraint solving and program synthesis, which reports a higher success-rate than genetic programming based repair, and produces a repair faster.
Abstract
Debugging consumes significant time and effort in any major software development project. Moreover, even after the root cause of a bug is identified, fixing the bug is non-trivial. Given this situation, automated program repair methods are of value. In this paper, we present an automated repair method based on symbolic execution, constraint solving and program synthesis. In our approach, the requirement on the repaired code to pass a given set of tests is formulated as a constraint. Such a constraint is then solved by iterating over a layered space of repair expressions, layered by the complexity of the repair code. We compare our method with recently proposed genetic programming based repair on SIR programs with seeded bugs, as well as fragments of GNU Coreutils with real bugs. On these subjects, our approach reports a higher success-rate than genetic programming based repair, and produces a repair faster.

read more

Content maybe subject to copyright    Report

Citations
More filters
Journal ArticleDOI

A Survey on Software Fault Localization

TL;DR: A comprehensive overview of a broad spectrum of fault localization techniques, each of which aims to streamline the fault localization process and make it more effective by attacking the problem in a unique way is provided.
Proceedings ArticleDOI

Automatic patch generation by learning correct code

TL;DR: Experimental results show that, on a benchmark set of 69 real-world defects drawn from eight open-source projects, Prophet significantly outperforms the previous state-of-the-art patch generation system.
Proceedings ArticleDOI

Angelix: scalable multiline program patch synthesis via symbolic analysis

TL;DR: Angelix is a novel semantics- based repair method that scales up to programs of similar size as are handled by search-based repair tools such as GenProg and SPR, and is more scalable than previously proposed semantics based repair methods such as SemFix and DirectFix.
Journal ArticleDOI

A survey of the use of crowdsourcing in software engineering

TL;DR: A comprehensive survey of the use of crowdsourcing in software engineering, seeking to cover all literature on this topic, and exposing trends, open issues and opportunities for future research on Crowdsourced Software Engineering.
Journal ArticleDOI

Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs

TL;DR: Empirical analysis on Nopol shows that the approach can effectively fix bugs with buggy if conditions and missing preconditions on two large open-source projects, namely Apache Commons Math and Apache Commons Lang.
References
More filters
Book ChapterDOI

Z3: an efficient SMT solver

TL;DR: Z3 is a new and efficient SMT Solver freely available from Microsoft Research that is used in various software verification and analysis applications.
Proceedings ArticleDOI

KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs

TL;DR: A new symbolic execution tool, KLEE, capable of automatically generating tests that achieve high coverage on a diverse set of complex and environmentally-intensive programs, and significantly beat the coverage of the developers' own hand-written test suite is presented.
Journal ArticleDOI

Supporting Controlled Experimentation with Testing Techniques: An Infrastructure and its Potential Impact

TL;DR: The infrastructure that is being designed and constructed to support controlled experimentation with testing and regression testing techniques is described and the impact that this infrastructure has had and can be expected to have.
Proceedings ArticleDOI

Visualization of test information to assist fault localization

TL;DR: A new technique that uses color to visually map the participation of each program statement in the outcome of the execution of the program with a test suite, consisting of both passed and failed test cases is presented.
Proceedings ArticleDOI

Combinatorial sketching for finite programs

TL;DR: SKETCH is a language for finite programs with linguistic support for sketching and its combinatorial synthesizer is complete for the class of finite programs, guaranteed to complete any sketch in theory, and in practice has scaled to realistic programming problems.
Related Papers (5)