このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
呼び出しの入れ子の深さがしきい値を超えている
説明
この欠陥は、for
、if-else
、switch
、while
などの関数内の制御構造の入れ子の深さが、入れ子の深さに対して定義されているしきい値を超えている場合に報告されます。Polyspace® が入れ子の深さを計算する方法について詳しくは、呼び出しレベルの数
を参照してください。
Polyspace は、ユーザーがしきい値を指定しない限り、既定のしきい値として 4 を使用します。しきい値を指定できる選択ファイルを指定するには、オプション [ファイルごとにチェッカーを設定] (-checkers-selection-file)
または [チェッカー アクティベーション ファイル] (-checkers-activation-file)
を使用します。
polyspace-comments-import
を使用して以前の解析からコメントをインポートすると、Polyspace は以前の結果のコード メトリクスの呼び出しレベルの数
に関するレビュー情報を、このチェッカーの現在の結果にコピーします。現在の結果に同じコード メトリクスが含まれている場合、レビュー情報はそのコード メトリクスにもコピーされます。
リスク
このチェッカーに違反している場合は、次の可能性があります。
関数が読みづらく、わかりにくい。
関数が一度に実行するタスクが多すぎる。
関数で不測の、または計画外の状況に発展する。
これらの要因により、モジュールの保守とデバッグが困難になります。
修正方法
このチェックを修正するには、コードをリファクタリングするか、チェッカーのしきい値を変更します。コードをリファクタリングする場合は、次のようにします。
関数が単一のタスクを実行するように設計する。
関係のないタスクは他の関数にデリゲートする。
ベスト プラクティスは、開発後のリファクタリング コストを回避するために、開発の早期段階でモジュールの複雑度をチェックすることです。
例
チェック情報
グループ: ソフトウェアの複雑度 |
言語: C | C++ |
頭字語: SC14
|
既定のしきい値: 4 |
バージョン履歴
R2021a で導入