1. CodeMetric:
CodeMetric啟動后(如下圖)
1.1. 代碼統計項:
代碼統計主要包括:注釋行、空白行、代碼行、總行數(不包括空白行)、總行數(包括空白行)、注釋率、空白率、字符數。(也就是下圖里面的度量項)
1.2. 基本操作:
1、通過點擊按鈕添加目錄/文件添加需要統計的目錄/文件。
2、選擇好代碼語言類型,代碼文件后綴輸入框里面的內容,會自動變成選擇的代碼語言類型默認文件的后綴,也可以自定義添加代碼文件后綴。
3、勾選想要統計的度量項。
4、點擊度量按鈕便可以進行統計。
1.3. 統計輸出格式:
統計輸出格式主要分為兩種:簡單輸出格式和XML輸出格式。
1、簡單輸出格式:
2、XML輸出格式:
1.4. 實測點評:
對比兩種統計輸出格式:
1、簡單文本格式:可讀性還是比較清晰的。
2、XML格式:可讀性一般,看起來比較繁雜一點。
兩個細節問題:
1、注釋里面的空白行會計算進去,統計注釋行數與實際注釋行數有所偏高。
2、顯示細節錯誤:注釋率(SLOC/TTL) ——〉注釋率(CMTL/TTL)
除去上面兩個細節問題,整體上來看還算不錯,功能比較簡單。
2. ICodeStat:
啟動ICodeStat后,可以看到ICodeStat主要有四個功能,分別是:批處理、版本比較、腳本拆分、代碼統計。(如下圖)
2.1. 代碼統計項:
代碼統計主要包括:注釋行、空白行、代碼行、總行數(不包括空白行)、總文件數、注釋率、空白率。
2.2. 基本操作:
1、通過選擇代碼統計功能,下面的組合輸入框變為文件類型和文件夾,文件類型可以通過輸入框選擇預先設置好的類型,也可以手工修改和輸入,文件夾可以手工輸入也可以通過目錄選擇對話框選擇。
2、選擇好文件類型和文件夾后,點擊處理就可以開始代碼統計工作,通過選擇文件類型,可以實現對不同類型的代碼進行分別統計的目的。
3、統計完成后,在下面的統計結果欄中會顯示總體的統計結果,在列表框中會保存每個文件的統計結果。
2.3. 統計輸出格式:
統計輸出類似表格的形式,如下圖:
2.4. 實測點評:
統計輸出格式以類似表格的輸出方式展現,看起來一目了然。
統計准確,無誤差,推薦使用。
3. StatSVN:
3.1. 相關說明:
StatSVN是一個Java寫的開源代碼統計程序,從statCVS移植而來,能夠從Subversion版本庫中取得信息,然后生成描述項目開發的各種表格和圖表。比如:代碼行數的時間線;針對每個開發者的代碼行數;開發者的活躍程度;開發者最近所提交的;文件數量;平均文件大小;最大文件;哪個文件是修改最多次數的;目錄大小;帶有文件數量和代碼行數的Repository tree。StatSVN當前版本能夠生成一組包括表格與圖表的靜態HTML文檔。
3.2. StatSVN下載
StartSVN官網地址為:http://www.statsvn.org/index.html
StartSVN的下載頁面為:http://www.statsvn.org/downloads.html
現在官網上最新的版本為:statsvn-0.7.0
3.3. StatSVN使用須知
StatSVN的運行需要Java的運行環境支持,所以大家需要安裝Java的運行環境(Java Runtime Environment)。JRE可以從Sun的網站上下載。
Statsvn在使用中需要使用SVN的客戶端,因此需要確保機器上可以訪問到SVN的客戶端命令
3.4. Checkout工作拷貝
首先從SVN倉庫中checkout一個需要統計的路徑(如果在工作目錄下進行統計,首先請更新,保證工作區中的版本是最新的版本,確保統計結果的准確性),例如我把我的某個路徑下的工程checkout在我的電腦上的D:\MyProjects路徑下。
3.5. 生成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然后下載到本地來使用
3.6. 調用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找不到等等
3.7. 基本操作:
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文件中就有代碼量統計。
3.8. 統計輸出格式:
輸出以html的方式展示統計內容。(如下圖)
3.9. 實測點評:
優點
1、StatSVN會把當前SVN庫的狀態用圖片和圖表的方式展現出來,可以按不同分類分別展開,功能強大。
缺點
1、StatSVN統計的是所有代碼行,包括注釋和空行,但一般度量要求是有效代碼行,在分析時需要注意這一點。
2、StatSVN不考慮修改的代碼行數,只考慮與上一版本相比新增(+)與刪除(-)的代碼行數。
統計結果以圖標的形式表現,功能比較強大,因為統計的內容比較多,個人感覺准確率一般。
4. Diffcount
4.1. 相關說明:
diffcount代碼行差異統計工具,用於比較兩個代碼包的新增,修改,刪除的代碼量.資源挺好的,統計出來的結果和我自己統計的有些差異。可以統計的文件類型有些少,而且偏后端語言。另外,在windows下使用的時候,直接敲命令行即可。
4.2. 主要功能:
1. 差異統計:統計某一個版本的代碼包相對於一個原始的基線代碼包,變動的代碼量,以及變動的代碼量中各語言非空非注釋行(NBNC)的結果;
2.代碼統計:如果需要,可以把diffcount當作普通的代碼行統計工具,統計一個代碼包;
diffcount命令行方式的編譯是直接通過Makefile進行的,目前提供Linux,Cygwin,Windows(MinGW)三種環境下的編譯腳本,其他環境中,如果需要編譯和使用,請通過修改Makefile文件進行。
diffcount 的可執行程序名為 diffcount.exe
想查詢參數信息,請使用 diffcount --help 查詢幫助
diffcount --cn-help 可以查詢中文幫助, 也可以查看doc下的"命令行參數說明.txt"
4.3. 參數說明:
diffcount的參數說明:
使用方法: diffcount [OPTION]... (Baseline) Target
功能:對兩個代碼包進行差異統計、或者對一個代碼包進行代碼行統計packages 是差異統計的兩個對象,也可以是僅作統計的一個對象
-c --count-only FILE/DIR
僅僅對一個文件或者目錄完成統計代碼行的功能,沒有比較對象,這樣Packages參數的數量只能有一個(文件或目錄)
--ignore-case (DIFF USE ONLY)
在比較的時候,忽略文件名的大小寫差異(缺省情況會作為兩個完全不同的文件)僅在“差異統計”時有效。
Tips: 一些產品的代碼,存在不同的版本的目錄和文件的大小寫不一樣的情況可能是copy或者傳送過程中造成的,對於這種情況,請使用該開關。
--print-lines-info (DEBUG USE OLY)
輸出每個文件差異比較后的差異結果和初步統計信息(逐行),主要用於分析錯誤,
注意不要針對大型代碼包使用,否則逐行打印時間消耗驚人
--print-files-info
使用這個開關,當每個文件差異比較和統計以后,輸出該文件差異統計的結果信息
缺省不打印每個文件的信息,只打印最后的結果
Tips: 上邊兩個開關都需要打印控制台,如果文件較多的話,打印的時間會很長
因此除非有具體分析需要,否則盡量不要打開
--force-parse-all (DIFF USE ONLY)
強制對所有文件進行分析處理(即使它們是完全相同的),缺省對完全相同的文件略過
僅在“差異統計”時有效,代碼行統計(count-only)時所有文件都要處理
--for-program-reading
改變輸出方式,以格式化文本形式輸出,便於其他程序讀取結果信息在由第三方程序調用diffcount,並需要讀取統計結果的時候使用,該選項會屏蔽--print-lines-info選項
-v --version
輸出當前的版本信息
--help
輸出幫助信息
4.4. 使用方法:
1.差異統計
統計某一個版本的代碼包相對於一個原始的基線代碼包,變動的代碼量以及變動的代碼量中各語言非空非注釋行(NBNC)的結果
diffcount 缺省執行的就是差異統計,直接跟上兩個代碼包的目錄即可
在diffcount目錄下執行:
diffcount test\sp1 test\sp2
實際使用中,可能會有文件名和目錄名大小寫不一致的情況,如果希望忽略文件名大小寫的差異,需要使用 --ignore-case參數,否則兩個一樣的文件,一個會算作刪除,一個會算作新增
ADD MOD DEL A&M BLK CMT NBNC RATE 的 含義分別為:新增、修改、刪除、新增+修改、空行、注釋、非空非注釋行、標准C折算率
2、代碼統計:
如果需要,可以把diffcount當作普通的代碼行統計工具,統計一個代碼包
代碼統計使用 -c (或者--count-only)參數,在diffcount目錄下執行
diffcount -c test\count
執行結果如下:
4.5. 實測點評:
Diffcount主要功能包括代碼統計和差異統計,代碼統計操作通過命令式方式操作,總體操作還算簡單,適合開發者操作,代碼統計相對於上面其他三個沒特別優勢,如果是想用差異統計推薦使用Diffcount。