Goプログラムのサイクロマティック複雑度を計測する(gocyclo)
gocyclo とは
- Goプログラムのサイクロマティック複雑度を計測するツール
インストール
$ go install github.com/fzipp/gocyclo/cmd/gocyclo@latest
使い方
コマンド
$ gocyclo [オプション] [Goソースコード or ディレクトリ]
オプション
-
-over N
-- 複雑度がN以上の関数を表示
-
-top N
-- 複雑度で上位N件の関数を表示
-
-avg, -avg-short
-- 全計測対象の平均的な複雑度を表示
-
-ignore REGEX
-- 除外対象を指定する(正規表現が使用可能)
計測対象から除外
- 計測対象から除外するには対象の関数に
//gocyclo:ignore
コメントを付ける
//gocyclo:ignore
func function() {
// ...
}
参考資料
Appendix-1 サイクロマティック複雑度(循環的複雑度)の指標
- 10以下 -- シンプルで理解しやすく、テストも容易
- 11-20以下 -- 若干複雑なコード
- 21-50以下 -- 複雑なコード、完全に理解してテストを作成するのが困難
- 50以上 -- 保守困難、確実にバグが潜在する
- 75以上 -- 如何なる変更でもバグを発生させる