C and C++


LANG.STRUCT.USING.HDIR : ヘッダファイル内でのusingディレクティブの使用

要旨

using ディレクティブが、ヘッダファイル (compilation unit内で#includeされるソースファイルと定義される)内で使用されています。

このワーニングクラスは、Using Directive(usingディレクティブの使用)の厳密な部分集合となります。

プロパティ

クラス名 Using Directive in Header File
日本語クラス名 ヘッダファイル内でのusingディレクティブの使用
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.USING.HDIR
カテゴリー
AUTOSARC++14 AUTOSARC++14:M7-3-4 Using-directives shall not be used.
  AUTOSARC++14:M7-3-6 Using-directives and using-declarations (excluding class scope or function scope using-declarations) shall not be used in header files.
MisraC++2008 MisraC++2008:7-3-4 using-directives shall not be used.
  MisraC++2008:7-3-6 using-directives and using-declarations (excluding class scope or function scope using-declarations) shall not be used in header files.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Using Directive in Header File"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

/* LANG.STRUCT.USING.HDIR.cpp */

#include "LANG.STRUCT.USING.HDIR.hpp"
/* LANG.STRUCT.USING.HDIR.hpp */

namespace ns_directive{
  int dirA;
  int dirB;
}

namespace ns_declaration{
  int declA;
  int declB;
}

namespace ns_other{
  int otherA;
  int otherB;
}

using namespace ns_directive;  /* 'Using Directive in Header File' warning issued here.
                                * (Will also trigger 'Using Directive' if enabled.) */

using ns_declaration::declA;                 /* using declaration (not directive)
                                              * (Will trigger 'Using Declaration in Header File' if enabled.) */

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。