MISRA C++:2008 Rule 5-2-1
Each operand of a logical && or || shall be a postfix-expression
説明
ルール定義
Each operand of a logical && or || shall be a postfix-expression. 1
根拠
このルールは実質的に、論理演算 && または || のオペランドが適切に小かっこで囲まれるよう規定しています。このルールでは、たとえば a + b || c ではなく、(a + b) || c または a + (b || c) を使用しなければなりません。ルールに準拠しているどちらの例でも、|| の左側のオペランド、つまり (a + b) または b は一次式であるため、後置式でもあります。後置式の詳細については、C++03 規格 (節 5.2) を参照してください。
オペランドを小かっこで囲むと、コードの可読性が向上し、開発者の意図する順序で演算が行われることが確実になります。
Polyspace 実装
チェッカーは、論理 && または || のオペランドが後置式でない場合、違反を報告します。
後置式は、単純な識別子または小かっこで囲まれた識別子の組み合わせなどの一次式にできますが、次のいずれかにすることも可能です。
func()などの関数呼び出し。arr[]などの配列要素へのアクセス。aStructVar.aMemberなどの構造体メンバーへのアクセス。
後置式の完全なリストについては、C++03 規格 (節 5.2) を参照してください。
チェッカーは、結合法則に従うチェーン ((a && b && c) や (a || b || c) など) の例外を許容します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Expressions |
| カテゴリ: 必要 |
バージョン履歴
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.