言語スコープがしきい値を超えている
説明
言語スコープは、関数の保守または更新にかかるコストを表します。たとえば、関数で同じオペランドが何度も出現する場合、オペランド名を変更するにはコストがかかります。このような関数の言語スコープは高くなります。この欠陥は、関数の言語スコープが定義済みしきい値を超えている場合に報告されます。Polyspace が言語スコープを計算する方法について詳しくは、言語スコープを参照してください。
メモ
Polyspace® で計算される言語スコープは、浮動小数点数です。このチェッカーでは、浮動小数点の言語スコープが小数第 2 位に丸められてから 100 で乗算されることによって、整数に変換されます。
Polyspace は、ユーザーがしきい値を指定しない限り、既定のしきい値として 400 を使用します。しきい値を指定できる選択ファイルを指定するには、オプション [ファイルごとにチェッカーを設定] (-checkers-selection-file) または [チェッカー アクティベーション ファイル] (-checkers-activation-file) を使用します。
polyspace-comments-import を使用して以前の解析からコメントをインポートすると、Polyspace は以前の結果のコード メトリクスの言語スコープに関するレビュー情報を、このチェッカーの現在の結果にコピーします。現在の結果に同じコード メトリクスが含まれている場合、レビュー情報はそのコード メトリクスにもコピーされます。
リスク
このチェッカーに違反している場合は、次の可能性があります。
オペランドの変更で、関数に多数の変更が必要である。
関数が一度に複数のタスクを実行している。
関数が他の関数との高い相互依存性を持つ。
これらの要因により、モジュールの保守とデバッグが困難になります。
修正方法
このチェックを修正するには、コードをリファクタリングするか、チェッカーのしきい値を変更します。コードをリファクタリングする場合は、コード内の関数を次のように設計します。
各関数が単一の特定のタスクを実行するようにする。
関数が他の関数に与える二次的影響を最小限にする。
ベスト プラクティスは、開発後のリファクタリング コストを回避するために、開発の早期段階でモジュールの複雑度をチェックすることです。
例
チェック情報
| グループ: ソフトウェアの複雑度 |
| 言語: C | C++ |
頭字語: SC18
|
| 既定のしきい値: 400 |
バージョン履歴
R2021a で導入