呼び出しツリーの複雑度がしきい値を超えている
説明
ファイルの呼び出しツリーの複雑度は、その関数の呼び出しツリーの異なるレベル間における複雑度を表します。Polyspace® はファイルの呼び出しツリーの複雑度を次のように計算します。
Call tree Complexity = number of call occurrences – number of function definitions + 1 | (1) |
推定の関数結合
を参照してください。 Polyspace は、ユーザーがしきい値を指定しない限り、既定のしきい値として 20 を使用します。しきい値を指定できる選択ファイルを指定するには、オプション [ファイルごとにチェッカーを設定] (-checkers-selection-file)
または [チェッカー アクティベーション ファイル] (-checkers-activation-file)
を使用します。
polyspace-comments-import
を使用して以前の解析からコメントをインポートすると、Polyspace は以前の結果のコード メトリクスの推定の関数結合
に関するレビュー情報を、このチェッカーの現在の結果にコピーします。現在の結果に同じコード メトリクスが含まれている場合、レビュー情報はそのコード メトリクスにもコピーされます。
リスク
このチェッカーに違反している場合は、次の可能性があります。
ファイル内の関数の相互依存性が許容できないほど高い。
ファイル内のいずれかの関数に変更を加えると、その変更がファイル内の他の関数でのバグや予期しない動作につながる。
他の関数との相互依存性により、ファイル内の単一の関数を再利用するのが難しくなる。
これらの要因により、ファイルの保守、テスト、デバッグが困難になります。
修正方法
このチェックを修正するには、コードをリファクタリングするか、チェッカーのしきい値を変更します。コードをリファクタリングする場合は、コード内の関数を次のように設計します。
各関数が単一の特定のタスクを実行するようにする。
関数が他の関数に与える二次的影響を最小限にする。
ベスト プラクティスは、開発後のリファクタリング コストを回避するために、開発の早期段階でモジュールの複雑度をチェックすることです。
例
チェック情報
グループ: ソフトウェアの複雑度 |
言語: C | C++ |
頭字語: SC03
|
既定のしきい値: 20 |
バージョン履歴
R2021a で導入