AUTOSAR C++14 Rule M5-14-1
The right hand operand of a logical &&, || operators shall not contain side effects
説明
ルール定義
The right hand operand of a logical &&, || operators shall not contain side effects.
根拠
評価されると、二次的影響のある式はその式内の 1 つ以上の変数を変更します。たとえば、n++ は二次的影響のある式です。
以下の右側のオペランドについて:
論理
&&演算子の場合は、左側のオペランドが true に評価された場合にのみ評価されます。論理
||演算子の場合は、左側のオペランドが false に評価された場合にのみ評価されます。
その他の場合は、右側のオペランドが評価されません。式の二次的影響が発生しません。プログラムがこのような二次的影響に依存している場合は、予期せぬ結果が生じる可能性があります。
Polyspace 実装
チェッカーは、右側のオペランドが二次的影響を含む式となっている論理的な && 演算子または || 演算子にフラグを設定します。Polyspace® は次のように仮定します。
変数を 1 つ以上変更する式には二次的影響が含まれる。
宣言されているが定義されていない明示的なコンストラクターまたは変換関数には、二次的影響は含まれない。定義されている変換関数には、二次的影響が含まれる。
volatile アクセスと関数呼び出しには二次的影響が含まれない。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 式 |
| カテゴリ: Required、Automated |
バージョン履歴
R2019a で導入