Holmes is a prototype implementation of Causal Testing, a novel testing technique that uses causal experiments to help developers debug Java programs. This repository contains the source code along with the user study setup and materials for the paper titled:
Causal Testing: Understanding Defects' Root Causes by Brittany Johnson, Yuriy Brun, and Alexandra Meliou, published in the Proceedings of the 42nd International Conference on Software Engineering (ICSE) 2020. http://dx.doi.org/10.1145/3377811.3380377
The version of Holmes described in that paper, and the artifact released with that paper, can be viewed at https://doi.org/10.5281/zenodo.3676139
- Clone this repository, which includes the Holmes directory where the source code is contained.
- Download defects4j into the Holmes directory.**
- Install the Eclipse IDE and make sure you have at least Java 1.7 installed on your machine.
- Install Python and Node.js.
** Note: The version of Holmes in this repo only works with projects in the Defects4J benchmark. We are currently working on an implementation that is able to run on any JUnit test within the Eclipse IDE.
If you want to run or use Holmes on your own machine, you will need to do the following:
- Import the Holmes directory into Eclipse (File > Import... > General/Existing Projects into Workspace).
- Once imported, open the RunHolmes.java file. At the top there is a global field called workingDirectory. Update this variable with the path to the Holmes directory on your machine.
- Update the paths to python and node in the fuzzing script (Holmes/fuzzers/fuzz.sh) to the locations for python and node on your machine.
- From here, you can install Holmes by either exporting the plug-in or installing the plug-in to your host Eclipse.
Please reference the README.md inside the artifact_documentation directory for more details on using Holmes for debugging.