当前位置: 首页 > 工具软件 > StatSvn > 使用案例 >

StatSVN:Subversion binary is incorrect version. Found: 1.12.0, required: 1.3.0 Updating

岳谦
2023-12-01

本文转自https://yamdestiny.xyz/2019/03/08/how-to-use-statsvn/ 并在此文基础上修改了部分内容

StatSVN 是什么

StatSVN 是一款开源的从 SVN (Apache Subversion) 存储库中检索信息,并生成描述项目开发的各种表格和图表的统计数据。

包括:

  • 每个提交人员的统计数据
  • 每次提交的统计数据
  • 项目代码行的变化
  • 文件统计(文件修改版本统计,文件行数统计,不同文件类型统计)
  • 目录大小

截止目前,最后一个Release版本:2010-01-01: release of 0.7.0 is released

如何使用

因为 StatSVN 是开源的且托管在 SourceForge,所以可以很轻易的从 SourceForge 获取 StatSVN 的最新Release版本 和 源码 自己编译。

先决条件

  • Java: 1.4 或更高版本
  • Subversion command-line client: SVN 的命令行客户端, 1.3 或更高版本
  • 本文介绍在windows环境下

操作步骤

  1. checkout 需要统计的项目
  2. 导出一个该项目的日志文件
  3. 运行 StatSVN 即可

checkout 项目

如果本地已经 checkout 下来的项目,可以忽略该步。

因为 StatSVN 需要在该项目目录下运行,需要使用 svn diff 等命令,所以实际只是需要项目的 URL。

故,可以使用以下命令,checkout 一个空内容的项目文件夹,专门用来生成统计数据。

执行以下命令需要本地安装SVN客户端

svn co --depth empty 【SVN地址】

 

生成 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 不能少。不然不能运行。

运行 StatSVN

  1. Copy StatSVN.jar 到 【保存logfile.log的路径】 目录下,使用以下命令运行

    1
    java -jar statsvn.jar logfile.log 【上面checkout的项目文件夹路径】 -charset utf-8 -output-dir 【报告html存放路径】
  2.  

    • -charset gbk,字符集
    • -disable-twitter-button,停用 Twitter 按钮
    • -output-dir ./report,输出目录
    • -include,需要统计的目录或文件(正则表达式)
    • -exclude,不需要统计的目录或文件(正则表达式)

  3. 运行完成后,使用浏览器打开【报告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)

 

通过修改该判断,重新编译后运行。

参考 BUG#108BUG#109

注:

  1. 如使用 BUG#109 的方式
    1. 需要下载 maven-artifact 放到 ..\statsvn-code-r406-trunk\statsvn\lib 目录下
    2. 需要下载SvnStartupUtils.java 放到 ..\statsvn-code-r406-trunk\statsvn\src\net\sf\statsvn\util目录下并覆盖
    3. 修改..\statsvn-code-r406-trunk\statsvn\.classpath,增加一行 <classpathentry kind="lib" path="lib/maven-artifact-3.5.4.jar"/>
    4. 修改..\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" />
    5. 编译项目生成statsvn.jar
    6. 将 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 等工具。

 类似资料: