Calculates change (some people call it social?) metrics in Git repositories. It generates a CSV file with the following header:
"project": the name of the project directory, "file": the full file path, "revisions": quantity of commits, "refactorings": quantity of refactorings that occured (if said in commit msg), "bugfixes": quantity of bugs that file has had (if said in commit msg), "authors": quantity of different authors, "locAdded": total of LOC added, "locRemoved": total of LOC removed, "maxLocAdded": maximum number of LOC added, "maxLocRemoved": maximum number of LOC removed, "avgLocAdded": average of LOC added, "avgLocRemoved": average of LOC removed, "codeChurn": sum of all LOC added and removed, "maxChangeset": max number of files committed together with this file, "avgChangeset": average number of files committed together, "firstCommit": date of the first commit, "lastCommit": date of the last commit, "weeks": difference in weeks from the last commit - first commit.
The main method receives three parameters.
java -jar <tool.jar> /dir/to/the/git/project /dir/to/the/file/output.csv all|single
- The project path
- The output path
- Type of project path (all|single)
If the type is
all, then it will analyse all projects in sub-directories
of the project path. If type is
single, it will consider the directory as a
Example of usage:
java -jar change-metrics.jar /Users/projects /Users/change-metrics.csv all java -jar -Xms2g -Xmx2g change-metrics.jar /Users/projects/ant /Users/change-metrics-ant.csv single
To make the integration test to work, unzip the repo.zip (in
src/test/resources) in any
directory of your machine (I usually put it in
src/test/repo). Then, put the file path
to the unzipped dir inside
Tests will run.
Change metrics were based in the paper by Moser, R., Pedrycz, W., & Succi, G. (2008, May). A comparative analysis of the efficiency of change metrics and static code attributes for defect prediction. In Software Engineering, 2008. ICSE'08. ACM/IEEE 30th International Conference on (pp. 181-190). IEEE.
It uses RepoDriller, a framework that supports researchers in MSR studies. See more at www.repodriller.org.
This is licensed under Apache license 2.0.