サイクロマティック複雑度
関数を通る独立した経路の数を数える指標。実用上は if 文の数に1を足した値になる。
Thomas McCabeが1976年に、プログラムの制御フローグラフを通る線形独立な経路の数として定義した。実用的な近道は分岐点を数えることで、if、while、case、論理演算子が一つ増えるごとに1加算される。この値は全分岐を網羅するのに必要な最小のテストケース数にも等しく、それがMcCabeの本来の狙いだった。
道具としては大雑把だ。行数と強く相関するので、すでに見えていること以上のことはあまり語らず、補助関数に切り出すだけで数値を下げられるうえ、全体が分かりやすくなるわけでもない。価値があるのは外れ値の発見で、複雑度60の関数は、指標の価値をどう見積もるにせよ、必ず見る価値がある。