このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MISRA C++:2008 Rule 6-3-1
The statement forming the body of a switch, while, do while or for statement shall be a compound statement
説明
ルール定義
The statement forming the body of a switch, while, do ... while or for statement shall be a compound statement. 1
根拠
複合ステートメントは中かっこで囲まれます。
反復ステートメントまたは選択ステートメントに関連付けられたコード ブロックが中かっこで囲まれていない場合、関連付けで間違える可能性があります。以下に例を示します。
インデントが原因で、コード行を反復ステートメントまたは選択ステートメントに誤って関連付ける。
反復ステートメントまたは選択ステートメントの後に誤ってセミコロンを付ける。意図に反して、セミコロンが原因でステートメントの後に続く行がステートメントと関連付けられなくなります。
このチェッカーは、本体に 1 行しか含まれていない場合でも選択ステートメントまたは反復ステートメントの後ろに中かっこを追加するという慣例に従います。後で、新しい行が追加されたときに、それらを追加した開発者が中かっこがないことに気付いてそれらを含める必要がなくなります。
Polyspace 実装
チェッカーは、次のように、for
ステートメントに続く最初のトークンが左中かっこではない for
ループにフラグを設定します。
for (i=init_val; i > 0; i--) if (arr[i] < 0) arr[i] = 0;
switch
、for
、および do..while
ステートメントに対して実施されます。[結果の詳細] ペイン上のメッセージの 2 行目は、どのステートメントがルールに違反しているかを示します。たとえば、前述の例で、メッセージの 2 行目は for
ループがルールに違反していることを示します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
チェック情報
グループ: Statements |
カテゴリ: 必要 |
バージョン履歴
R2013b で導入
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.