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不考慮修改的程式碼行數,只考慮與上一版本相比新增(+)與刪除(-)的程式碼行數。