AUTOSAR C++14 Rule M7-3-4
Using-directives shall not be used
説明
ルール定義
using-directives shall not be used.
根拠
using 命令は、意図したより多くの変数を名前ルックアップに公開する可能性があります。名前ルックアップのスコープが広いほど、変数が意図せず使用される可能性が高まります。次に例を示します。
namespace NS {
int i;
int j;
}
using namespace NS;NS::i と NS::j の両方が名前ルックアップに公開されますが、使用する予定なのはいずれか 1 つの変数のみである場合があります。使用する予定の変数のみを公開するか、変数を使用するときに完全修飾名で参照することをお勧めします。たとえば、前の例で変数 NS::i を使用する場合は、次のようにこの変数のみを名前ルックアップに公開します。
using NS::i;
i の代わりに NS::i を参照します。Polyspace 実装
ルール チェッカーは、using 命令に対する違反を報告します。これらの命令では、キーワード using の後ろにキーワード namespace と名前空間の名前が続きます。using 命令は、名前空間のすべてのメンバーを現在のスコープで使用可能にします。
チェッカーは、using の宣言にフラグを設定しません。これらの宣言にもキーワード using が含まれていますが、キーワード namespace は含まれていません。using の宣言では、名前空間の特定のメンバーだけが公開されます。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 宣言 |
| カテゴリ: Required、Automated |
バージョン履歴
R2019a で導入