AUTOSAR C++14 Rule A7-1-3
CV 修飾子は typedef または using name である型の右側に配置するものとします。
説明
ルール定義
CV 修飾子は typedef または using name である型の右側に配置するものとします。
根拠
typedef または using ステートメントでポインター型が定義されているとします。次に例を示します。
using IntPtr = std::int32_t*;
const 修飾は、const IntPtr ptr = &someValue;
const (std::int32_t*) ptr = &someValue;
ptr は定数ポインターであるため、他のメモリ位置に再代入できません。しかし、開発者またはレビュー担当者は次の展開を想定する可能性があります。(const std::intr32_t) *ptr = &someValue;
ptr は定数へのポインターです。したがって、ptr が指している位置の内容である *ptr は変更できません。この混乱を回避するには、const または volatile 修飾子を typedef または using を介して定義されたデータ型の右側に配置します。次に例を示します。
IntPtr const ptr = &someValue;
std::intr32_t const *ptr = &someValue;
ptr は定数ポインターになります。Polyspace 実装
チェッカーは、const 修飾子または volatile 修飾子が typedef ステートメントまたは using ステートメントを介して定義されたデータ型の左側に配置されている場合に違反を報告します。
チェッカーは、ポインター データ型と非ポインター データ型の両方に対する違反を報告します。チェッカーは、std 名前空間で定義された typedefs に対する違反を報告しません。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 宣言 |
| カテゴリ: Required、Automated |