Automated Fixing of Programs with Contracts
arXiv:1403.1117 · doi:10.1109/TSE.2014.2312918
Abstract
This paper describes AutoFix, an automatic debugging technique that can fix faults in general-purpose software. To provide high-quality fix suggestions and to enable automation of the whole debugging process, AutoFix relies on the presence of simple specification elements in the form of contracts (such as pre- and postconditions). Using contracts enhances the precision of dynamic analysis techniques for fault detection and localization, and for validating fixes. The only required user input to the AutoFix supporting tool is then a faulty program annotated with contracts; the tool produces a collection of validated fixes for the fault ranked according to an estimate of their suitability. In an extensive experimental evaluation, we applied AutoFix to over 200 faults in four code bases of different maturity and quality (of implementation and of contracts). AutoFix successfully fixed 42% of the faults, producing, in the majority of cases, corrections of quality comparable to those competent programmers would write; the used computational resources were modest, with an average time per fix below 20 minutes on commodity hardware. These figures compare favorably to the state of the art in automated program fixing, and demonstrate that the AutoFix approach is successfully applicable to reduce the debugging burden in real-world scenarios.
Minor changes after proofreading
References in corpus (4)
Cited by in corpus (15)
- Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
- Automatic Software Repair: a Bibliography
- Automatic Repair of Real Bugs in Java: A Large-Scale Experiment on the Defects4J Dataset
- A Critical Review of "Automatic Patch Generation Learned from Human-Written Patches": Essay on the Problem Statement and the Evaluation of Automatic Software Repair
- A Comprehensive Study of Automatic Program Repair on the QuixBugs Benchmark
- Alleviating Patch Overfitting with Automatic Test Generation: A Study of Feasibility and Effectiveness for the Nopol Repair System
- Tortoise: Interactive System Configuration Repair
- Learning to Generate Corrective Patches using Neural Machine Translation
- RESTORE: Retrospective Fault Localization Enhancing Automated Program Repair
- Verifying Contracts for Perturbed Control Systems using Linear Programming
- Can Automated Program Repair Refine Fault Localization?
- Practical Program Repair via Bytecode Mutation
- Obstacles in Fully Automatic Program Repair: A survey
- ACDC: Altering Control Dependence Chains for Automated Patch Generation
- DAReing to reduce the annotation overheads of verified programs