SourceMonitor是程序員經(jīng)常用到的代碼度量工具,主要用于經(jīng)常代碼的質(zhì)量以及代碼進(jìn)行重構(gòu)等操作,支持C++, C, C#, Java, Delphi, Visual Basic 和 HTML等編程語言,它可以將結(jié)果掃描繪成圖,并擁有打印結(jié)果的功能。
使用說明:
1.總體介紹
SourceMonitor是一款免費(fèi)的軟件,運(yùn)行在Windows平臺(tái)下。它可對(duì)多種語言寫就的代碼進(jìn)行度量,包括C、C++、C#、Java、VB、Delphi和HTML,并且針對(duì)不同的語言,輸出不同的代碼度量值。
像其他代碼度量工具一樣,SourceMonitor只關(guān)注代碼,并為編碼人員提供及時(shí)的反饋,它不是一款項(xiàng)目管理工具,不關(guān)注項(xiàng)目實(shí)施中從功能分析到設(shè)計(jì)編碼,再到測試這整個(gè)過程。
2.C語言度量值(C Metrics)
前面講了那么多,還沒提到代碼度量的核心內(nèi)容——度量值。下面以C語言度量值為例,看看SourceMonitor都給我們反饋了哪些信息。
總行數(shù)(Lines):包括空行在內(nèi)的代碼行數(shù);
語句數(shù)目(Statements):在C語言中,語句是以分號(hào)結(jié)尾的。分支語句if,循環(huán)語句for、while,跳轉(zhuǎn)語句goto都被計(jì)算在內(nèi),預(yù)處理語句#include、#define和#undef也被計(jì)算在內(nèi),對(duì)其他的預(yù)處理語句則不作計(jì)算,在#else和#endif、#elif和#endif之間的語句將被忽略;
分支語句比例(Percent Branch Statements):該值表示分支語句占語句數(shù)目的比例,這里的“分支語句”指的是使程序不順序執(zhí)行的語句,包括if、else、for、while和switch;
注釋比例(Percent Lines with Comments):該值指示注釋行(包括/*……*/和//……形式的注釋)占總行數(shù)的比例;
函數(shù)數(shù)目(Functions):指示函數(shù)的數(shù)量;
平均每個(gè)函數(shù)包含的語句數(shù)目(Average Statements per Function):總的函數(shù)語句數(shù)目除以函數(shù)數(shù)目得到該值;
函數(shù)圈復(fù)雜度(Function Complexity):圈復(fù)雜度指示一個(gè)函數(shù)可執(zhí)行路徑的數(shù)目,以下語句為圈復(fù)雜度的值貢獻(xiàn)1:if/else/for/while語句,三元運(yùn)算符語句,if/for/while判斷條件中的"&&"或“||”,switch語句,后接break/goto/ return/throw/continue語句的case語句,catch/except語句;
函數(shù)深度(Block Depth):函數(shù)深度指示函數(shù)中分支嵌套的層數(shù)。
對(duì)其他語言,SourceMonitor輸出不同的度量值,例如在C++度量值中包括類的數(shù)目(Classes),在HTML中包括各個(gè)標(biāo)簽的數(shù)目(HTML Tags)、超鏈接數(shù)目(Hyperlinks)等。
3.度量值的呈現(xiàn)樣式
SourceMonitor從幾個(gè)不同的視圖層次,為我們展示以上列舉的度量值,包括項(xiàng)目視圖、檢查點(diǎn)視圖和函數(shù)視圖。
項(xiàng)目視圖(project view)
SourceMonitor下建立項(xiàng)目須在一個(gè)文件夾下進(jìn)行,該文件夾下的源碼文件可以被分成一個(gè)或幾個(gè)檢查點(diǎn),項(xiàng)目視圖下列出了各個(gè)檢查點(diǎn)的度量值信息。
檢查點(diǎn)視圖(checkpoint view)
檢查點(diǎn)視圖中列出了某個(gè)檢查點(diǎn)中包含的各個(gè)源代碼文件的度量值信息。
函數(shù)視圖(method view)
函數(shù)視圖中展示了某個(gè)檢查點(diǎn)下,某個(gè)源文件中所有函數(shù)的度量信息,雙擊某函數(shù)可以跳轉(zhuǎn)到源文件中該函數(shù)的相應(yīng)位置。