goto ステートメントの数がしきい値を超えている
説明
この欠陥は、定義済みしきい値を超える数の goto ステートメントが含まれる関数に対して報告されます。Polyspace が goto ステートメントの数を計算する方法について詳しくは、goto ステートメントの数を参照してください。
Polyspace® は、ユーザーがしきい値を指定しない限り、既定のしきい値として 0 を使用します。しきい値を指定できる選択ファイルを指定するには、オプション [ファイルごとにチェッカーを設定] (-checkers-selection-file) または [チェッカー アクティベーション ファイル] (-checkers-activation-file) を使用します。
polyspace-comments-import を使用して以前の解析からコメントをインポートすると、Polyspace は以前の結果のコード メトリクスの goto ステートメントの数に関するレビュー情報を、このチェッカーの現在の結果にコピーします。現在の結果に同じコード メトリクスが含まれている場合、レビュー情報はそのコード メトリクスにもコピーされます。
リスク
このチェッカーに違反している場合は、次の可能性があります。
モジュールの実行フローが過剰に複雑である。
モジュールで不測の、または計画外の状況に発展する。
複数の goto ステートメントを使用すると、モジュールでのコード実行の正確な順序を判断するのが難しくなります。このような混乱により、バグや誤った結果につながる可能性があります。このようなコードの複雑なデータ フローにより、モジュールの保守とデバッグが困難になります。
修正方法
このチェックを修正するには、チェッカーのしきい値を変更するか、コードをリファクタリングします。使用されている goto ステートメントのほとんどは、よりわかりやすい制御構造で置き換えることができます。goto ステートメントが必要な場合は、それをドキュメント化し、コード内で注釈を使用してチェッカーを正当化します。レガシ コードベースをチェックするときは、このチェックがトリガーされないよう、しきい値を変更することをお勧めします。
ベスト プラクティスは、開発後のリファクタリング コストを回避するために、開発の早期段階でモジュールの複雑度をチェックすることです。
例
チェック情報
| グループ: ソフトウェアの複雑度 |
| 言語: C | C++ |
頭字語: SC13
|
| 既定のしきい値: 0 |
バージョン履歴
R2021a で導入