RMinerEvaluationTools

December 18, 2019 ยท View on GitHub

Tools used for the evaluation of RefactoringMiner 2.0

Oracle

We used the >7000 refactorings in this oracle as the ground truth for evaluating the precision and recall of the 6 tools.

Tools

RefDiff 0.1.1

We made the following updates to this tool:

  • Updated the description format of the reported refactorings to match that of the oracle
  • Updated the Git checkout process: ** if git checkout for a commit fails, try 'git checkout master -f' and then try to checkout the commit again ** If this does not work, we use the Github API to download the zip of the project at the particular commit
  • Added Extract And Move method feature by : ** If the 'from' and the 'to' methods belong to different classes, we classify it as Extract And Move Method Refactoring ** Ensuring that no rename, move and move & rename class refactoring led to this conclusion

To evaluate this tool over the oracle:

  • Download the latest JSON from the oracle and update this file.
  • Fill in your GitHub credentials here
  • Provide a path to the folder where repositories could be cloned or found, here
  • Execute TestAllRefactoringsRD.testAllRefactorings to run the evaluation
  • Output of the evaluation will be found in the folder named 'Output' in the working directory.
  • Execute the main method in AnalyseResults to calculate precision and recall per refactoring.

RefDiff 1.0

We made the following updates to this tool:

  • Updated the description format of the reported refactorings to match that of the oracle
  • Updated the Git checkout process: ** if git checkout for a commit fails, try 'git checkout master -f' and then try to checkout the commit again ** If this does not work, we use the Github API to download the zip of the project at the particular commit
  • Added Extract And Move method feature by : ** If the 'from' and the 'to' methods belong to different classes, we classify it as Extract And Move Method Refactoring ** Ensuring that no rename, move and move & rename class refactoring led to this conclusion

To evaluate this tool over the oracle:

  • Download the latest JSON from the oracle and update this file.
  • Fill in your GitHub credentials here
  • Provide a path to the folder where repositories could be cloned or found, here
  • Execute TestAllRefactoringsRD.testAllRefactorings to run the evaluation
  • Output of the evaluation will be found in the folder named 'Output' in the working directory.
  • Execute the main method in AnalyseResults to calculate precision and recall per refactoring.

RefDiff 2x

We made the following updates to this tool:

  • Updated the description format of the reported refactorings to match that of the oracle
  • Updated the tool to not report Move and/or Rename method refactorings when the method itself is abstract

To evaluate this tool over the oracle:

  • Download the latest JSON from the oracle and update this file.
  • Since this version of RefDiff does not require the entire repository, it fetches the changed files from this folder
  • Execute TestAllRefactoringsRD.testAllRefactorings to run the evaluation
  • Output of the evaluation will be found in the folder named 'Output' in the working directory.
  • Execute the main method in AnalyseResults to calculate precision and recall per refactoring.

RefactoringMiner 1.0

We made the following updates to this tool:

  • Updated the description format of the reported refactorings to match that of the oracle
  • Updated the tool to not checkout each commit, instead query the changes from using the Github API

To evaluate this tool over the oracle:

  • Download the latest JSON from the oracle and update this file.
  • Execute TestAllRefactorings.testAllRefactorings to run the evaluation
  • Output of the evaluation will be found in the folder named 'Output' in the working directory.
  • Execute the main method in AnalyseResults to calculate precision and recall per refactoring.

RefactoringMiner 2.0

To evaluate RefactoringMiner 2.0:

  • Get the latest version of it from here
  • Follow steps similar to RefactoringMiner 1.0

GumTree 2.1.2

GumTree is used for the evaluation of Rename and Change Type refactoring. To evaluate GumTree 2.1.2:

  • Download the latest JSON from the oracle and update this file.
  • Execute TestAllRefactorings.testAllRefactorings to run the evaluation
  • Output of the evaluation will be found in the folder named 'Output' in the working directory.
  • Execute the main method in AnalyseResults to calculate precision and recall per refactoring.

Results

RefactoringMiner and RefDiff RefactoringMiner and Gumtree Runtime comparison