一、简介

1、简介

StatSVN是SVN信息库的统计工具,它可以生成SVN日志文件的HTML报告。

2、下载与安装

  • 先决条件

运行StatSVN,需要1.4以上版本的JRE、1.3.0及以上版本的Subversion。

3、使用帮助

可以通过以下命令获取命令行使用帮助:

java -jar statsvn.jar -h
或
java -jar statsvn.jar -help

语法:

java -jar statsvn.jar options <logfile> <checked-out-module>

其中:

  • options

参数项,可选

  • logfile

此参数为SVN日志文件的路径

  • checked-out-module

此参数为SVN检出目录的路径

二、使用

1、从SVN检出目录

使用下面命令检出目录:(如果已检出,可以跳过此步骤)

svn co svn://server/repo/trunk/modulename

2、生成SVN日志文件

切换到从SVN检出的文件目录下并生成日志文件,命令如下:

cd checkout_dir
svn log -v --xml > logfile.log

如果需要,可以通过--username xxx --password xxx参数指定用户名、密码,还可以在svn log后面直接添加PATH参数。

3、运行StatSVN

  • 创建报告结果目录

  • 在结果目录中执行以下命令

java -jar F:\ProgramFiles\statsvn-0.7.0\statsvn.jar ../myproject/logfile.log ../myproject

4、查看报告结果

访问reports目录中的index.html文件:

三、常用参数

1、通用参数

  • -output-dir <directory>

指定报告的输出目录,如果目录不存在,将创建该目录。

java -jar statsvn.jar -output-dir G:\svn\dist G:\svn\myproject\logfile.log G:\svn\myproject
  • -include <include-pattern-list>-exclude <exclude-pattern-list>

    设置生成报告时的过滤规则;如果文件与include-pattern-list中的任何模式不匹配,或者与exclude-pattern-list中的任何模式匹配,则将被忽略。过滤规则中的多个通配符之间使用冒号或分号分隔,通配符有以下几种:

    • ?

    匹配一个字符

    • *

    匹配零个或多个字符

    • **

    匹配零个或多个目录

    例如:src/**/*.java表示匹配src目录或其子目录中的所有Java文件。

      -include "**/*.c:**/*.h" -exclude "legacy/**"
    

    表示匹配所有目录中的.c文件和.h文件,但排除legacy目录及其子目录。

  • -username <subversion_username>

指定连接到SVN服务器时要使用的用户名。

  • -password <subversion_username>

指定连接到SVN服务器时要使用的密码。

  • -no-developer <login-name>

生成报告时排除某些开发人员,可以指定多个用户;使用此参数可以减少来自管理员和其他非开发人员帐户的干扰。

2、报告参数

  • -xdoc

生成Maven XDoc而不是HTML类型的报告,这可以在Maven生成项目Maven站点时集成报告。

  • -xml

生成XML而不是HTML类型的报告。

  • -css <stylesheet>

为报表指定级联样式表,可以是HTTP URL或本地文件。

  • -title <title>

指定要在报告中使用的显示标题;如果没有指定标题,则默认使用SVN模块名。

  • -notes <notes-file>

此文件的内容将会被显示到index.html页面的顶部,该文件应该包含一个有效的块级HTML片段,例如:

<p>这是用StatSVN生成的SVN报告</p>
<p>
  <strong>Note:</strong>
  This report is for testing.
</p>

如果此文件有中文,需设置此文件的字符集。

  • -charset <charSet>

指定在输出报告时使用的字符集;如果没有指定字符集,则使用默认字符集ISO-8859-1。

  • -config-file <path to properties file>

允许用户将源代码管理用户名替换为更多信息,如实名、网站、电子邮件和头像图标等。

  • -disable-twitter-button

如果生成报告时使用了此配置,则在输出的报告中不会有Tweet This按钮。

3、其他参数

  • -debug

输出一些额外的进度信息。

  • -verbose

输出其他进度信息。

4、设置开始和结束日期

StatSVN不提供指定报表开始日期和结束日期的选项,但可以通过svn log命令指定生成日志文件的时间范围:

svn log -v --xml -r {2019-02-20}:{2019-10-20} > log.xml

四、配置文件

使用配置文件可以设置一些用户或图表配置。

1、用户相关配置

User Details
user.[cvsUserName].replacedBy=[new CVS user name] <-- user name that replaces the user (merge!)
user.[cvsUserName].realName=[user real name]
user.[cvsUserName].url=[user homepage full url]
user.[cvsUserName].image=[url to user picture]
user.[cvsUserName].email=[user email]
user.[cvsUserName].twitterUsername=[Twitter userName]
user.[cvsUserName].twitterUserId=[user twitter id, an int!] <-- This is more difficult to find, see the Twitter API section
user.[cvsUserName].twitterIncludeHtml=true/false < -- Typically you'd chose html OR flash
user.[cvsUserName].twitterIncludeFlash=true/false

2、图表相关配置

CHART Details
chart.[chartName].backgroundColor=#AABBCC
chart.[chartName].plotColor=#AABBCC
chart.[chartName].lineSize=1
chart.[chartName].backgroundColor=#AABBCC
chart.[chartName].width=700
chart.[chartName].height=500
chart.[chartName].showShapes=true
chart.[chartName].filledShapes=true
chart.[chartName].copyright=[copyright or any other text, placed at the bottom right]
chart.[chartName].copyrightTextSize=[txt size, default 9]
chart.[name].chartBackgroundImage.url=[url to an image, eg file:///C:/project/statcvs/site/images/statcvslogo.gif]
chart.[name].chartBackgroundImage.transparency=[float 0 to 1, defaulted to 0.35]
chart.[name].plotImage.url=[url to an image, eg file:///C:/project/statcvs/site/images/statcvslogo.gif]
chart.[name].plotImage.transparency=[float 0 to 1, defaulted to 0.35]
Chart Names are:
file_size, file_count, directory_sizes, commitscatterauthors, loc_per_author, directories_loc_timeline, loc_module, loc_small, loc
activity, activity_time, activity_day, locandchurn

3、样例

config.properties:

user.albert.realName=new name
user.albert.url=http://albertbamboo.cn/
user.albert.image=http://albertbamboo.cn/assets/images/bootstrap/img-circle.png
user.albert.email=123456789@qq.com

chart.backgroundColor=#87CEEB
chart.plotColor=#FFE4E1
chart.lineStroke=2
chart.width=809
chart.height=500
chart.copyright=(c)2020
chart.copyrightTextSize=10

chart.chartBackgroundImage.url=file:///C:/Users/acer123/Pictures/2019020823548.jpg
chart.chartBackgroundImage.transparency=0.60

通过-config-file参数设置配置文件G:/svn/config.properties并重新生成报告:

五、与Ant集成

StatSVN为Ant构建工具提供了一个Ant Task,构建文件build.xml内容如下:

<?xml version="1.0"?>
<project name="StatSvnAnt" default="main" basedir=".">
  <taskdef name="statsvn" classname="net.sf.statsvn.ant.StatSvnTask" classpath="F:/ProgramFiles/statsvn-0.7.0/statsvn.jar" />

  <target name="main">
    <statsvn
        path="G:/svn/myproject"
        log="G:/svn/myproject/logfile.log"
        outputDir="G:/svn/stats"
        title="StatSVN"
        include="**/*.java"
        exclude="images/**"
        charset="UTF-8"
        notes="G:/svn/report-notes.txt"/>
  </target>
</project>

其中pathlog属性是必须的,分别表示项目源所在的目录和生成的日志文件路径。

report-notes.txt

<p>这是用StatSVN生成的SVN报告</p>
<p>
  <strong>Note:</strong>
  This report is for testing.
</p>

在命令行切换到ant目录下,执行ant命令:

参考资料: