1. 程式人生 > >SVN程式碼統計工具statsvn

SVN程式碼統計工具statsvn

http://pengtyao.iteye.com/blog/1001815

StatSVN簡單使用說明
本文參考網上一些資料以及StatSVN官方手冊編寫
目錄
StatSVN簡單使用說明...1
1.     簡介...1
2.     前置條件...2
3.     快速上手...2
4.     命令列選項...3
5.     設定統計的開始與結束時間...5
6.     Ant任務...5
7.     不足之處...6
8.     使用心得...6
9.     更多參考...7
1.  簡介
       StatSVN是一個Java寫的開源統計程式,從StatCVS移值而來。StatSVN能夠從Subversion版本庫中取得資訊,然後使用JFreeChart生成描述專案開發的各種表格和圖表。比如:
Ø  程式碼行數的時間線
Ø  針對每個開發者的程式碼行數
Ø  開發者的活躍程度
Ø  開發者最近所提交的檔案數量
Ø  平均檔案大小
Ø  最大檔案
Ø  哪個檔案是修改最多次數的
Ø  目錄大小
Ø  帶有檔案數量和程式碼行數的Repository tree
StatSVN當前版本能夠生成一組包括表格與圖表的靜態HTML或XDOC文件。
StatSVN統計的檔案數量包含:所有檔案型別。
StatSVN統計的程式碼變動行數包含檔案型別:所有程式設計檔案型別(如.java、.cpp、.h),.xml,.properties、.txt等,jar包等不在統計之內。
2.  前置條件


Ø  Java version 1.4.x or above
Ø  The Subversion command-line client*, version 1.3.0 or higher (The binaries need to be on your command-line path when executing StatSVN)*
3.  快速上手
3.1.安裝Java執行環境

    StatSVN執行需要Java的執行環境支援,所以需要安裝Java的執行環境jdk 1.4.或更高版本。在命令列模式下執行java --version命令,可以檢視到所安裝java執行環境版本。
3.2.安裝SVN客戶端命令

   StatSVN在使用中需要使用SVN的客戶端,因此需要確保機器上可以訪問到SVN的客戶端命令,也就是那個SVN.EXE檔案,我們可以將它拷貝出來,比如我將它拷貝到了我客戶端的版本庫D:\bl_repos
3.3.下載StatSVN
   可以從http://www.statsvn.org/下載,下載完成後解壓到一個目錄,比如C:\statsvn,裡面有一個statsvn.jar的檔案,無需安裝。
3.4.從Subversion CheckOut一個模組
     CheckOut一個最新的工作版本庫比如e:\bl_repos
3.5.生成LOG檔案
     使用以下命令生成LOG檔案例如:

Java程式碼  收藏程式碼
  1. D:\bl_repos>svn log -r {2011-3-1}:{2011-4-1}-v --xml --username xxx      --password 123 e:\bl_repos > e:\bl_repos\logfile.log  
    詳情可以參考svn log -?,這裡的意思是生成e:\bl_repos工作目錄的2011-3-1到2011-4-1的程式碼日誌檔案到e:\bl_repos\logfile.log下
3.6.呼叫StatSVN進行統計
Java程式碼  收藏程式碼
  1. C:\statsvn>java -jar statsvn.jar e:\bl_repos\logfile.log e:\bl_repos  
    該命令的格式是java -jar statsvn.jar [options] <logfile> ,其中引數為生成的log檔案,e:\bl_repos為工作拷貝目錄,注意兩個引數都要列出正確的全路徑,否則會提示錯誤如logfile.log找不到等等
3.7.檢視統計結果
    回到C:\statsvn,會發現裡面生成了很多網頁,檢視index.html,就可以看見統計結果了。
4.  命令列選項
statsvn必要引數是<logfile> <checked-out-module>: Java程式碼  收藏程式碼
  1. java -jar statsvn.jar options<logfile> <checked-out-module>  
但是statsvn還可以支援更多其它引數: Java程式碼  收藏程式碼
  1. -output-dir <directory>  
指定報告生成目錄,如果目錄不存在則自動建立此目錄。 Java程式碼  收藏程式碼
  1. -include <include-pattern-list>  
  2. -exclude <exclude-pattern-list>  
設定過濾規則:
'?'  匹配單個字元
'*'  匹配0個或多個字元
'**' 匹配0級或多級目錄
例1:src/**/*.java-----
匹配src目錄及子目錄下所有java檔案。*.java-----匹配根目錄下的java檔案,因為*不包含子目錄。
例2:-include "**/*.c:**/*.h" -exclude "legacy/**"
匹配目錄下除legacy目錄下所有.c和.h檔案。
注意:Unix系統下注意在表示式上使用引號,否則shell將會與萬用字元相沖突。 Java程式碼  收藏程式碼
  1. -cache-dir <directory>  
為從Subversion服務起收集資訊指定快取目錄, Java程式碼  收藏程式碼
  1. -username <subversion_username>  
指定連線Subversion server的使用者名稱. Java程式碼  收藏程式碼
  1. -password <subversion_username>  
指定連線Subversion server的密碼. Java程式碼  收藏程式碼
  1. -tags <tags-regularexpression>  
新增Subversion tags資訊到報告中。只有與正則表示式相匹配的tags才會被新增。例如:-tags  '.*' 則會新增所有的tags。
注意:這一功能會到你的儲存目錄的/tags目錄下查詢tags,所以為了能讓這一功能執行正常,必須在你的儲存根目錄下生成log檔案,這樣才會將各個tags和trunk的資訊都寫入log檔案,但tags目錄沒有必要都checked out下來。
注意:Unix系統下注意在表示式上使用引號,否則shell將會與萬用字元相沖突。 Java程式碼  收藏程式碼
  1. -tags-dir <directory>  
指定tags正則表示式去評估的根目錄,預設值為/tags/

Java程式碼  收藏程式碼
  1. -no-developer <login-name>  
在報告中排除某個或某幾個開發者的程式碼提交資訊。比如排除管理員的一些程式碼操作。 Java程式碼  收藏程式碼
  1. -verbose  
輸出中新增程序資訊 Java程式碼  收藏程式碼
  1. -bugzilla< bugzilla_install_root>  
指定Bugzilla的安裝路徑,報告中將以連結的形式代替'Bug ###',這樣方便直接連結至相應Bug。 Java程式碼  收藏程式碼
  1. -title <title>  
指定報告的名稱,預設以Subversion模組名作為標題。 Java程式碼  收藏程式碼
  1. -xdoc  
將報告文件從預設的html文件改為Maven的XDoc文件。 Java程式碼  收藏程式碼
  1. -xml  
將報告文件從預設的html文件改為xml文件。 Java程式碼  收藏程式碼
  1. -css <stylesheet>  
為報告指定css樣式,這裡可以是http url或本地檔案。 Java程式碼  收藏程式碼
  1. -notes <notes-file>  
指定一個註釋檔案,該檔案的內容將會新增至報告的index頁面。檔案內容應該包含一個有效的塊級html片段。例如: Html程式碼  收藏程式碼
  1. <p>
  2.  These are development statistics for the<ahref="http://www.statsvn.org">StatSVN</a>
  3. project, created by StatSVN itself.  
  4. </p>
  5. <p>
  6. <strong>Note:</strong>
  7.  This report was generated by an unreleased development version of StatSVN. It might contain features not yet found in the official release.  
  8. </p>
其它更多引數請查閱其官方文件。
示例: Java程式碼  收藏程式碼
  1. java -jar statsvn.jar -verbose -title jUCMNav  -exclude **/src/urncore/**;**/src/grl/**;**/src/ucm/**;**/src/urn/**;**/src/seg/jUCMNav/model/ucm/**  \  -output-dir ./stats c:\eclipse\workspace\seg.jUCMNav\svn.log c:\eclipse\workspace\seg.jUCMNav  
5.  設定統計的開始與結束時間
雖然StatSVN不提供指定報告統計的開始與結束時間,但是可以通過svn log命令來指定從而達到相同的效果。 Java程式碼  收藏程式碼
  1. svn  log  v  -xml  -r  {2007-02-19}:{2007-02-12}> log.xml  
更多資訊可以檢視:
http://svnbook.red-bean.com/en/1.2/svn.tour.revs.html#svn.tour.revs.dates
http://jbrugge.com/blog/2007/02/27/using-date-ranges-with-statsvn/
6.  Ant任務
StatSVN可以與Apache Ant進行整合使用。
示例:
Xml程式碼  收藏程式碼
  1. <?xmlversion="1.0"?>
  2. <projectname="StatSvnAnt"default="main"basedir=".">
  3.   <taskdefname="statsvn"classname="net.sf.statsvn.ant.StatSvnTask"classpath="dist/statsvn.jar"/>
  4.   <targetname="main">
  5.     <statsvn
  6.         path="d:/statsvn"
  7.         log="d:/statsvn/logfile.log"
  8.         outputDir="d:/statsvn/stats"
  9.         title="StatSVN"
  10.         include="*/.java"
  11.         exclude="tests-src/**"
  12.         notes="d:/statsvn/report-notes.txt"/>
  13.   </target>
</project>其中path和log屬性是必須指定的(path為原始碼所在目錄),其它屬性可選。statsvn.jar必須位於Ant的classpath下,或者像上面一樣由taskdef屬性來指定。
7.  不足之處
StatSVN現在最新版才到0.7.0,屬於一個新推出工具,還沒有正式釋出穩定版,所以還存在一些不足之處:
Ø  刪除和移動檔案:在刪除和移動的檔案上,程式碼統計行數可能不精確。當一個檔案被刪除或被移動,StatSVN現在還不能準確的統計出檔案行數以及都由哪些人提交過(這是StatCVS的遺留問題,但是StatSVN在將來會解決這一遺留問題)。
Ø 分支(Branches):StatSVN analyzes anything it is given. Because of the way Subversion treats branches, StatSVN is not limited to a repository's default branch, as StatCVS was. However, there are currently no special features that take into account the most common Subversion repository layout (with /branches and /trunk).
Ø  Tags:這個引數當前還處於beta階段,不夠成熟,使用起來有些不便,詳情可檢視前面提到的tags引數使用部分。
8.  使用心得
8.1.有時統計結果會有一點點偏差,如對原有檔案進行格式化後,格式的變動也會算入程式碼變動行數之列,這個jsp偏差量比較大,所以建議每個程式碼提交者都養成提交程式碼時使用IDE格式化快捷鍵對檔案進行一下格式化操作,這樣能最小避免這種誤差。
8.2.刪除檔案和移動檔案統計上會有不準確。
所以使用此工具生成報告後,最好檢查一下是否存在大量程式碼變動只是由於原始檔排版格式的變動,以及是否存在有大量程式碼是引入了某些工具類(非jar包形式)或配置檔案(如installanywhere使用的一個配置檔案TWNS_hp.iap_xml 有幾萬行)。這些情況都是需要最後手動減除的。
9. 更多參考
http://wiki.statsvn.org
http://statcvs.sourceforge.net/

相關推薦

SVN程式碼統計工具statsvn

http://pengtyao.iteye.com/blog/1001815 StatSVN簡單使用說明本文參考網上一些資料以及StatSVN官方手冊編寫 目錄 StatSVN簡單使用說明...1 1.     簡介...1 2.     前置條件...2 3.     快速上手...2 4.     命令

svn程式碼統計工具StatSVN的使用

1,下載地址:sourceforge.net/projects/statsvn/, 解壓縮到目錄D:\statsvn2,假設SVN目錄F:\Work\Project,若未Check Out請先cmd定位到D:\statsvn,然後執行命令svn co https://xxx.

Python每日一題:第6題:如何設計一個程式碼統計工具

這是Python之禪和他朋友們在知識星球的第6題:如何設計一個程式碼統計工具 問題 設計一個程式,用於統計一個專案中的程式碼行數,包括檔案個數,程式碼行數,註釋行數,空行行數。儘量設計靈活一點可以通過輸入不同引數來統計不同語言的專案,例如: # type用於指定檔案型別 python cou

CLOC(Count Lines Of Code)程式碼統計工具

[[email protected] include]# cloc -by-file acpi Digest::MD5 not installed; will skip file uniqueness checks.       27 text files.       27 unique file

C++ 程式碼統計工具 & 判斷一行程式碼是否為註釋行

這兩天接手了一個專案,專案定義了一種自己語法,所以有了判斷註釋的需求。 這裡自己簡單實現了一個,程式碼非常精簡。 提供的註釋語法和C++是一模一樣的, 允許 // 和 /* */兩種註釋 兩個問題

如何在Windows中使用cloc程式碼統計工具

下載得到cloc-1.64.exe,https://sourceforge.net/projects/cloc/files/ 改名為cloc.exe (因為要在cmd中執行) 放到工程所在目錄,E:\Workspace\app,統計app資料夾內所有程式碼 開啟cmd視窗,

程式碼統計工具cloc

cloc是一個基於perl的、十分好用的程式碼統計工具(http://cloc.sourceforge.net/),它所支援的語言還算十分豐富。不過,還是有很多用的較少的語言是不支援的。專案中的一些功能模組用到re2c來實現字元匹配,因此,這些.re檔案是cloc無法統計的。

svn程式碼統計工具

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

StatSvn 統計SVN程式碼資訊

StatSvn 背景(copy的): StatSVN是一個Java寫的開原始碼統計程式,從statCVS移植而來,能夠從Subversion版本庫中取得資訊,然後生成描述專案開發的各種表格和圖表。比如:程式碼行數的時間線;針對每個開發者的程式碼行數;開發者的活躍程度;開發者

SVN 線上程式碼託管工具

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Python 程式碼覆蓋率統計工具 coverage.py

coverage.py是一個用來統計python程式程式碼覆蓋率的工具。它使用起來非常簡單,並且支援最終生成介面友好的html報告。在最新版本中,還提供了分支覆蓋的功能。 官方網站: http://nedbatchelder.com/code/coverage/  win32版

基於py3的程式碼行數統計工具(簡易版)

#encoding = utf-8 import os def get_python_file_abspath(dirpath,all_files = []):     '''獲取指定資料夾下python檔名'''     #先判斷指定的路徑是檔案還是目錄     if o

程式碼管理工具 git svn

程式碼管理工具常用的有 git svn git和svn最大的差異在於 git是分散式的管理方式 而svn是集中式的管理方式 集中式管理的核心是伺服器 所有開發者在開始新一天的工作之前必須從伺服器取程式碼,讓後開發,最後解決衝突,提交所有的版本資訊到伺服器上。如果脫離了伺服器所有的

SVN版本管理工具使用中常見的程式碼提交衝突問題的解決方法

相信剛開始學習使用SVN的小夥伴在專案合作開發的過程中一定經常遇到一些影響到自己編寫的程式碼的苦惱,我這裡列舉了幾種常見的問題以及問題的解決方法: 1.誤刪除和誤操作的問題             問

使用svn命令統計兩次上線之間的程式碼行數,以及不同作者的程式碼行數

原理 其原理如下:  1,取得svn的兩個版本之間的diff資料 target=https://svn.xxx.com/erp/trunk/cms/cmsnew    start_version=113121    end_version=113128    步驟一,使

程式碼統計工具cloc

http://cloc.sourceforge.net v 1.64  T=0.35 s (26.1 files/s, 28419.1 lines/s) ------------------------------------------------------------------------------

程式碼統計工具cloc

如何很快知道源程式量呢,使用程式碼統計工具cloc Step1:下載一個cloc的應用程式 Step2:將下載好的cloc拖動到專案根目錄下 Step3: cmd->專案根目錄->輸入cl

uustepcount 好用的程式碼行數統計工具,支援js等語言,去除註釋和空格

雖然也是分析程式的原始碼,統計空行,註釋行,程式碼行,但uuStepCount可以自由定義,因此不論是什麼字尾名,即使新的註釋方式都可以統計。 HTML、JSP、ASP、PHP內部包含的語言(JavaScript,StyleSheet)也可以分別計算。甚至JSP內部的Ja

svn代碼量統計工具

checkout cto 通過 projects 文件中 調用 在服務器 jre 程序 分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net StatSVN

程式設計師實用工具,推薦一款程式碼統計神器GitStats

閱讀全文需7分鐘,工具很實用。 1. 前言 對於Git專案開發,有一些視覺化的工具,如gitk,giggle等,來檢視專案的開發歷史。但對於大型的專案,這些簡單的視覺化工具遠遠不足以瞭解專案完整的開發歷史,一些定量的統計資料(如每日提交量,行數等)更能反映專案的開發程序和活躍性。今天給大家推薦的這款工具: