循環的複雑度
関数本体における線形独立パス数
説明
このメトリクスは関数内の判定点の数を計算し、合計に 1 を足します。判定点とはプログラムを 2 つのパスに分岐させるステートメントです。
このメトリクスの推奨上限は 10 です。循環的複雑度が高い場合、コードは可読性が低く、かつオレンジ チェックが増加する可能性があります。したがって、このメトリクスの値を制限するようにしてください。
メトリクスに制限を適用するには、Polyspace を使用したコード複雑度メトリクスの計算を参照してください。
計算の詳細
メトリクスの計算では、次のルールを使用して判定点を特定します。
ifステートメントは 1 つの判定点です。ステートメント
forとwhileは、条件が評価されない場合 (たとえば、無限ループ内) でも、1 つの判定点としてカウントします。boolean の結合
(&&, ||)は判定点としてカウントしません。caseステートメントは、その後にbreakステートメントが続かない限り、判定点としてカウントしません。たとえば、次のコードは循環的複雑度 3 になります。switch(num) { case 0: case 1: break; case 2: break; case 3: case 4: }オプション
-consider-switch-as-single-decisionを指定すると、Polyspace® はswitch-caseステートメント全体を単一判定点と見なし、上記のコードの循環的複雑度は 2 になります。計算は次の前処理後に実行されます。
マクロが展開されます。
条件付きのコンパイルが適用されます。前処理命令で隠されたブロックは無視されます。
例
メトリクス情報
| グループ: 関数 |
頭字語: VG |
| HIS メトリクス:あり |