1. 程式人生 > >StatSVN統計SVN中的程式碼量

StatSVN統計SVN中的程式碼量

注意事項

可以到虛擬機器上進行安裝除錯
必須首先將SVN環境搭建完成
感覺只是生成了一個初略的統計,但是期望大家能夠挖掘下它內在的功能,共同提高

StatSVN介紹

StatSVN是一個Java寫的開原始碼統計程式,從statCVS移植而來,能夠從Subversion版本庫中取得資訊,然後生成描述專案開發的各種表格和圖表。比如:程式碼行數的時間線;針對每個開發者的程式碼行數;開發者的活躍程度;開發者最近所提交的;檔案數量;平均檔案大小;最大檔案;哪個檔案是修改最多次數的;目錄大小;帶有檔案數量和程式碼行數的Repository tree。StatSVN當前版本能夠生成一組包括表格與圖表的靜態HTML文件。

StartSVN的下載頁面為:http://www.statsvn.org/downloads.html(下載完成後解壓到一個目錄,比如E:\statsvn,裡面有一個statsvn.jar的檔案,無需安裝)

現在官網上最新的版本為:statsvn-0.7.0

Subversion官網下載地址:http://sourceforge.net/projects/win32svn/(這個是Windows版,安裝之後就有了svn.exe這個基於命令列的客戶端工具,安裝程式把svn.exe的路徑加入了path環境變數,我們已經可以在命令列中直接輸入svn就可以使用了)

StatSVN使用

使用須知

StatSVN的執行需要Java的執行環境支援,所以大家需要安裝Java的執行環境(Java Runtime Environment)。JRE可以從Sun的網站上下載。
Statsvn在使用中需要使用SVN的客戶端,因此需要確保機器上可以訪問到SVN的客戶端命令

Checkout工作拷貝

首先從SVN倉庫中checkout一個需要統計的路徑(如果在工作目錄下進行統計,首先請更新,保證工作區中的版本是最新的版本,確保統計結果的準確性),例如我把我的某個路徑下的工程checkout在我的電腦上的E:\hei-ws\myproject 路徑下。

生成svn log檔案

首先通過命令列進入工作目錄:E:\hei-ws\myproject ,再使用命令,其中 logfileName.log 為log檔案的名稱,可以根據需要自行定義。

svn log -v --xml > logfileName.log (匯出所有的svn log)
svn log -r HEAD:版本號 -v --xml > logfileName.log(匯出指定版本的svn log)
svn log -r {2013-3-1}:{2013-6-1} -v --xml --username yong.he --password 123456 E:\hei-ws\myproject > E:\hei-ws\myproject\logfileName.log (生成E:\hei-ws\myproject工作目錄的2013-3-1到2013-6-1的程式碼日誌檔案到E:\hei-ws\myproject\logfileName.log下)

SVN還可以使用版本日期來指定某個版本,日期格式使用ISO-8601標準,一般是yyyy-mm-dd hh:mm:ss。當你指定一個日期,SVN會在版本庫中找到最接近這個日期的版本。

   SVN對日期的解釋是“之前最近”,因此,如果給出的時間只包含日期的話,例如2012-08-25,SVN會在2012-08-25 00:00:00這個時間點之前尋找,所以有可能會發生結果與預期不一致的情況,這個時候就需要想到這一點;另外某個版本對應的時間戳可以偽造,因此使用日期有時候不太保險。

   示例:

   $ svn log -r {2006-11-20}:{2006-11-29}

呼叫StatSVN進行統計

首先我們把從官網上下載的statsvn-0.7.0.zip包解壓縮到D:\statsvn-0.7.0目錄下
通過命令列進入D:\statsvn-0.7.0目錄
呼叫命令java -jar statsvn.jar E:\hei-ws\myproject\logfileName.logE:\hei-ws\myproject,命令執行成功即完成了統計工作。
該命令的格式是java -jar statsvn.jar [options]

引數(注意兩個引數都要列出正確的全路徑,否則會提示錯誤如logfile.log找不到):

<logfile>:為前一步中生成的svn log檔案
<checked-out-module>:為checkout工作拷貝目錄
[options]為可選引數,該引數格式及用法如下:
[java] view plain copy
print?
    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  

檢視統計結果

StatSVN優缺點分析

優點
StatSVN會把當前SVN庫的狀態用圖片和圖表的方式展現出來,可以按不同分類分別展開,功能強大。
缺點
StatSVN統計的是所有程式碼行,包括註釋和空行,但一般度量要求是有效程式碼行,在分析時需要注意這一點。
StatSVN不考慮修改的程式碼行數,只考慮與上一版本相比新增(+)與刪除(-)的程式碼行數。