MISRA C++:2008 Rule 9-3-3
If a member function can be made static then it shall be made static, otherwise if it can be made const then it shall be made const
説明
ルール定義
メンバー関数は static にできる場合は static にされます。また、const にできる場合は const にされます。 1
根拠
const メンバー関数で、クラスのデータ メンバーに変更を加えることはできません。static メンバー関数で、クラスの非静的データ メンバーに変更を加えることはできません。メンバー関数でクラスの非静的データ メンバーに変更を加える必要がない場合は、メンバー関数を const または static として宣言して、データへのアクセスを制限します。このような宣言は明確に設計の意図を表し、強制します。つまり、不注意に const メンバー関数を使用してデータ メンバーに変更を加えようとすると、コンパイラがエラーを捕捉します。const 宣言を使用しないと、このような不注意によるエラーが、検出やデバッグが難しいバグにつながる可能性があります。
Polyspace 実装
チェッカーはこれらのチェックを次の順に実行します。
チェッカーはまず、クラスのメンバー関数がクラスのデータ メンバーにアクセスするかどうかをチェックします。データ メンバーにアクセスしない関数は static と宣言できます。
チェッカーはデータ メンバーにアクセスする関数をチェックして、関数がいずれかのデータ メンバーを変更するかどうかを判断します。データ メンバーを変更しない関数は const と宣言できます。
const メンバー関数での違反は、関数がクラスのデータ メンバーにアクセスせず、static と宣言できることを意味します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Classes |
| カテゴリ: 必要 |
バージョン履歴
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.