diffcount代碼行差異統(tǒng)計工具,用于比較兩個代碼包的新增,修改,刪除的代碼量.資源挺好的,統(tǒng)計出來的結(jié)果和我自己統(tǒng)計的有些差異?梢越y(tǒng)計的文件類型有些少,而且偏后端語言。另外,在windows下使用的時候,直接敲命令行即可。
功能:
1. 差異統(tǒng)計:統(tǒng)計某一個版本的代碼包相對于一個原始的基線代碼包,變動的代碼量,以及變動的代碼量中各語言非空非注釋行(NBNC)的結(jié)果;
2.代碼統(tǒng)計:如果需要,可以把diffcount當作普通的代碼行統(tǒng)計工具,統(tǒng)計一個代碼包;
diffcount命令行方式的編譯是直接通過Makefile進行的,目前提供Linux,Cygwin,Windows(MinGW)三種環(huán)境下的編譯腳本,其他環(huán)境中,如果需要編譯和使用,請通過修改Makefile文件進行。
diffcount 的可執(zhí)行程序名為 diffcount.exe
想查詢參數(shù)信息,請使用 diffcount --help 查詢幫助
diffcount --cn-help 可以查詢中文幫助, 也可以查看doc下的"命令行參數(shù)說明.txt"
diffcount的參數(shù)說明:
使用方法: diffcount [OPTION]... (Baseline) Target
功能:對兩個代碼包進行差異統(tǒng)計、或者對一個代碼包進行代碼行統(tǒng)計
packages 是差異統(tǒng)計的兩個對象,也可以是僅作統(tǒng)計的一個對象
參數(shù)說明:
-c --count-only FILE/DIR
僅僅對一個文件或者目錄完成統(tǒng)計代碼行的功能,沒有比較對象
這樣Packages參數(shù)的數(shù)量只能有一個(文件或目錄)
--ignore-case (DIFF USE ONLY)
在比較的時候,忽略文件名的大小寫差異(缺省情況會作為兩個完全不同的文件)
僅在“差異統(tǒng)計”時有效
Tips: 一些產(chǎn)品的代碼,存在不同的版本的目錄和文件的大小寫不一樣的情況
可能是copy或者傳送過程中造成的,對于這種情況,請使用該開關(guān)。
--print-lines-info (DEBUG USE OLY)
輸出每個文件差異比較后的差異結(jié)果和初步統(tǒng)計信息(逐行),主要用于分析錯誤
注意不要針對大型代碼包使用,否則逐行打印時間消耗驚人
--print-files-info
使用這個開關(guān),當每個文件差異比較和統(tǒng)計以后,輸出該文件差異統(tǒng)計的結(jié)果信息
缺省不打印每個文件的信息,只打印最后的結(jié)果
Tips: 上邊兩個開關(guān)都需要打印控制臺,如果文件較多的話,打印的時間會很長
因此除非有具體分析需要,否則盡量不要打開
--force-parse-all (DIFF USE ONLY)
強制對所有文件進行分析處理(即使它們是完全相同的),缺省對完全相同的文件略過
僅在“差異統(tǒng)計”時有效,代碼行統(tǒng)計(count-only)時所有文件都要處理
--for-program-reading
改變輸出方式,以格式化文本形式輸出,便于其他程序讀取結(jié)果信息
在由第三方程序調(diào)用diffcount,并需要讀取統(tǒng)計結(jié)果的時候使用
該選項會屏蔽 --print-lines-info 選項
-v --version
輸出當前的版本信息
--help
輸出幫助信息
備注:
在進行差異統(tǒng)計的時候,統(tǒng)計的對象是代碼包(目錄),其中第一個目錄是代碼的基線,
第二個目錄是被統(tǒng)計的對象,所以新增、修改、刪除,都是站在第二個目錄,被統(tǒng)計對
象的角度來說的。
使用方法:
1.差異統(tǒng)計
統(tǒng)計某一個版本的代碼包相對于一個原始的基線代碼包,變動的代碼量
以及變動的代碼量中各語言非空非注釋行(NBNC)的結(jié)果
diffcount 缺省執(zhí)行的就是差異統(tǒng)計,直接跟上兩個代碼包的目錄即可
在diffcount目錄下執(zhí)行:
diffcount test\sp1 test\sp2
實際使用中,可能會有文件名和目錄名大小寫不一致的情況,如果希望忽略
文件名大小寫的差異,需要使用 --ignore-case 參數(shù),否則兩個一樣的文件
一個會算作刪除,一個會算作新增
G:\diffcount>diffcount test\sp1 test\sp2
Diffcount [test\sp1] and [test\sp2] result:
LANG ADD MOD DEL A&M BLK CMT NBNC RATE
-----------------------------------------------------------------------
C 44 7 26 51 8 11 35 1.00
Pascal 0 0 25 0 0 0 0 0.23
Java 7 4 11 11 0 3 9 0.41
Config 31 4 0 35 1 0 34 0.12
XML 126 0 0 126 2 0 124 0.12
-----------------------------------------------------------------------
Convert all NBNC lines to standard C
Total: 57.65 (standard C lines)
ADD MOD DEL A&M BLK CMT NBNC RATE 的 含義分別為:
新增、修改、刪除、新增+修改、空行、注釋、非空非注釋行、標準C折算率
2、代碼統(tǒng)計:
如果需要,可以把diffcount當作普通的代碼行統(tǒng)計工具,統(tǒng)計一個代碼包
代碼統(tǒng)計使用 -c (或者--count-only)參數(shù), 在diffcount目錄下執(zhí)行
diffcount -c test\count
執(zhí)行結(jié)果如下:
G:\diffcount>diffcount -c test\count
Counting package [test\count] result:
LANG TOTAL BLK CMT NBNC RATE
-----------------------------------------------------------------------
C 203 46 61 101 1.00
C++ 57 7 25 25 0.42
Pascal 117 24 17 79 0.23
Java 71 7 24 40 0.41
ASM 129 34 12 85 2.50
C# 18 1 1 17 0.20
Basic 447 140 20 295 0.21
Perl 97 4 26 74 0.16
TCL/TK 91 12 26 54 0.50
Config 116 13 0 103 0.12
XML 126 2 0 124 0.12
-----------------------------------------------------------------------
Convert all NBNC lines to standard C
Total: 490.00 (standard C lines)
如果想顯示每一個文件的具體信息,請使用 --print-files-info 參數(shù)