Wiki

Clone wiki

JAID / Home

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 revision of JAID used for the experiments in January 2019 is tagged with Jan2019; the corresponding self-contained binary is also available as a Jar file.

Documentation

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)

Experiment scripts

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.

Experimental results

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:

  • chart1_plausible.log logs 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 #s).

  • chart1_d4j_patch.diff from 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_src is 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.

Replication package for experiments using Defects4J, IntroClassJava and QuixBugs faults (January 2019)

Experiment scripts

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 (click to download) will get you started with this. See the script namual for how to use the scripts.

Experimental results

The detailed results from running JAID on these faults are available in (click to download) with high level result summary. For each fault, the log that contains all the generated valid and correct fixes is provided.

Consider Fault Chart1 for example. Chart1.log logs 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 #s).

Reference

  • ASE 2017 paper: Liushan Chen, Yu Pei, and Carlo A. Furia. Contract-based Program Repair Without the Contracts. In Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE). (preprint)

Updated