StatSVN 是一款开源的从 SVN (Apache Subversion) 存储库中检索信息,并生成描述项目开发的各种表格和图表的统计数据。
包括:
截止目前,最后一个Release版本:2010-01-01: release of 0.7.0 is released
因为 StatSVN 是开源的且托管在 SourceForge,所以可以很轻易的从 SourceForge 获取 StatSVN 的最新Release版本 和 源码 自己编译。
如果本地已经 checkout 下来的项目,可以忽略该步。
因为 StatSVN 需要在该项目目录下运行,需要使用 svn diff
等命令,所以实际只是需要项目的 URL。
故,可以使用以下命令,checkout 一个空内容的项目文件夹,专门用来生成统计数据。
执行以下命令需要本地安装SVN客户端
svn co --depth empty 【SVN地址】 |
StatSVN 需要一个 SVN 的日志文件,来标示一段时间的 SVN 的每次提交信息,用于获取文件的变更记录。运行时,基于该日志文件,使用 svn diff
等命令,统计日志文件包含的时间段内的记录。
1 2 3 4 5 6 7 8 | cd 【保存logfile.log的路径】 // 获取所有提交记录 svn log -v --xml > logfile.log // 获取一段时间内的提交记录 svn log -v --xml -r {2018-12-19}:{2018-10-09} > logfile.log // 获取版本段内的提交记录 svn log -v --xml -r 2299:2301 > logfile.log |
注:因为需要每个版本修改文件的信息,所以 -v
不能少。不然不能运行。
Copy StatSVN.jar
到 【保存logfile.log的路径】 目录下,使用以下命令运行
1 | java -jar statsvn.jar logfile.log 【上面checkout的项目文件夹路径】 -charset utf-8 -output-dir 【报告html存放路径】 |
-charset gbk
,字符集-disable-twitter-button
,停用 Twitter 按钮-output-dir ./report
,输出目录-include
,需要统计的目录或文件(正则表达式)-exclude
,不需要统计的目录或文件(正则表达式)运行完成后,使用浏览器打开【报告html存放路径】中的index.html
即可查看
Subversion binary is incorrect version. Found: 1.12.0, required: 1.3.0 Updating
造成该问题的原因在于 SvnStartupUtils#checkSvnVersionSufficient() 中的判断语句问题
1 | if (versionString.compareTo(SVN_MINIMUM_VERSION) >= 0) |
通过修改该判断,重新编译后运行。
注:
maven-artifact
放到 ..\statsvn-code-r406-trunk\statsvn\lib
目录下..\statsvn-code-r406-trunk\statsvn\src\net\sf\statsvn\util
目录下并覆盖..\statsvn-code-r406-trunk\statsvn\.classpath
,增加一行 <classpathentry kind="lib" path="lib/maven-artifact-3.5.4.jar"/>
..\statsvn-code-r406-trunk\statsvn\build.xml
,<target name="dist" depends="compile,copyfiles">
标签部分中的 Class-Path
属性,如 <attribute name="Class-Path" value="svnkit.jar jna.jar maven-artifact-3.5.4.jar" />
maven-artifact-3.5.4.jar
放到与 statsvn.jar
同目录下即可按照前文介绍的方法正常使用访问 SourceForge StatSVN,获取源码。
编译
该项目使用 Apache Ant 编译,使用如下命令
1 2 3 4 | // 生成 ..\statsvn-code-r406-trunk\statsvn\dist\statsvn.jar ant -buildfile ..\statsvn-code-r406-trunk\statsvn\build.xml dist // 生成 statsvn.jar,发布文件,javadoc等 ant -buildfile ..\statsvn-code-r406-trunk\statsvn\build.xml release |
其余可用命令查看 ./statsvn-code/statsvn/build.xml
使用该工具可以很快速的统计出整个项目的代码开发情况,可以将当前SVN库的状态用图表的方式展现,直观方便。但是 StatSVN 统计的是所有的行,包括注释和空行,不仅是有效代码行,且不计算修改的代码行,只计算新增或删除的代码行数,比较局限。在我看来,仅有纪念意义,无其它的实际意义。要考察代码质量,推荐使用 SonarQube 等工具。