StatSVN能够从Subversion版本库中取得信息,然后生成描述项目开发的各种表格和图表。
比如:
代码行数的时间线;
针对每个开发者的代码行数;
开发者的活跃程度;
开发者最近所提交的;
文件数量;
平均文件大小;
最大文件;
哪个文件是修改最多次数的;
目录大小;
带有文件数量和代码行数的Repository tree。
StatSVN当前版本能够生成一组包括表格与图表的静态HTML文档。
StatSVN使用JFreeChart来生成chart。
STATSVN可以从:http://www.statsvn.org/index.html 下载。笔者使用了一段时间STATSVN,感觉其可以作为一个有力的开发统计工具,对开发情况进行统计,虽然在统计中还有一些小问题,但仍然值得使用,下面详述一下使用方法。
一 准备工作
StatSVN是一个Java写的开源统计程序,从STATCVS移值而来。其运行需要Java的运行环境支持,所以大家需要安装Java的运行环境。Java运行环境可以从Sun的网站上下载
StatSvn可以从StatSvn官网下载,目前版本是 0.3.1
Statsvn在使用中需要使用SVN的客户端,因此需要确保机器上可以访问到SVN的客户端命令
二 开始统计工作
1:从仓库中CheckOut一个需要统计的路径,如果在工作目录进行这项工作,那需要首先更新一下,保证取出的是最新版本,保证统计结果准确性,此工作也可用TSVN完成
2:生成工作拷贝的XML Log文件供Statsvn解析使用 在工作拷贝目录 使用 svn log
-v --xml > logfile.log
3:调用StatSvn的统计分析工作 java -jar statsvn.jar ...()
参数如下
<logfile> path to the svn logfile of the module
<directory> path to the directory of the checked
out module
Some options:
-version print the version information and exit
-output-dir <dir> directory where HTML suite will
be saved
-include <pattern> include only files matching
pattern, e.g. **/*.c;**/*.h
-exclude <pattern> exclude matching files, e.g.
tests/**;docs/**
-tags <regexp> show matching tags in lines of
code chart, e.g. version-.*
-title <title> Project title to be used in reports
-viewvc <url> integrate with ViewVC installation
at <url>
-bugzilla <url> integrate with Bugzilla installation
at <url>
-username <svnusername> username to pass to svn
-password <svnpassword> password to pass to svn
-verbose print extra progress information
-xdoc optional switch output to xdoc
-threads <int> how many threads for svn diff (default:
25)
-concurrencyThreshold <millisec> switch to concurrent
svn diff if 1st call>thr
eshold (default: 4000)
-dump dump the Repository content on console
下面以一个实例说明
以下任务的目标是每天自动完成更新的仓库的开发统计,把统计数据发布到指定的位置,这样其余人员可以通过Web服务器随时看到最新的统计情况
@ECHO ON
rem 调用格式 runstat 仓库路径 本地名称 发布目录
set repos=%1
set localname=%2
set target=%3
SET LOWER=0
SET UPPER=0
rem 检查一下仓库的最新版本,如果最新版本为0,说明没有内容不需要统计,直接跳出
@FOR /f %%D IN ('%SVN_LOOK% youngest %repos%') DO set
UPPER=%%D
if %UPPER%==0 GOTO :N_EXIT
rem 如果子目录已经存在,认为工作拷贝已经存在,则直接更新,不进行检出工作
if exist .\%localname%\nul GOTO :UPDATE
rem 检出指定的仓库路径到本地名称为目录名的目录下
:CHECKOUT
mkdir .\%localname%
%SVN_SVN% co file:///%repos% .\%localname%
rem 取出上次Update的版本号和当前版本号进行比较,如果版本号较旧则进行更新,否则说明不需要更新,直接跳出
:UPDATE
if not exist .\%localname%\%localname%_last_revision.txt
GOTO :BEGIN_UPDATE
rem 取出上次备份后的版本号,并做+1处理
@FOR /f %%C IN (.\%localname%\%localname%_last_revision.txt)
DO @set LOWER=%%C
@set /a LOWER=%LOWER%+1
rem 不需要更新,则跳转结束
IF %LOWER% gtr %UPPER% GOTO :N_EXIT
rem 更新版本库并记录最新的版本号
:BEGIN_UPDATE
%SVN_SVN% update .\%localname%
@echo %UPPER% > .\%localname%\%localname%_last_revision.txt
rem 生成XMLLog文件,并调用Statsvn进行统计,本例中指定了需要统计的文件类型,并把结果输出到指定的目录,同时开50个线程进行查询,由于我是在本地统计,在网络上不推荐开50个线程。
cd %localname%
%SVN_SVN% log -v --xml > logfile.log
java -jar %STATSVN_JAR% -output-dir %target% -include
**/*.cs;**/*.aspx;**/*.Master;**/*.config;**/*.sitemap
-threads 50 logfile.log .
cd ..
rem 到这里统计文件已经生成,大家可以发指定的发布目录进行查看了。下面给大家两个截图看看
:N_EXIT
@echo 项目库%localname%处理结束...
@exit /B
下面打包好的脚本文件,可以作为大家的参考code.rar
|