AUTOSAR C++14 Rule A4-10-1
Only nullptr literal shall be used as the null-pointer-constraint
説明
ルール定義
nullptr リテラルのみを null ポインター定数として使用するものとします。
根拠
nullptr は、有効なオブジェクトを指していないポインターの概念をサポートするために C++11 で導入されました。C++11 より前は、マクロ NULL と定数 0 が null ポインター定数を定義する唯一の方法でした。nullptr を使用して null ポインターを指定する方が、NULL や 0 を使用するより多くのメリットがあります。次に例を示します。
nullptrは、暗黙的キャストを使用しなくても、任意の型の null ポインターで使用することができます。nullptrリテラルは、テンプレート関数を使用したパラメーター転送を可能にします。
NULL は、void* 型にキャストされた整数 0 に展開されるマクロです。NULL または 0 を使用して null ポインターを指定することは、開発者が想定している動作の反対です。nullptr を期待していたコードが、代わりに、NULL または 0 を検出した場合は、混乱または予期せぬ動作につながる可能性があります。
Polyspace 実装
Polyspace® は、null ポインターを指定するための nullptr の代わりに NULL または 0 が使用されていた場合にフラグを設定します。このルールは、NULL と 0 の間の変換はチェックしません。AUTOSAR C++14 Rule M4-10-1を参照してください。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 標準変換 |
| カテゴリ: Required、Automated |
バージョン履歴
R2020a で導入