一、我的运行环境如下
* MacOS
* Java 1.8
* python2.7
* Git 2.15.1
二、在这里下载 repoScan-1.0.jar 。
https://download.csdn.net/download/tony1130/12239750
三、在自己电脑上安装:
1. 安装 git
2. 安装Python。
3. 用下面的命令安装 lizard
(它是扫描代码内部质量的工具,如圈复杂度,函数长度,代码重复读等等,https://github.com/terryyin/lizard)
pip install lizard
四、开始收集代码仓库的质量数据
1、Clone 一个git代码仓库到本地,例如 谷歌的Guava
git clone https://github.com/google/guava.git guava
2.进入到代码仓库的根目录guava
# 项目说明
按统计Git仓库中的代码圈复杂度
(去除所有的 */test/* 目录)
# 用到的工具
* Git
* [lizard](https://github.com/terryyin/lizard)
## 克隆和build
* 克隆本项目
* 在命令行下执行 `mvn test`,或者导入到 IDE,运行测试,看到测试运行通过
* 在命令行下执行 `mvn -Dmaven.test.skip=true clean package` ,可以在`${basedir}/target/`生成jar文件,名为`repo-1.0.jar`
## 已测试的运行环境
* MacOS
* Java 1.8
* python2.7
* Git 2.15.1
## 运行前的准备
* 安装Git
* 在MacOS上安装lizard
```
pip install lizard
```
## 运行程序
以下面的格式,运行下面命令
```java -jar [your_jar_path]/repoScan-1.0.jar -R [repo_path] -C [CC_threshold] -I [days_interval] -V [maxVolume] -F [logfile.txt]```
* `[repo_path]` 扫描的仓库目录,默认为 `.`,即当前目录
* `[CC_threshold]` 圈复杂度的阈值,默认为`5`。1,99999,java,nolog,outputDir
* `[days_interval]` 统计所需的天数间隔,默认为`1`, 即:每天一个commit样本。如果为`30`,则每30天取一个commit样本。
* `[maxVolume]` 最多统计多少个样本,目前还没有实现该功能。
* `[logfile.txt]` 保存git log的文件(使用相对repo的路径)。默认是 `nolog`, 即:程序会自动生成获取log信息,不需要事先手工生成日志文件。
例如,下面的命令表示对当前目录的Git仓库进行扫描,圈复杂度阈值为10, 样本周期是60天,使用默认语言,即:java。
`java -jar ../codemetrics/target/demo-1.0-SNAPSHOT.jar -R . -C 10 -I 60`
输出结果会保存在文件中,默认在 outputDir/codebase_summary.csv。
## 已知问题
* 如果git历史log较多,程序会阻塞。此时,应使用准备环节所述的命令事先生成logfile。生成logfile的命令如下所示:
```git log --pretty=%ci,%h --first-parent --no-merges > logfile.txt```