AutoFix is a tool for the automated repair of bugs in programs equipped with simple contracts (pre- and postconditions) written in the Eiffel programming language. It uses AutoTest to generate unit tests and contracts as testing oracles, which makes the fixing process completely automatic and generates fixes of high quality.
This page documents AutoFix 2015: the version of AutoFix incorporating the techniques developed between 2009 and 2015, and described in detail in the TSE 2014 and ICSE 2015 papers listed below. AutoFix 2015 is made available here for future reference. Henceforth, we refer to AutoFix 2015 simply as AutoFix.
Overview
AutoFix is a technique and tool for automated program repair. As program faults are discrepancies between the implementation and the specification (expressed as simple contracts), a fix may involve changes to the implementation, the specification, or even both. AutoFix exploits dynamic program analysis techniques to understand the fault cause, synthesize potential fixes to either the implementation or the contracts, and validate the synthesized fixes. In our experimental evaluations, AutoFix was able to automatically propose high-quality fixes to real world program faults.
High-quality fixes
We applied AutoFix to over 200 faults in four code bases, including both open-source software developed by professionals and student projects of various quality. AutoFix successfully fixed 86 (or 42%) of the faults; inspection shows that 51 of these fixes (for 25% of all faults) are genuine corrections with the same effect as those competent programmers would write. AutoFix was the first tool to achieve such high percentages of correct fixes on general-purpose software. More information about the experimental evaluation of AutoFix on implementation fixes can be found in our publication in TSE 2014. AutoFix is able to produce high quality fixes to both the implementation and the specification.Downloads
AutoFix is part of the Eve integrated verification environment, the research branch of EiffelStudio.- A Ubuntu virtual machine with Eve and AutoFix preinstalled is available here. You will need VMWare Player (6.0.2 build-1744117 or later) to launch the virtual machine. (User account: AutoFix-Demo; Password: autofix)
- Instructions to install and compile Eve from source
- Binary distributions of EVE
User's manual
The user's manual of AutoFix is available here.Publications
- Automated Program Repair in an Integrated Development Environment.
Yu Pei, Carlo A. Furia, Martin Nordio, and Bertrand Meyer. ICSE 2015.
This tool demo paper describes the integration of AutoFix into Eve's IDE. - Automated Fixing of Programs with Contracts.
Yu Pei, Carlo A. Furia, Martin Nordio, Yi Wei, Andreas Zeller, and Bertrand Meyer. IEEE Transactions on Software Engineering, 2014.
This paper describes the latest implementation of AutoFix, which integrates the model-based and code-based techniques, and a thorough experimental evaluation over 200 real bugs. - Automatic Program Repair by Fixing Contracts.
Yu Pei, Carlo A. Furia, Martin Nordio. FASE 2014.
This paper introduces a technique for fixing specifications (called SpeciFix). - Code-based Automated Program Fixing.
Yu Pei, Yi Wei, Carlo A. Furia, Martin Nordio, Bertrand Meyer. ASE 2011.
This paper introduces a new code-based fixing technique based on fault localization, as well as the notion of proper fix (a semantically correct fix). - Automated Fixing of Programs with Contracts.
Yi Wei, Yu Pei, Carlo A. Furia, Lucas S. Silva, Stefan Buchholz, Bertrand Meyer and Andreas Zeller. ISSTA 2010.
First paper on AutoFix (called AutoFix-E there), describing the initial model-based fixing technique.