Main Content

循環的複雑度のメトリクス

メトリクス ID

メトリクス ID: mathworks.metrics.CyclomaticComplexity

説明

メトリクス タイプ:アーキテクチャ

モデル アドバイザー チェック ID: mathworks.metricchecks.CyclomaticComplexity

モデルの循環的複雑度を計算するには、このメトリクスを使用します。循環的複雑度は、モデルの構造的複雑度の測定値です。複雑度の測定値は、統合されたロジックやエラー チェックなど、この解析で考慮されないコード機能が原因で、生成されたコードとモデルとでは異なる場合があります。オブジェクト (ブロック、チャート、ステートなど) の循環的複雑度を計算するために、Simulink® Check™ は次の公式を使用します。

c=1N(on1)

N はオブジェクトが表す判定点の数、on は n 番目の判定点の結果の数です。計算では、ベクトル化演算または Multiport switch ブロックを単一の判定点として考慮します。モデル、Atomic サブシステム、および Stateflow® チャートに対しては、複雑度の値に 1 が加算されます。

この結果により、以下についてローカル循環的複雑度と集約循環的複雑度が得られます。

  • モデル

  • サブシステム

  • チャート

  • MATLAB® 関数

ローカル複雑度は、オブジェクトの階層レベルでの循環的複雑度です。集約循環的複雑度は、オブジェクトとその子孫の循環的複雑度です。

このメトリクスは Simulink Check で使用できます。このメトリクスのデータを収集するには、メトリクス識別子 mathworks.metrics.CyclomaticComplexity を指定して getMetrics を使用します。

slmetric.metric.AggregationMode プロパティ設定は Sum です。

計算の詳細

メトリクス:

  • ライブラリ モデルでは動作しません。

  • マスク サブシステムの内容を解析します。

  • 非アクティブなバリアントは解析しません。

  • 指定されている場合、ライブラリにリンクされたブロックまたは参照モデルの内容を解析します。

  • アクセラレータ モードの参照モデルは解析しません。

収集

モデル アドバイザーを使用してこのメトリクスのデータを収集するには、[タスク別]、[モデル メトリクス]、[複雑度メトリクス] と移動し、[循環的複雑度のメトリクス] チェックを実行します。モデル アドバイザー チェックでは、ルート モデルのローカル循環的複雑度と、システム内の Simulink および Stateflow オブジェクトのローカル循環的複雑度が表示されます。このチェックでは参照モデルは解析されず、集計結果も返されません。

結果

このメトリクスでは、slmetric.metric.Result のインスタンスで以下の結果が示されます。

  • Value:ローカル循環的複雑度。

  • AggregatedValue:集約循環的複雑度。

  • Measures:該当なし。

複雑度の詳細については、以下を参照してください。

参考

関連するトピック