The JAID tool
JAID is an automated program repair tool in and for Java.
The revision of JAID used for the experiments described in the ASE 2017 paper is tagged with
ASE-2017; the corresponding self-contained binary is also available as a Jar file.
The user manual explains how to use JAID for fixing and how to read the relevant output from a fixing session. The developer manual describes how to use the IntelliJ IDEA IDE for running/debugging JAID.
Replication package for experiments using Defects4J faults (ASE 2017)
For someone not familiar with JAID and/or the Defects4J benchmark, it could take quite some time to set up and run the experiments; scripts in Experiment_Scripts_ASE_2017.zip will get you started with this. See
README.md in the archive for how to use the scripts.
In the experiments described in the ASE 2017 paper, JAID built at least one valid fix for 31 faults from Defects4J. The detailed results from running JAID on these faults are available in Experimental_Results_ASE_2017.zip. For each fault, there are three files included in the archive. For example, take fault
chart1_plausible.loglogs JAID's output. This file contains all the valid fixes JAID generated; the top 50 valid fixes have been manually inspected and the ones that are semantically equivalent to the human-written fix in Defects4J have been marked with the keyword
#Correct#. If none of the top 50 fixes are correct, we continued the manual inspection of the other fixes and stopped when we find a correct one, or no more valid fixes are available. In cases where the semantic equivalence is not immediately obvious, the file includes brief explanations (within a pair of
chart1_d4j_patch.difffrom Defects4J, capturing the changes to construct the buggy version of the program from the correct version. In other words, the diff encodes changes that are in reverse direction compared to the corresponding human-written fix.
chart1_formatted_srcis the formatted version of the class to be fixed. JAID formats the source code of the method under fixing before running the fixing process. Thus, all generated fixes are with respect to this formatted, rather than the original, version of the method.