svn代碼量統計工具
分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net
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找不到等等
- <logfile> path to the svn logfile of the module
- <directory> path to the directory of the checked out module
[options]為可選參數,該參數格式及用法如下:
- 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>
- -trac <url> integrate with Trac 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
- -xml optional switch output to xml
- -threads <int> how many threads for svn diff (default: 25)
- -concurrency-threshold <millisec> switch to concurrent svn diff if 1st call>threshol
- -dump dump the Repository content on console
- -charset <charset> specify the charset to use for html/xdoc
- -tags-dir <directory> optional, specifies the director for tags (default ‘/tags/‘)
- 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文件中就有代碼量統計.
#!/bin/bash
svn_dir=‘/home/homer/work/code_svn/weiguan‘
statsvn_dir=‘/home/homer/work/tool-server/statsvn-0.7.0/statsvn.jar‘
log_dir=svnstat
log_file="$log_dir/svnstat.log"
log_day="$log_dir/2014-01-01_00:00:00"
version_start=4150
version_end=4159
function statsvn() {
cd $svn_dir
svn up
if [ ! -d $log_dir ];then
mkdir $log_dir
fi
date=$(date "+%Y-%m-%d_%H:%M:%S")
echo "$date"
lines=`find . -name *.java | xargs wc -l | sort -n`
echo "total code lines : $lines"
version_end=`svn log -l1 | sed -n 2p | awk ‘{print $1}‘ | cut -d "r" -f2`
echo "version_start : $version_start; version_end : $version_end"
svn log -v --xml -r$version_start:$version_end > $log_file
log_day="$log_dir/$date"
java -jar $statsvn_dir $log_file . -output-dir $log_day > /dev/null 2>&1
google-chrome $log_day/index.html &
}
statsvn
參考推薦:
statsvn統計svn中的代碼量
統計svn上代碼量的方法--使用statsvn工具
統計分析svn用戶每天提交的代碼數
一個基於SVN 的代碼提交量統計工具
StatSVN
再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net
svn代碼量統計工具