メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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;
同様のチェックが、switchfor、および 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.