Automatic repair of buggy if conditions and missing preconditions with SMT

@article{Demarco2014AutomaticRO,
  title={Automatic repair of buggy if conditions and missing preconditions with SMT},
  author={Favio Demarco and J. Xuan and Daniel Le Berre and Monperrus Martin},
  journal={ArXiv},
  year={2014},
  volume={abs/1404.3186}
}
We present Nopol, an approach for automatically repairing buggy if conditions and missing preconditions. As input, it takes a program and a test suite which contains passing test cases modeling the expected behavior of the program and at least one failing test case embodying the bug to be repaired. It consists of collecting data from multiple instrumented test suite executions, transforming this data into a Satisfiability Modulo Theory (SMT) problem, and translating the SMT result -- if there… 
Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
TLDR
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.
Automated Generation of Buffer Overflow Quick Fixes Using Symbolic Execution and SMT
TLDR
This paper presents a novel approach used to generate bug fixes for buffer overflow automatically using static execution, code patch patterns, quick fix locations, user input saturation and Satisfiability Modulo Theories SMT.
Contract-based program repair without the contracts
TLDR
JAID is presented, a novel APR technique for Java programs, which is capable of constructing detailed state abstractions—similar to those employed by contract-based techniques—that are derived from regular Java code without any special annotations.
Anti-Patterns for Automatic Program Repairs
Automated program repair has been a heated topic in software engineering. In recent years, we have witnessed many successful applications such as Genprog, SPR, RSRepair, etc. Given a bug and its test
Using Test Cases Grouping and Iteration Repair to Fix Multi-points Bug
TLDR
This paper proposes a method to repair multi-point bugs by grouping failed test cases and iterative repairing, and can greatly improve the multi- point bug repair capacity of automated repair tools.
Using Test Cases Grouping and Iteration Repair to Fix Multi-points Bug
Currently, most automated program repair techniques are based on the test suite to constrain the generation of the patch. However, these techniques are facing an important challenge-how to fix
Towards API-specific automatic program repair
  • Sebastian Nielebock
  • Computer Science
    2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)
  • 2017
TLDR
This paper introduces the notion of an API-specific program repair mechanism that detects erroneous code in a similar way to existing APR approaches and uses API- specific information from the erroneous code to search for API usage patterns in other software, with which to fix the bug.
DirectFix: Looking for Simple Program Repairs
TLDR
This paper presents a novel semantics-based repair method that generates the simplest patch such that the program structure of the buggy program is maximally preserved and fuses fault localization and repair generation into one step.
Sound and Complete Mutation-Based Program Repair
TLDR
This work presents a novel approach for automatically repairing an erroneous program with respect to a given set of assertions, and refers to a bounded notion of correctness, even though, for a large enough bound all returned programs are fully correct.
Automatic Software Repair
TLDR
This article considers behavioral repair where test suites, contracts, models, and crashing inputs are taken as oracle, and state repair, also known as runtime repair or runtime recovery, with techniques such as checkpoint and restart, reconfiguration, and invariant restoration.
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 22 REFERENCES
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.
Angelic debugging
TLDR
This work approximates an ideal approach to fixing bugs mechanically, which is to search the space of all edits to the program for one that repairs the failing test without breaking any passing test, by computing the set of values whose substitution for the expression corrects the execution.
GZoltar: an eclipse plug-in for testing and debugging
TLDR
A toolset for automatic testing and fault localization, dubbed GZoltar, which hosts techniques for (regression) test suite minimization and automatic fault diagnosis (namely, spectrum-based fault localization).
GenProg: A Generic Method for Automatic Software Repair
TLDR
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.
Patches as better bug reports
TLDR
This work proposes that bug reports additionally contain a specially-constructed patch describing an example way in which the program could be modified to avoid the reported policy violation, and presents an algorithm for automatically constructing such patches given model-checking and policy information typically already produced by most such analyses.
Locating faults through automated predicate switching
TLDR
By forcibly switching a predicate's outcome at runtime and altering the control flow, the program state can not only be inexpensively modified, but in addition it is often possible to bring the program execution to a successful completion (i.e., program produces the desired output).
Fault localization using value replacement
TLDR
A value profile based approach for ranking program statements according to their likelihood of being faulty, which outperforms Tarantula which is the most effective prior approach for statement ranking based fault localization using the benchmark programs the authors studied.
Mining software repair models for reasoning on the search space of automated program fixing
TLDR
This paper is about understanding the nature of bug fixing by analyzing thousands of bug fix transactions of software repositories and shows that not all probabilistic repair models are equivalent.
jSMTLIB: Tutorial, Validation and Adapter Tools for SMT-LIBv2
  • D. Cok
  • Computer Science
    NASA Formal Methods
  • 2011
TLDR
A tutorial and accompanying software package that will help users of SMT solvers understand and apply the newly revised SMT-LIB format and a compliance suite which will be useful to SMT implementors are described.
Toward an understanding of bug fix patterns
TLDR
Overall, data in the paper suggest that developers have difficulty with specific code situations at surprisingly consistent rates, and there appear to be broad mechanisms causing the injection of bugs that are largely independent of the type of software being produced.
...
1
2
3
...