良いコード悪いコードという著書の中に循環的複雑度(サイクロマティック複雑度)という言葉が出てきました。これはコードの構造的な複雑さを示していて、条件分岐やループ処理が増える、ネストが増えるなどの要因によって循環的複雑度が高い数値を示します。以下はその目安です。
循環的複雑度 | 複雑さの状態 | バグ混入確率 |
---|---|---|
10以下 | 非常にいい構造 | 25% |
30以上 | 構造的なリスクあり | 50% |
50以上 | テスト不可能 | 70% |
75以上 | いかなる変更も誤修正を生む | 98% |
これらは早期リターンやストラテジパターンなどにより低減可能です。
で、調べてみるとVS Codeの拡張機能に
Codalyze - Code Complexity Report Generator
というものがありました。
Updateは2020年の8月で止まっていますが、使ってみた感じは結構良さげでした。
ただ、詳細は見れないのでその辺りは他にいいのがあったら使ってみたいなという感じです。
https://marketplace.visualstudio.com/items?itemName=selcuk-usta.code-complexity-report-generator
試しにやってみたらレポートが作成されました。
実行は以下の通り
Run
Use Ctrl + Shift + P (Windows) / Shift + Command + P (MacOS) shortcut and write Codalyze. Finally, run it!