代碼統計工具實測點評




1. CodeMetric:

CodeMetric啟動后(如下圖)

 

 

1.1. 代碼統計項:

代碼統計主要包括:注釋行、空白行、代碼行、總行數(不包括空白行)、總行數(包括空白行)、注釋率、空白率、字符數。(也就是下圖里面的度量項)

 

1.2. 基本操作:

1通過點擊按鈕添加目錄/文件添加需要統計的目錄/文件。

2選擇好代碼語言類型,代碼文件后綴輸入框里面的內容,會自動變成選擇的代碼語言類型默認文件的后綴,也可以自定義添加代碼文件后綴。

3勾選想要統計的度量項。

4、點擊度量按鈕便可以進行統計

1.3. 統計輸出格式:

統計輸出格式主要分為兩種:簡單輸出格式和XML輸出格式。

 

1、簡單輸出格式:

 

 

 

2XML輸出格式:

 

 

1.4. 實測點評:

對比兩種統計輸出格式:

1、簡單文本格式:可讀性還是比較清晰的。

2XML格式:可讀性一般,看起來比較繁雜一點。

兩個細節問題:

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 treeStatSVN當前版本能夠生成一組包括表格與圖表的靜態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.loglog文件的名稱,可以根據需要自行定義。這樣就在工作拷貝的目錄下生成一個名稱為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

   其中StartrevisionEndrevision用來導出一個revision段的svn日志.local_projectsvn上的project checkout到本地的結果.

2. 通過statsvn工具做分析

  java -jar statsvn.jar svn.log local_project

  運行完成后,就會在$PWD(unix)或者%CD%(windows)下生成對應的分析文件,index.html文件中就有代碼量統計。

3.8. 統計輸出格式:

輸出以html的方式展示統計內容。(如下圖)

 

 

3.9. 實測點評:

優點

1StatSVN會把當前SVN庫的狀態用圖片和圖表的方式展現出來,可以按不同分類分別展開,功能強大。

缺點

1StatSVN統計的是所有代碼行,包括注釋和空行,但一般度量要求是有效代碼行,在分析時需要注意這一點。

2StatSVN不考慮修改的代碼行數,只考慮與上一版本相比新增(+)與刪除(-)的代碼行數。

 

統計結果以圖標的形式表現,功能比較強大,因為統計的內容比較多,個人感覺准確率一般。

 


4Diffcount

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

 

下載Diffcount

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM