Repairnator is a software development bot that automatically repairs build failures on Travis CI. It scans failing Travis builds, tries to locally reproduce the failing build due to test failures and tries to repair it with program repair tools (e.g. Nopol and Astor).
- How to Design a Program Repair Bot? Insights from the Repairnator Project (Simon Urli, Zhongxing Yu, Lionel Seinturier, Martin Monperrus). In Proceedings of 40th International Conference on Software Engineering, Track Software Engineering in Practice (SEIP), 2018. (bibtex)
- "How to Design a Program Repair Bot? Insights from the Repairnator Project" (Martin Monperrus), Software Technology Exchange Workshop, STEW, 2018, Malmö, Oct 17 2018
- "How to Design a Program Repair Bot? Insights from the Repairnator Project" (Simon Urli), International Conference on Software Engineering, Gothenburg, June 1st 2018
- "How to Design a Program Repair Bot for Travis CI?", (Simon Urli, Martin Monperrus) Webinar at Travis CI, May 15 2018
- "The Future of Automated Program Repair" (Martin Monperrus), 13th Annual Symposium on Future Trends in Service-Oriented Computing, Hasso Plattner Institute, Postdam, April 19 2018
- "How to Design a Program Repair Bot? Insights from the Repairnator Project" (Simon Urli) 58th CREST Open Workshop - Automating Programmers’ Programming Experiments for Analytic Result Reporting in Code Review and Continuous Integration, London, February 27 2018
The following is just a quickstart. For more advanced usage, go to read the usage section of our documentation.
In order to run Repairnator with the provided scripts, you'll need:
- git
- docker
- uuidgen utility tools (available for Mac & Linux)
- a Github API key (Go to Github Personal Access Tokens, and click on "Generate new token".)
All Repairnator scripts are located in the directory repairnator/scripts
.
The scripts use the global configuration set in repairnator/scripts/config/repairnator.cfg
.
You can define your own configuration in a file repairnator.cfg
located in your home.
For more information about repairnator.cfg
read our complete documentation.
git clone https://github.com/Spirals-Team/repairnator/
cd repairnator
# edit the file to specify the mandatory elements (you must add the GitHub Personal Access Token here)
cp repairnator/scripts/config/repairnator.cfg ~
vi ~/repairnator.cfg
From a Travis URL like this one: https://travis-ci.org/surli/test-repairnator/builds/352395977 you can retrieve a Build ID by taking the last part of the URL.
Here it is: 352395977
.
All you have to do to launch Repairnator to reproduce and try fixing this build is then to go in repairnator/scripts/
and launch repair_buggy_build.sh
with the build ID as argument:
# set $HOME_REPAIR and $GITHUB_OAUTH in repairnator/scripts/config/repairnator.cfg
cp repairnator/scripts/config/repairnator.cfg ~
vi ~/repairnator.cfg
cd repairnator/scripts
# start a docker container and run Repairnator on your specified Build ID.
./repair_buggy_build.sh 352395977
# When the docker container is done you can find logs and serialized files in the `$HOME_REPAIR/logs` path.
ls $HOME_REPAIR/logs
You can launch Repairnator to analyze Travis CI builds in realtime and to repair failing ones.
First open your repairnator.cfg
config file (see above) and edit the values under Realtime scanner configuration
section:
DURATION
is an optional value: if the value is left blank, the process will never stop; else it will last the specified duration (pay attention on the format, see: https://en.wikipedia.org/wiki/ISO_8601#Durations)WHITELIST_PATH
andBLACKLIST_PATH
can be left on the default value, or you can use the files available inrepairnator/repairnator-realtime/src/main/resources
Then just run the script launch_rtscanner.sh
.
- this generates build reproduction info and patches as local files in a folder named
logs/
- in this default setup, no MongoDB is used, no email notification is done
If you want to bring your own tool in Repairnator, have a look on contribution guidelines 😄
This repository is organized as follows:
- doc contains some documentation about Repairnator and its usage
- repairnator is the main program dedicated to this project: it can automatically scan large set of projects, detect failing builds, reproduce them and try to repair them using our tools
- bears-usage is a side project dedicated to gather data from repairnator.json files
- resources contains mainly data produced by Repairnator and scripts to retrieve those data. It also contain the schema of repairnator.json files.
- website contains all data to produce repairnator website
Each directory contains its own Readme explaining its own internal organization.
- Github releases: https://github.com/Spirals-Team/repairnator/releases
- Maven releases: https://search.maven.org/search?q=repairnator
- DockerHub releases: https://hub.docker.com/r/spirals/repairnator/
This project has been funded by InriaHub. The content of this repository is licensed under the MIT terms.