MISRA C++:2008 Rule 2-10-2
An identifier declared in an inner scope shall not hide an identifier declared in an outer scope.
説明
ルール定義
Identifiers declared in an inner scope shall not hide an identifier declared in an outer scope. 1
根拠
このルールは、2 つの変数宣言で同じ識別子名が使用されていて、そのうちの一方が外側のスコープにあり、もう一方が内側のスコープにある状況にフラグを設定します。
int var;
...
{
...
int var;
...
}内側のスコープ内での名前の使用はすべて、内側のスコープで宣言された変数を参照します。しかし、開発者またはコード レビュー担当者が、その使用法で参照されるのは外側のスコープで宣言された変数だという誤った想定をする可能性があります。
Polyspace 実装
ルール チェッカーは、以下の場合を含む、変数のシャドウイングのすべてのケースにフラグを設定します。
外側と内側の両方の名前付き名前空間に同じ識別子名が使用されている。
クラスのデータ メンバーとクラスの外にある変数に同じ名前が使用されている。
基底クラスと派生クラスのメソッドに同じ名前が使用されている。
このようなケースを除外するには、より新しい標準 AUTOSAR C++14 に切り替えて、ルール [AUTOSAR C++14 Rule A2-10-1] をチェックします。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Lexical Conventions |
| カテゴリ: 必要 |
バージョン履歴
R2013b で導入
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.