svn代码量统计工具

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 Runtime Environment)。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的文件。

注:要在命令行中使用svn命令,在安装TortoiseSVN时必须选择安装commend组件,可以在cmd命令行里输入svn help测试一下该组件是否安装,如果未安装是无法使用svn log命令的。如果能够操作svn server的话也可以直接在服务器上生成svn 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找不到等等 

  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  


1. 先导出svn log

   svn log -v --xml -rStartrevision:Endrevision > svn.log local_project
   其中Startrevision和Endrevision用来导出一个revision段的svn日志.local_project是svn上的project checkout到本地的结果.


2. 通过statsvn工具做分析
  java -jar statsvn.jar svn.log local_project
  运行完成后,就会在$PWD(unix下)或者%CD%(windows下)下生成对应的分析文件,在index.html文件中就有代码量统计.



[python]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. #!/bin/bash  
  2.   
  3. svn_dir='/home/homer/work/code_svn/weiguan'  
  4. statsvn_dir='/home/homer/work/tool-server/statsvn-0.7.0/statsvn.jar'  
  5.   
  6. log_dir=svnstat  
  7. log_file="$log_dir/svnstat.log"  
  8. log_day="$log_dir/2014-01-01_00:00:00"  
  9.   
  10. version_start=4150  
  11. version_end=4159  
  12.   
  13. function statsvn() {  
  14.     cd $svn_dir  
  15.   
  16.     svn up  
  17.   
  18.     if [ ! -d $log_dir ];then  
  19.         mkdir $log_dir  
  20.     fi  
  21.   
  22.     date=$(date "+%Y-%m-%d_%H:%M:%S")  
  23.     echo "$date"  
  24.       
  25.     lines=`find . -name *.java | xargs wc -l | sort -n`  
  26.     echo "total code lines : $lines"  
  27.   
  28.     version_end=`svn log -l1 | sed -n 2p | awk '{print $1}' | cut -d "r" -f2`  
  29.     echo "version_start : $version_start; version_end : $version_end"  
  30.     svn log -v --xml -r$version_start:$version_end > $log_file  
  31.   
  32.     log_day="$log_dir/$date"  
  33.     java -jar $statsvn_dir $log_file . -output-dir $log_day > /dev/null 2>&1  
  34.   
  35.   
  36.     google-chrome $log_day/index.html &  
  37. }  
  38.   
  39. statsvn  


参考推荐:

statsvn统计svn中的代码量

统计svn上代码量的方法--使用statsvn工具

统计分析svn用户每天提交的代码数

一个基于SVN 的代码提交量统计工具

StatSVN

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用PHP的SVN库来连接到SVN服务器并获取代码库的统计信息。以下是一个示例代码,可用于获取某个版本号的代码统计信息: ```php <?php // SVN服务器设置 $svn_server = "svn://svn.example.com/myproject"; $svn_username = "username"; $svn_password = "password"; // 获取SVN库 $svn = svn_connect($svn_server); svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_USERNAME, $svn_username); svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_PASSWORD, $svn_password); // 指定版本号 $revision = 1234; // 统计代码 $command = "svn diff -r " . ($revision - 1) . ":" . $revision . " " . $svn_server . " --summarize"; $output = shell_exec($command); // 解析输出结果 $lines_added = 0; $lines_deleted = 0; $files_changed = 0; $lines = explode("\n", $output); foreach ($lines as $line) { if (preg_match('/^[ADUMR]\s+(.*)$/', $line, $matches)) { $files_changed++; $file = $matches[1]; if (preg_match('/\.php$/', $file)) { $command = "svn diff -x -w -r " . ($revision - 1) . ":" . $revision . " " . $svn_server . "/" . $file . " | grep -E '^[+|\-]' | wc -l"; $output = trim(shell_exec($command)); $lines_added += (int) $output; $command = "svn diff -x -w -r " . ($revision - 1) . ":" . $revision . " " . $svn_server . "/" . $file . " | grep -E '^\-' | wc -l"; $output = trim(shell_exec($command)); $lines_deleted += (int) $output; } } } // 输出统计信息 echo "Files changed: " . $files_changed . "\n"; echo "Lines added: " . $lines_added . "\n"; echo "Lines deleted: " . $lines_deleted . "\n"; ?> ``` 在以上代码中,首先需要设置SVN服务器的地址、用户名和密码。然后,使用`svn_connect()`函数连接到SVN服务器,并使用`svn_auth_set_parameter()`函数设置用户名和密码。接下来,使用`svn diff`命令获取指定版本号的代码库变更信息,并使用`shell_exec()`函数执行该命令。然后,解析输出结果,统计代码并输出统计信息。 在解析输出结果时,使用了正则表达式来匹配文件路径和变更类型,并使用`svn diff`命令获取指定文件的代码变更信息。然后,使用`grep`命令和正则表达式来匹配添加和删除的行,并使用`wc -l`命令统计行数。最后,累加添加和删除的行数,并输出统计信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值