1. 程式人生 > >svn程式碼量統計工具

svn程式碼量統計工具

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

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檔案中就有程式碼量統計.



#!/bin/bashsvn_dir='/home/homer/work/code_svn/weiguan'statsvn_dir='/home/homer/work/tool-server/statsvn-0.7.0/statsvn.jar'log_dir=svnstatlog_file="$log_dir/svnstat.log"log_day="$log_dir/2014-01-01_00:00:00"version_start=4150version_end=4159function 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


           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述