このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MISRA C:2012 Rule 14.2
A for loop shall be well-formed
説明
ルール定義
A for loop shall be well-formed 1 .
根拠
for
ループは柔軟なループ機能を提供します。制御ステートメント内のループ カウンターの初期化、終了およびインクリメントや、ループ本体内の任意の場所でのループ カウンターのインクリメントの他にも演算を実行できます。ただし、制限されたループ形式を使用すると、コードのレビューと解析が容易になります。
Polyspace 実装
for
ループは、ループ カウンター、ループ フラグ、ループ本体の 3 つの式で構成されます。最初の式で最後に代入される変数がループ カウンターと見なされます。チェッカーは、for
ループのコンポーネントが次のプロパティを示す場合に違反を報告します。
for ループの最初の式 —
ループ カウンターを初期化しない。
ループ カウンターの値を設定する以外の二次的影響がある。
for ループの 2 番目の式 —
ループ カウンターを含む比較演算が含まれていない。
ループ本体でも使用されているオブジェクトを使用している。
二次的影響がある。
for ループの 3 番目の式 —
ループ カウンターのインクリメントまたはデクリメント以外の (コンマで区切られてインクリメントまたはデクリメントから分離された) 演算が含まれている。
ループ本体でも使用されているオブジェクトを使用している。
ループ カウンターを更新する以外の二次的影響がある。
ループ カウンター —
整数ではないデータ型、またはポインター型が使用されている。
ループ本体内で更新される。
Polyspace® は、2 番目の式にループ カウンターを含む二項演算が含まれている場合、違反を報告しません。複数のループ カウンターを使用するループは、このルールに対する違反として報告されます。ループ カウンターが構造体またはクラスに含まれている場合、その構造体またはクラスの更新は、ループ カウンターの更新と見なされます。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
グループ: 制御ステートメントの式 |
カテゴリ: 必要 |
AGC カテゴリ: Readability |
バージョン履歴
参考
MISRA C:2012 Rule 14.1
| MISRA C:2012 Rule 14.3
| MISRA C:2012 Rule 14.4
| MISRA C:2012 のチェック (-misra3)
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.