diffcount代碼行差異統(tǒng)計(jì)工具,用于比較兩個(gè)代碼包的新增,修改,刪除的代碼量.資源挺好的,統(tǒng)計(jì)出來的結(jié)果和我自己統(tǒng)計(jì)的有些差異?梢越y(tǒng)計(jì)的文件類型有些少,而且偏后端語言。另外,在windows下使用的時(shí)候,直接敲命令行即可。
功能:
1. 差異統(tǒng)計(jì):統(tǒng)計(jì)某一個(gè)版本的代碼包相對(duì)于一個(gè)原始的基線代碼包,變動(dòng)的代碼量,以及變動(dòng)的代碼量中各語言非空非注釋行(NBNC)的結(jié)果;
2.代碼統(tǒng)計(jì):如果需要,可以把diffcount當(dāng)作普通的代碼行統(tǒng)計(jì)工具,統(tǒng)計(jì)一個(gè)代碼包;
diffcount命令行方式的編譯是直接通過Makefile進(jìn)行的,目前提供Linux,Cygwin,Windows(MinGW)三種環(huán)境下的編譯腳本,其他環(huán)境中,如果需要編譯和使用,請(qǐng)通過修改Makefile文件進(jìn)行。
diffcount 的可執(zhí)行程序名為 diffcount.exe
想查詢參數(shù)信息,請(qǐng)使用 diffcount --help 查詢幫助
diffcount --cn-help 可以查詢中文幫助, 也可以查看doc下的"命令行參數(shù)說明.txt"
diffcount的參數(shù)說明:
使用方法: diffcount [OPTION]... (Baseline) Target
功能:對(duì)兩個(gè)代碼包進(jìn)行差異統(tǒng)計(jì)、或者對(duì)一個(gè)代碼包進(jìn)行代碼行統(tǒng)計(jì)
packages 是差異統(tǒng)計(jì)的兩個(gè)對(duì)象,也可以是僅作統(tǒng)計(jì)的一個(gè)對(duì)象
參數(shù)說明:
-c --count-only FILE/DIR
僅僅對(duì)一個(gè)文件或者目錄完成統(tǒng)計(jì)代碼行的功能,沒有比較對(duì)象
這樣Packages參數(shù)的數(shù)量只能有一個(gè)(文件或目錄)
--ignore-case (DIFF USE ONLY)
在比較的時(shí)候,忽略文件名的大小寫差異(缺省情況會(huì)作為兩個(gè)完全不同的文件)
僅在“差異統(tǒng)計(jì)”時(shí)有效
Tips: 一些產(chǎn)品的代碼,存在不同的版本的目錄和文件的大小寫不一樣的情況
可能是copy或者傳送過程中造成的,對(duì)于這種情況,請(qǐng)使用該開關(guān)。
--print-lines-info (DEBUG USE OLY)
輸出每個(gè)文件差異比較后的差異結(jié)果和初步統(tǒng)計(jì)信息(逐行),主要用于分析錯(cuò)誤
注意不要針對(duì)大型代碼包使用,否則逐行打印時(shí)間消耗驚人
--print-files-info
使用這個(gè)開關(guān),當(dāng)每個(gè)文件差異比較和統(tǒng)計(jì)以后,輸出該文件差異統(tǒng)計(jì)的結(jié)果信息
缺省不打印每個(gè)文件的信息,只打印最后的結(jié)果
Tips: 上邊兩個(gè)開關(guān)都需要打印控制臺(tái),如果文件較多的話,打印的時(shí)間會(huì)很長(zhǎng)
因此除非有具體分析需要,否則盡量不要打開
--force-parse-all (DIFF USE ONLY)
強(qiáng)制對(duì)所有文件進(jìn)行分析處理(即使它們是完全相同的),缺省對(duì)完全相同的文件略過
僅在“差異統(tǒng)計(jì)”時(shí)有效,代碼行統(tǒng)計(jì)(count-only)時(shí)所有文件都要處理
--for-program-reading
改變輸出方式,以格式化文本形式輸出,便于其他程序讀取結(jié)果信息
在由第三方程序調(diào)用diffcount,并需要讀取統(tǒng)計(jì)結(jié)果的時(shí)候使用
該選項(xiàng)會(huì)屏蔽 --print-lines-info 選項(xiàng)
-v --version
輸出當(dāng)前的版本信息
--help
輸出幫助信息
備注:
在進(jìn)行差異統(tǒng)計(jì)的時(shí)候,統(tǒng)計(jì)的對(duì)象是代碼包(目錄),其中第一個(gè)目錄是代碼的基線,
第二個(gè)目錄是被統(tǒng)計(jì)的對(duì)象,所以新增、修改、刪除,都是站在第二個(gè)目錄,被統(tǒng)計(jì)對(duì)
象的角度來說的。
使用方法:
1.差異統(tǒng)計(jì)
統(tǒng)計(jì)某一個(gè)版本的代碼包相對(duì)于一個(gè)原始的基線代碼包,變動(dòng)的代碼量
以及變動(dòng)的代碼量中各語言非空非注釋行(NBNC)的結(jié)果
diffcount 缺省執(zhí)行的就是差異統(tǒng)計(jì),直接跟上兩個(gè)代碼包的目錄即可
在diffcount目錄下執(zhí)行:
diffcount test\sp1 test\sp2
實(shí)際使用中,可能會(huì)有文件名和目錄名大小寫不一致的情況,如果希望忽略
文件名大小寫的差異,需要使用 --ignore-case 參數(shù),否則兩個(gè)一樣的文件
一個(gè)會(huì)算作刪除,一個(gè)會(huì)算作新增
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 的 含義分別為:
新增、修改、刪除、新增+修改、空行、注釋、非空非注釋行、標(biāo)準(zhǔn)C折算率
2、代碼統(tǒng)計(jì):
如果需要,可以把diffcount當(dāng)作普通的代碼行統(tǒng)計(jì)工具,統(tǒng)計(jì)一個(gè)代碼包
代碼統(tǒng)計(jì)使用 -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)
如果想顯示每一個(gè)文件的具體信息,請(qǐng)使用 --print-files-info 參數(shù)