AUTOSAR C++14 Rule A2-13-4
文字列リテラルは非定数ポインターに割り当てないものとします。
説明
ルール定義
文字列リテラルは非定数ポインターに割り当てないものとします。
根拠
このルールは、非 const オブジェクトを指しているポインターへの文字列リテラルの代入を防止します。このような代入では、その後の文字列リテラルの変更が許可されます。
文字列リテラルを変更しようとすると未定義の動作が発生する可能性があります。たとえば、実装の一部で文字列リテラルを読み取り専用メモリに保存できるとします。文字列リテラルを変更しようとすると、例外やクラッシュが発生する可能性があります。
最近の C++ 標準では、このような変更に対してコンパイラ警告が要求されます。コンパイラ警告が抑制されている (かつ、AUTOSAR C++14 ルールがこれらの警告に関連付けられている) 状況ではこのルールが適用されます。
Polyspace 実装
ルール チェッカーは、const オブジェクトへのポインター以外のポインターへの文字列リテラルの代入にフラグを設定します。
チェッカーは、非 const 配列への文字列リテラルの代入にはフラグを設定しません。AUTOSAR C++ 14 ルール A18-1-1 のチェッカーは、C スタイル配列の直接使用を禁止し、これらの代入を防止します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 構文規則 |
| カテゴリ: Required、Automated |
バージョン履歴
R2019a で導入