GenProg: A Generic Method for Automatic Software Repair

@article{Goues2012GenProgAG,
  title={GenProg: A Generic Method for Automatic Software Repair},
  author={Claire Le Goues and ThanhVu Nguyen and Stephanie Forrest and Westley Weimer},
  journal={IEEE Transactions on Software Engineering},
  year={2012},
  volume={38},
  pages={54-72}
}
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. [] Key Result We analyze the generated repairs qualitatively and quantitatively to demonstrate that the process efficiently produces evolved programs that repair the defect, are not fragile input memorizations, and do not lead to serious degradation in functionality.

Figures from this paper

Toward improving ability to repair bugs automatically: a patch candidate location mechanism using code similarity
TLDR
Some promising results are reported of the pilot study, which show that using code similarity to select code lines in code regions similar to the faulty code regions is very effective to generate repaired programs in less time.
Quality of Automated Program Repair on Real-World Defects
TLDR
This paper rigorously explores the effectiveness of four well-known repair techniques, GenProg, Par, SimFix, and TrpAutoRepair, on defects made by the projects’ developers during their regular development process, and develops JaRFly, an open-source framework for implementing techniques for automatic search-based improvement of Java programs.
A novel fitness function for automated program repair based on source code checkpoints
TLDR
GenProg is a method for Automated Program Repair based on an evolutionary approach that aims to generate bug repairs without human intervention or a need for special instrumentation or source code annotations and it is found that the proposed fitness function minimizes plateaus, increases expressiveness, and the efficiency of the search.
SOSRepair: Expressive Semantic Search for Real-World Program Repair
TLDR
SOSRepair is an automated program repair technique that uses semantic code search to replace candidate buggy code regions with behaviorally-similar (but not identical) code written by humans, and is the first such technique to scale to real-world defects in real- world systems.
An Assessment of the Quality of Automated Program Operator Repair
  • F. Assiri, J. Bieman
  • Computer Science
    2014 IEEE Seventh International Conference on Software Testing, Verification and Validation
  • 2014
TLDR
It is found that repair processes that use tests that satisfy branch coverage reduce the number of new faults, and a mutation based repair process produces repairs that should be more maintainable compared to those produced using existing code.
A manual inspection of Defects4J bugs and its implications for automatic program repair
TLDR
To understand to what extent defects can be fixed with exiting test suites, a manually analyzed 50 real-world defects from Defects4J, where a large portion of them were correctly fixed and suggests that there is much room for the current automatic program repair techniques to improve.
Current challenges in automatic software repair
TLDR
Current work on evolutionary computation approaches is reviewed, focusing on GenProg, which uses genetic programming to evolve a patch to a particular bug, and important open research challenges are outlined that should guide future research in the area.
Leveraging program equivalence for adaptive program repair: Models and first results
TLDR
Generate-and-validate program repair is shown to be a dual of mutation testing, suggesting several possible cross-fertilizations and a novel deterministic repair algorithm that computes a patch quotient space with respect to an approximate semantic equivalence relation.
Applying CodeBERT for Automated Program Repair of Java Simple Bugs
  • Ehsan Mashhadi, H. Hemmati
  • Computer Science
    2021 IEEE/ACM 18th International Conference on Mining Software Repositories (MSR)
  • 2021
TLDR
A novel automated program repair approach based on CodeBERT, which is a transformer-based neural architecture pre-trained on large corpus of source code, which can generate varied-length fixes and can fix different types of bugs, even if only a few instances of those types of Bugs exists in the training dataset.
ARJA: Automated Repair of Java Programs via Multi-Objective Genetic Programming
TLDR
This paper proposes ARJA, a new GP based repair approach for automated repair of Java programs, and presents a novel lower-granularity patch representation that properly decouples the search subspaces of likely-buggy locations, operation types and potential fix ingredients, enabling GP to explore the search space more effectively.
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 81 REFERENCES
Automatically finding patches using genetic programming
TLDR
A fully automated method for locating and repairing bugs in software that works on off-the-shelf legacy applications and does not require formal specifications, program annotations or special coding practices is introduced.
A genetic programming approach to automated software repair
TLDR
The paper describes the method, reviews earlier experiments that repaired 11 bugs in over 60,000 lines of code, reports results on new bug repairs, and describes experiments that analyze the performance and efficacy of the evolutionary components of the algorithm.
Automated program repair through the evolution of assembly code
TLDR
The paper explores advantages of assembly-level repair over earlier work at the source code level - the ability to repair programs written in many different languages; and the able to repair bugs that were previously intractable.
Automatic program repair with evolutionary computation
TLDR
This paper highlights recent work combining program analysis methods with evolutionary computation to automatically repair bugs in off-the-shelf legacy C programs.
Designing better fitness functions for automated program repair
TLDR
Two approaches to enhancing fitness functions for program repair are investigated, incorporating (1) test suite selection to improve efficiency and (2) formal specifications to improve precision.
Automatically documenting program changes
TLDR
An automatic technique for synthesizing succinct human-readable documentation for arbitrary program differences is presented, based on a combination of symbolic execution and a novel approach to code summarization, that is suitable for supplementing or replacing 89% of existing log messages that directly describe a code change.
Specification Mining with Few False Positives
TLDR
This is the first specification miner with such a low false positive rate, and thus a low associated burden of manual inspection, and the technique identifies which input is most indicative of program behavior, which allows off-the-shelf techniques to learn the same number of specifications using only 60% of their original input.
A novel co-evolutionary approach to automatic software bug fixing
  • A. Arcuri, X. Yao
  • Computer Science
    2008 IEEE Congress on Evolutionary Computation (IEEE World Congress on Computational Intelligence)
  • 2008
TLDR
This paper proposes an evolutionary approach to automate the task of fixing bugs based on co-evolution, in which programs and test cases co- evolve, influencing each other with the aim of fixing the bugs of the programs.
Evolutionary unit testing of object-oriented software using strongly-typed genetic programming
TLDR
The approach presented in this paper relies on a tree-based representation of method call sequences by which sequence feasibility is preserved throughout the entire search process, and uses an extended distance-based fitness function to deal with runtime exceptions.
Using Mutation to Automatically Suggest Fixes for Faulty Programs
  • Vidroha Debroy, W. E. Wong
  • Computer Science
    2010 Third International Conference on Software Testing, Verification and Validation
  • 2010
TLDR
A strategy for automatically fixing faults in a program by combining the processes of mutation and fault localization, which is effective at automatically suggesting fixes for faults without any human intervention is proposed.
...
1
2
3
4
5
...