StatSVN - 全权掌控代码提交状态
 

StatSVN是一个Java写的开源代码统计程序,从StatCVS移植而来,能够从Subversion版本库中取得信息,然后生成描述项目开发的各种表格和图表。比如:代码行数的时间线;针对每个开发者的代码行数;开发者的活跃程度;开发者最近所提交的;文件数量;平均文件大小;最大文件;哪个文件是修改最多次数的;目录大小;带有文件数量和代码行数的Repository tree。StatSVN当前版本能够生成一组包括表格与图表的静态HTML文档。

StartSVN官网地址为:http://www.statsvn.org/index.html

StartSVN的下载页面为:http://www.statsvn.org/downloads.html

现在官网上最新的版本为:statsvn-0.7.0

使用方法和步骤:

StatSVN同时支持windows和linux(本文以Linux环境为例),同时掌握必要的SVN命令是本文的前提和基础,如果比较生疏的,可以先自行Google。

I. 运行环境:

1. 需要Java的运行环境支持,大家需要安装Java的运行环境(Java RuntimeEnvironment)。JRE可以从Sun的网站上下载。

2. Statsvn在使用中需要使用SVN的客户端,因此需要确保机器上可以访问到SVN的客户端命令(windows环境推荐使用svn命令行客户端:SilkSVN)。

II. 获取SVN代码并生成Log文件:

1. CheckOut一个最新的工作版本库(此步骤命令省略)。

2. 使用命令生成Log文件:

  1. svn log -v --xml > logfile.log  

III. 调用StatSVN进行统计

命令格式:

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

参数<logfile>为前一步中生成的svn log文件,<checked-out-module>为checkout工作拷贝目录,注意两个参数都要列出正确的全路径,否则会提示错误如logfile.log找不到等等。

  1. <logfile>          path to the svn logfile of the module     

  2. <directory>        path to the directory of the checked out module    

[options]为可选参数,该参数格式及用法如下:

  1. Some options:     

  2. -version            print the version information and exit     

  3. -output-dir <dir>         directory where HTML suite will be saved     

  4. -include <pattern>        include only files matching pattern, e.g. **/*.c;**/*.h     

  5. -exclude <pattern>    exclude matching files, e.g. tests/**;docs/**     

  6. -tags <regexp>        show matching tags in lines of code chart, e.g. version-.*     

  7. -title <title>            Project title to be used in reports     

  8. -viewvc <url>         integrate with ViewVC installation at <url>     

  9. -trac <url>           integrate with Trac at <url>     

  10. -bugzilla <url>           integrate with Bugzilla installation at <url>     

  11. -username <svnusername> username to pass to svn     

  12. -password <svnpassword> password to pass to svn     

  13. -verbose            print extra progress information     

  14. -xdoc                   optional switch output to xdoc     

  15. -xml                    optional switch output to xml     

  16. -threads <int>            how many threads for svn diff (default25)     

  17. -concurrency-threshold <millisec> switch to concurrent svn diff if 1st call>threshol     

  18. -dump               dump the Repository content on console     

  19. -charset <charset>        specify the charset to use for html/xdoc     

  20. -tags-dir <directory>     optional, specifies the director for tags (default '/tags/')     

  21. Full options list: http://www.statsvn.org  

IV. 查看统计报表:

上述命令运行成功后,可以看到在你的工作目录下生成一组包括表格与图表的静态HTML文档。可以用浏览器打开index.html查看统计结果。如果你懂Jenkins,你可以使用html publish插件对所生成的html文档进行发布

 V. StatSVN的优缺点:

优点:

StatSVN会把当前SVN库的状态用图片和图表的方式展现出来,可以按不同分类分别展开,功能强大。

缺点:

StatSVN统计的是所有代码行,包括注释和空行,但一般度量要求是有效代码行,在分析时需要注意这一点。

StatSVN不考虑修改的代码行数,只考虑与上一版本相比新增(+)与删除(-)的代码行数。

VI. 示例:

下面我以自己在平时使用的命令行以及生成的图标为例,给大家展示下具体效果:

主要代码:

  1. projectname=$1

  2. svn $SVN_OPT log -v --xml > /root/bob/test/$projectname/log.xml   

  3. java -jar /root/bob/tools/statsvn-0.7.0/statsvn.jar /root/bob/test/$projectname/log.xml /root/bob/test/$projectname -charset utf-8 -disable-twitter-button-title $projectname  -include **/*.cpp:**/*.h -output-dir /opt/tomcat/webapps/report  

主要图表(取自官方页面,实际效果是一样的):

StatSVN - 全权掌控代码提交状态_svn

StatSVN - 全权掌控代码提交状态_svn_02


更多效果,请直接参看官方示例页面:http://www.statsvn.org/statsvn-html/user_jkealey.html