代碼的環複雜度(Cyclomatic complexity,有的地方又翻譯成圈複雜度)是一種代碼複雜度的衡量标準,在1976年由Thomas J. McCabe, Sr. 提出。
在軟體測試的概念裡,圈複雜度用來衡量一個子產品判定結構的複雜程度,數量上表現為獨立線性路徑條數,即合理的預防錯誤所需測試的最少路徑條數。圈複雜度大說明程式代碼可能品質低且難于測試和維護。
計算公式
環複雜度 = E − N + 2
E = 程式控制流圖中邊的個數
N = 程式控制流圖中點的個數
看個具體的例子。下面這段ABAP代碼的環複雜度根據公式計算為3.
先把代碼的程式流圖畫出來:
在ABAP裡用Code inspector這個工具測量代碼的環複雜度:
具體步驟參考我的ABAP部落格:
A Small tip to get all transparent tables used in ABAP code
Useful tips regarding ABAP code inspector that you may not know
而Java可以用一個叫做SourceMonitor的工具測量環複雜度:
詳細使用參考我的部落格Use SourceMonitor to monitor your java code complexity