统计SVN代码行数工具-StatSVN - valleylord - 博客园

标签: 统计 svn 代码 | 发表时间:2017-10-31 15:02 | 作者:
出处:http://www.cnblogs.com

1. 获取SVN log:svn log -v -r 17461:39224 --xml > logfile.log

2. 用StatSVN分析:java -jar ~/project/statsvn-0.7.0/statsvn.jar logfile.log <Working Copy的目录 >


StatSVN介绍

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

StatSVN下载

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

StartSVN的下载页面为:http://www.statsvn.org/downloads.html也可以下载本文的附件

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

StatSVN使用

使用须知

 

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

Statsvn在使用中需要使用SVN的客户端,因此需要确保机器上可以访问到SVN的客户端命令

 

Checkout工作拷贝

 

首先从SVN仓库中checkout一个需要统计的路径(如果在工作目录下进行统计,首先请更新,保证工作区中的版本是最新的版本,确保统计结果的准确性),例如我把我的某个路径下的工程checkout在我的电脑上的 D:\MyProjects 路径下。

 

生成svn log文件

 

首先通过命令行进入工作目录:D:\MyProjects ,再使用svn log -v --xml > logfile.log的命令,其中logfile.log为log文件的名称,可以根据需要自行定义。这样就在工作拷贝的目录下生成一个名称为logfile.log的文件。

 

调用StatSVN进行统计

 

首先我们把从官网上下载的statsvn-0.7.0.zip包解压缩到D:\statsvn-0.7.0目录下

通过命令行进入D:\statsvn-0.7.0目录

调用命令java -jar statsvn.jar D:\MyProjects\logfile.log D:\MyProjects,命令运行成功即完成了统计工作。

该命令的格式是java -jar statsvn.jar [options] <logfile> <checked-out-module>

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

 

Java代码  
  1. <logfile>          path to the svn logfile of the module  
  2. <directory>        path to the directory of the checked out module  

 

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

 

Java代码  
  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 (default: 25)  
  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  
 

 

查看统计结果

 

上述命令运行成功后,可以看到在D:\MyProjects目录下生成一组包括表格与图表的静态HTML文档。可以用浏览器打开index.html查看统计结果。

示例图片:

 

StatSVN优缺点分析

优点

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

缺点

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

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

 

文章2:

利用SVN log命令查看提交日志信息详解

 内容提示:本文将详细介绍通过SVN log命令查看提交日志信息的方法。

log: 显示一组版本与/或文件的提交日志信息。

  用法:

1、log [PATH]

2、log URL[@REV] [PATH...]

1、显示本地 PATH (默认: “.”) 的日志信息。默认的版本范围是 BASE:1。

2、显示 URL 中 PATH (默认: “.”) 的日志信息。如果指定了 REV,就从 REV开始查找 URL,版本范围是 REV:1。否则就从 HEAD 开始查找 URL,版本范围是 HEAD:1。

 
 

可以指定多个 “-c” 或 “-r” 选项 (但是不允许同时使用 “-c” 和 “-r” 选项),以及混合使用前向和后向范围。

使用 -v 时,在日志信息中显示受影响的路径名。

使用 -q 时,不显示日志信息主体 (请注意,它可与 -v 并存)。

每条日志信息只会显示一次,即使指定了此版本涉及到的多个路径。默认日志信息会追溯复制历史;使用 –stop-on-copy 可以关闭这种行为,这可以用来找出分支点。

  范例:

svn log

svn log foo.c

svn log http://www.example.com/repo/project/foo.c

svn log http://www.example.com/repo/project foo.c bar.c

  有效选项:

-r [--revision] ARG  : ARG (一些命令也接受ARG1:ARG2范围)

版本参数可以是如下之一:

NUMBER   版本号

‘{‘ DATE ‘}’ 在指定时间以后的版本

‘HEAD’   版本库中的最新版本

‘BASE’   工作副本的基线版本

‘COMMITTED’  最后提交或基线之前

‘PREV’   COMMITTED的前一版本

-q [--quiet]      : 不打印信息,或只打印概要信息

-v [--verbose]     : 打印附加信息

-g [--use-merge-history] : 从合并历史使用/显示额外信息

-c [--change] ARG    : 版本 ARG 引起的改变

–targets ARG      : 传递文件 ARG 内容为附件参数

–stop-on-copy     : 查看历史不要跨越不同的副本

–incremental      : 给予适合串联的输出

–xml          : 输出为 XML

-l [--limit] ARG    : 日值项最大值

–with-all-revprops  : 获取所有版本属性

–with-no-revprops   : 没有找回版本属性

–with-revprop ARG   : 获取版本属性 ARG

  全局选项:

–username ARG     : 指定用户名称 ARG

–password ARG     : 指定密码 ARG

–no-auth-cache    : 不要缓存用户认证令牌

–non-interactive    : 不要交互提示

–trust-server-cert  : 不提示的接受未知的 SSL 服务器证书(只用于选项 “–non-interactive”)

–config-dir ARG    : 从目录 ARG 读取用户配置文件

–config-option ARG  : 以下属格式设置用户配置选项:FILE:SECTION:OPTION=[VALUE]

例如:

servers:global:http-library=serf

常用操作

  1.查看最近3个版本日志

svn log [PATH] -v -l3

  2.查看某两个版本,用来对比

svn log -r 14:15

  3.日志放入文件

$ svn log -r 14 > mylog

$ svn log -r 19 >> mylog

$ svn log -r 27 >> mylog

$ cat mylog

或者

$ svn log –incremental -r 14 > mylog

$ svn log –incremental -r 19 >> mylog

$ svn log –incremental -r 27 >> mylog

我的常用命令

查看2013.01.01~2013.07.16的svn log

1svn log -v --xml -r {2013-01-01}:{2013-07-16} > logfile.log

运行statsvn

 

 

 

相关 [统计 svn 代码] 推荐:

统计SVN代码行数工具-StatSVN - valleylord - 博客园

- -
获取SVN log:svn log -v -r 17461:39224 --xml > logfile.log. 用StatSVN分析:java -jar ~/project/statsvn-0.7.0/statsvn.jar logfile.log . StatSVN是一个Java写的开源代码统计程序,从statCVS移植而来,能够从Subversion版本库中取得信息,然后生成描述项目开发的各种表格和图表.

svn 钩子开启

- - 运维技术的个人空间
背景: 公司的Svn很多人在用,有不少人在作修改后不添加注释,所以需要强制用户填写注释. 重命名svn主目录中hooks的pre-commit.tmpl文件为pre-commit,并添加可执行权限. echo "【注释】$content" 1>&2. echo "【注意】注释不能为空,请重新填写注释!!!" 1>&2.

SVN强制填写日志

- - CSDN博客系统运维推荐文章
在F:\Repositories\版本库名\hooks下新建pre-commit.bat. rem 保证输入8个字符 %SVN_BINDIR%\svnlook log %REPOS% -t %TXN% | findstr "........" > nul if %errorlevel% gtr 0 goto :err_action rem 过滤空格字符 %SVN_BINDIR%\svnlook log %REPOS% -t %TXN% | findstr /ic:".

SVN之使用原则

- - 研发管理 - ITeye博客
以下是我起草的部门SVN规范里原则的一部分. 必须提交注释,注明相关修改信息,例如bug号、任务描述等. 具体内容可采用约定或者设置的形式. 你所提交的改变将体现给其他开发者,要明白提交的后果,. 代码变动及时提交,避免丢失本地修改后无法恢复. 新增加的文件同时被提交,否则只在你本地能正常工作,导致其它人不能编译通过.

代码统计工具

- - 企业架构 - ITeye博客
代码统计工具:cloc(count lines of code)能够兼容windows和linux操作系统. 下载url:http://sourceforge.net/projects/cloc/files/cloc/. 下面以windows系统为例说明配置过程:. 下载cloc,并为cloc配置环境变量,使在windows命令行下所有目录可以执行cloc命令.

使用VisualSVN Server搭建SVN服务器

- - CSDN博客推荐文章
使用 VisualSVN Server来实现主要的 SVN功能则要比使用原始的 SVN和 Apache相配合来实现源代码的 SVN管理简单的多,上手也没有那么复杂. VisualSVN Server的下载地址如下,是免费的,随意不必有顾虑. 1使用SVN,首先要安装 TortoiseSVN,就是上面的SVN下载地址.

SVN:合并一个分支到主干

- - P.Linux Laboratory
本文内容遵从 CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/program/svn_merge_branch_trunk.html. 原文在此,我只是翻译: http://www.sepcot.com/blog/2007/04/SVN-Merge-Branch-Trunk.

[原]强制 code review:reviewboard+svn 的方案

- - 赖勇浩的编程私伙局
赖勇浩( http://laiyonghao.com). 我们团队在开发《天下盛境》项目的时候,制定和执行了比较好的 code review 策略,总结下来有几个优点:一是代码风格可控,代码质量有一定提升;二是新员工入职后能够得到更多人的指导,成长非常快;三是小 bug 频出的情况比我做《天》之前的项目少了至少一个数量组.

SVN提交更新的一个准则

- - BlogJava_首页
查阅了一下网络和博客园,发现还没有一个明确地指导源码管理提交准则的相关文章,因此斗胆整理了一部分自己平时开发管理的心得,加上查阅了部分英文资料写了一个不算很完善的SVN提交准则. 负责而谨慎地提交自己的代码. SVN更新的原则是要随时更新,随时提交. 当完成了一个小功能,能够通过编译并且并且自己测试之后,谨慎地提交.

SVN:分支合并到主干

- - CSDN博客系统运维推荐文章
1.先把主干代码下载到本地. 3.svn merge 分支目录    . 4.遇到冲突, 请见合并日志,选择"p",记下出冲突的文件,人工编辑.  4.1 比如Index.action出冲突了,vi Index.action.  4.2 vi完成以后,删除冲突的文件 rm -f Index.action.*.