このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
循環的複雑度がしきい値を超えている
説明
Polyspace® は、判定点の数に 1 を足して、関数の循環的複雑度を計算します。判定点とはプログラムを 2 つのパスに分岐させるステートメントです。この欠陥は、関数の循環的複雑度が、定義されている循環的複雑度のしきい値を超えている場合に報告されます。Polyspace が循環的複雑度を計算する方法について詳しくは、循環的複雑度
を参照してください。
Polyspace は、ユーザーがしきい値を指定しない限り、既定のしきい値として 10 を使用します。しきい値を指定できる選択ファイルを指定するには、オプション [ファイルごとにチェッカーを設定] (-checkers-selection-file)
または [チェッカー アクティベーション ファイル] (-checkers-activation-file)
を使用します。
polyspace-comments-import
を使用して以前の解析からコメントをインポートすると、Polyspace は以前の結果のコード メトリクスの循環的複雑度
に関するレビュー情報を、このチェッカーの現在の結果にコピーします。現在の結果に同じコード メトリクスが含まれている場合、レビュー情報はそのコード メトリクスにもコピーされます。
リスク
このチェッカーの違反がある場合、関数に含まれる分岐の数が多すぎる可能性があります。このような関数はテストが困難で、デバッグするのが難しい不明な欠陥やバグが関数に含まれる可能性があります。
修正方法
このチェックを修正するには、次を行います。
コードをリファクタリングして、制御構造体が入れ子にならないようにします。
コードをリファクタリングし、複雑な関数を複数の関数に分割して簡素化し、テストしやすくします。
チェッカー選択 XML ファイルに変更を加えて、循環的複雑度のしきい値を評価します。
ベスト プラクティスは、開発後のリファクタリング コストを回避するために、開発の早期段階でモジュールの複雑度をチェックすることです。
例
チェック情報
グループ: ソフトウェアの複雑度 |
言語: C | C++ |
頭字語: SC17
|
既定のしきい値: 10 |
バージョン履歴
R2021a で導入