如何計算並測量ABAP及Java程式碼的環複雜度Cyclomatic complexity
程式碼的環複雜度(Cyclomatic complexity,有的地方又翻譯成圈複雜度)是一種程式碼複雜度的衡量標準,在1976年由Thomas J. McCabe, Sr. 提出。
在軟體測試的概念裡,圈複雜度用來衡量一個模組判定結構的複雜程度,數量上表現為獨立線性路徑條數,即合理的預防錯誤所需測試的最少路徑條數。圈複雜度大說明程式程式碼可能質量低且難於測試和維護。
計算公式
環複雜度 = E ? N + 2
E = 程式控制流圖中邊的個數
N = 程式控制流圖中點的個數
看個具體的例子。下面這段ABAP程式碼的環複雜度根據公式計算為3.
DATA: lv_value TYPE i VALUE 1. IF lv_value = 1. WRITE: / 'always happend'. ELSEIF lv_value = 2. WRITE: / 'not possible'. ELSE.
WRITE: / 'even not possible'. ENDIF.
先把程式碼的程式流圖畫出來:
在ABAP裡用Code inspector這個工具測量程式碼的環複雜度:
具體步驟參考我的ABAP部落格:
而Java可以用一個叫做SourceMonitor的工具測量環複雜度:
詳細使用參考我的部落格Use SourceMonitor to monitor your java code complexity
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2152636/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用工具Source Monitor測量您Java程式碼的環複雜度Java複雜度
- 如何減小ABAP業務程式碼的複雜度複雜度
- 時間複雜度怎麼算?如何計算時間複雜度?時間複雜度
- 淺析程式碼圈複雜度及認知複雜度複雜度
- 時間複雜度的計算時間複雜度
- 降低程式碼的圈複雜度——複雜程式碼的解決之道複雜度
- 複雜度分析的套路及常見的複雜度複雜度
- 說說你對演算法中時間複雜度,空間複雜度的理解?如何計算?演算法時間複雜度
- 網路模型複雜度計算方法模型複雜度
- 前端程式碼質量-圈複雜度原理和實踐前端複雜度
- 如何在 Linux 生成複雜密碼並且檢查密碼強度Linux密碼
- Linux 如何設定密碼複雜度?Linux密碼複雜度
- 圈複雜度那些事兒-前端程式碼質量系列文章(二)複雜度前端
- Linux 生成複雜密碼並且檢查密碼強度Linux密碼
- 程式設計師是如何從複雜的程式碼裡找到 bug 的?程式設計師
- 重構指標之如何監控程式碼圈複雜度指標複雜度
- DDD之理解複雜度、尊重複雜度、掌控複雜度複雜度
- 一文講透演算法中的時間複雜度和空間複雜度計算方式演算法時間複雜度
- 時間複雜度計算和舉例說明時間複雜度
- 降低程式碼圈複雜度最佳化技巧複雜度
- 《程式是怎樣跑起來的》,計算機程式很複雜嗎?計算機
- 時間複雜度跟空間複雜度時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- 如何優雅地管理複雜前端程式碼前端
- 簡單程式的時間複雜度分析時間複雜度
- dotnet 程式碼最佳化 聊聊邏輯圈複雜度複雜度
- 常見排序演算法及複雜度排序演算法複雜度
- 複雜度分析複雜度
- 時間複雜度O(n)和空間複雜度時間複雜度
- 如何進行演算法的複雜度分析?演算法複雜度
- 業務複雜度不夠,如何深挖複雜度
- 演算法系列1 初識演算法 演算法複雜性模型 演算法複雜度的計算演算法模型複雜度
- 如何更好的做單元測試並用它來提升程式碼質量(下)
- 相親交友原始碼開發,演算法的定義及複雜度分析原始碼演算法複雜度
- word2vec實現域名向量化並計算相似度-python程式碼Python
- 0 程式碼量雜談
- 第二章 :查詢與排序-------2.10常見函式的複雜度計算排序函式複雜度