AUTOSAR C++14 Rule A8-4-9
説明
ルール定義
"in-out" parameters declared as T & shall be modified.
根拠
関数内で読み取りと変更の両方を意図した関数パラメーターは "in-out" パラメーターと呼ばれます。
パラメーターの読み取りと変更の両方は行わない場合、関数プロトタイプがパラメーターの実際の性質を反映するようにするため、非 const 参照で渡すことは避けてください。
関数内でパラメーターの読み取りのみを行う場合、パラメーターは実際には "in" パラメーターです。
パラメーターを
const参照で渡します。関数内でパラメーターの内容全体を置き換える場合、パラメーターは実際には "out" パラメーターです。
可能な場合は "out" パラメーターの使用は完全に避けて、関数の出力を関数戻り値に格納します。
AUTOSAR C++14 Rule A8-4-8も参照してください。
Polyspace 実装
チェッカーは、非 const 参照で渡された各関数パラメーターをチェックし、関数内でそのパラメーターが読み取りのみである場合、または関数内でその値が完全に置き換えられる場合、違反を報告します。
以下の場合、チェッカーは違反を報告しません。
パラメーターがオブジェクトであり、その 1 つ以上のデータ メンバーにアクセスしているか、非
constメンバー関数を呼び出している。もう 1 つの関数にパラメーターへのポインターまたは参照を渡している。
関数がバーチャル関数である。この理由は、現在の関数でパラメーターを変更していないとしても、対応するパラメーターを関数のオーバーライドで変更する可能性があるからです。
関数が使用されていないクラス メソッドである。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 宣言子 |
| カテゴリ: Required、Automated |
バージョン履歴
R2021a で導入