このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MISRA C++:2008 Rule 0-1-4
A project shall not contain non-volatile POD variables having only one use
説明
ルール定義
A project shall not contain non-volatile POD variables having only one use. 1
根拠
非 volatile 変数を Plain Old Data 型 (int
や double
など) と一緒に "1 回だけ" 使用する場合は、その変数を定数リテラルで置き換えることができます。変数の使用方法が、その変数を複数回使用することを示していたため、コード内でプログラミング エラーが発生した可能性があります。非 volatile 変数の他の使用を省略していたか、意図される使用場所で誤って他の変数を使用した可能性があります。
Polyspace 実装
チェッカーは、一度だけ使用される関数スコープ (ローカルに静的) とファイル スコープを持つローカル変数と静的変数にフラグを設定します。チェッカーは、extern
指定子のない const
修飾付きグローバル変数をファイル スコープを持つ静的変数と見なします。
チェッカーは、以下のユース ケースを非 volatile 変数の 1 回の使用としてカウントします。
定数リテラルまたは関数の戻り値を使用した明示的な初期化
割り当て
読み取り操作などの変数への参照
ポインターへの変数アドレスの割り当て
ポインターに変数アドレスが割り当てられている場合、チェッカーは、そのポインターが後でデリファレンスされる可能性があると仮定して、その変数にフラグを設定しません。
一部のオブジェクトは、セマンティクスによって 1 回だけ使用されるように設計されています。Polyspace® は、このようなオブジェクトの 1 回の使用にフラグを設定しません。
lock_guard
scoped_lock
shared_lock
unique_lock
thread
future
shared_future
前述のリスト内のオブジェクトと同様の機能を提供する非標準オブジェクトを使用する場合は、Polyspace が非標準オブジェクトの 1 回の使用にフラグを設定することがあります。コメントを使用することによって、この 1 回の使用を正当化します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
グループ: Language Independent Issues |
カテゴリ: 必要 |
バージョン履歴
R2020b で導入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.