diff --git a/README.md b/README.md index 3e8645d..7e2524b 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,10 @@ You can cite FixMiner using the following bibtex: Fixminer is a systematic and automated approach to mine relevant and actionable fix patterns for automated program repair. ![The workflow of this technique.\label{workflow}](worflow.png) +** This version of the Fixminer has some changes compared to the one published in the paper. + + - The iteration that was computing the shapes separetely is removed. Now the operation of the shape trees are performed together with the action trees. As a result of this change no shape clusters are generated separately anymore. The initial output of the pattern mining iteration is action trees (a.k.a patterns ) + ## II. Environment setup * OS: macOS Mojave (10.14.3) @@ -82,8 +86,8 @@ In order to launch FixMiner, execute [fixminer.sh](python/fixminer.sh) In order to launch FixMiner, execute [fixminer.sh](python/fixminer.sh) - bash fixminer.sh [JOB] [CONFIG_FILE] - e.g. bash fixminer.sh dataset4c /Users/projects/release/fixminer_source/src/main/resources/config.yml + bash fixminer.sh [CONFIG_FILE] [JOB] + e.g. bash fixminer.sh /Users/projects/release/fixminer_source/src/main/resources/config.yml dataset4c A log file (app.log) is created after every execution of the [fixminer.sh]((python/fixminer.sh)). Please check this log file in order to access more information. @@ -91,30 +95,38 @@ A log file (app.log) is created after every execution of the [fixminer.sh]((pyth #### Job Types -*FixMiner* needs to specify a job to run. +*FixMiner* needs to follow an execution, **in the order listed below** in order to create clusters of patches. 1. __dataset4j__ / __dataset4c__: Create a java/c mining dataset from the projects listed in [subjects.csv](python/data/subjects.csv) or [datasets.csv](python/data/datasets.csv) for c - 2. __richEditScript__: Calls the jar file produced as the results as maven package to compute Rich edit scripts. + 2. __richedit__: Calls the jar file produced as the results as maven package to compute Rich edit scripts. This step can be invoke natively from java or using the [Launcher](src/main/java/edu/lu/uni/serval/richedit/Launcher.java) with appropriate arguments. ```powershell java -jar FixPatternMiner-1.0.0-jar-with-dependencies.jar /Users/projects/release/fixminer_source/src/main/resources/config.yml RICHEDITSCRIPT ``` - 3. __shapeSI__: Search index creation for shapes. The output of this step is written to __pairs__ folder which will be generated under __datapath__ in [config file](src/main/resources/config.yml) + 3. __actionSI__: Search index creation for actions. The output of this step is written to __pairs__ folder which will be generated under __datapath__ in [config file](src/main/resources/config.yml) 4. __compare__ : Calls the jar file produced as the results as maven package to compare the trees. This step can be invoke natively from java or using the [Launcher](src/main/java/edu/lu/uni/serval/richedit/Launcher.java) with appropriate arguments. - ```powershell - java -jar FixPatternMiner-1.0.0-jar-with-dependencies.jar /Users/projects/release/fixminer_source/src/main/resources/config.yml COMPARE - - ``` - 5. __cluster__ : Forms clusters of identical trees. The output of this step is written to __shapes__ folder which will be generated under __datapath__ in [config file](src/main/resources/config.yml) + ```powershell + java -jar FixPatternMiner-1.0.0-jar-with-dependencies.jar /Users/projects/release/fixminer_source/src/main/resources/config.yml COMPARE + ``` + 5. __cluster__ : Forms clusters of identical trees. The output of this step is written to __actions__ folder which will be generated under __datapath__ in [config file](src/main/resources/config.yml) - 6. __stats__: Calculate frequency statistics of the patterns under statsshapes.csv in datapath. The information is also written in app.log file. + 6. __tokenSI__ : Search index creation for tokens. The output of this step is written to __pairsToken__ folder which will be generated under __datapath__ in [config file](src/main/resources/config.yml) - 7. __exportPatterns__ : Export FixPatterns of APR integration under patterns folder located in datapath/ + 7. __compare__ : Calls the jar file produced as the results as maven package to compare the trees. + This step can be invoke natively from java or using the [Launcher](src/main/java/edu/lu/uni/serval/richedit/Launcher.java) with appropriate arguments. + + ```powershell + java -jar FixPatternMiner-1.0.0-jar-with-dependencies.jar /Users/projects/release/fixminer_source/src/main/resources/config.yml COMPARE + ``` + + 8. __stats__: Calculate frequency statistics of the patterns under statsactions.csv in datapath. The information is also written in app.log file. + + 7. __patterns__ : Export FixPatterns of APR integration under patterns folder located in datapath/