MISRA C++:2008 Rule 7-1-2
A pointer or reference parameter in a function shall be declared as pointer to const or reference to const if the corresponding object is not modified
説明
ルール定義
A pointer or reference parameter in a function shall be declared as pointer to const or reference to const if the corresponding object is not modified. 1
根拠
関数シグネチャのベスト プラクティスは、パラメーターでオブジェクトを関数に渡した場合に、そのオブジェクトが変更されるかどうかを明確に伝えることです。次の関数シグネチャについて考えます。
void foo(const in&); void bar(int&);
foo() が const の参照として整数を受け入れます。これにより、入力参照が foo() によって変更されないことが明確に伝わります。bar() のシグネチャからは、入力参照が変更されるかどうかが明確ではありません。このルールに準拠するには、名前付きポインターまたは参照パラメーターの型を const で修飾します。例外として、一連のオーバーライド関数のうちのいずれかによってパラメーターが変更される場合、このルールは適用されません。
Polyspace 実装
チェッカーは、基になるオブジェクトが関数本体で変更されない場合、const でないポインター パラメーターにフラグを設定します。
ポインター パラメーターが const でない参照またはポインターとして別の関数に渡される場合、チェッカーは、そのパラメーターは変更される可能性があると想定します。このようなパラメーターは違反として報告されません。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Declarations |
| カテゴリ: 必要 |
バージョン履歴
R2018a で導入1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.