C and C++


LANG.STRUCT.DECL.GLOBAL : グローバル名前空間における不適切な宣言

要旨

グローバル名前空間内の宣言が、次にあげるいずれでもありません。

プロパティ

クラス名 Inappropriate Declaration in Global Namespace
日本語クラス名 グローバル名前空間における不適切な宣言
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.DECL.GLOBAL
カテゴリー
AUTOSARC++14 AUTOSARC++14:M7-3-1 The global namespace shall only contain main, namespace declarations and extern "C" declarations.
MisraC++2008 MisraC++2008:7-3-1 The global namespace shall only contain main, namespace declarations and extern "C" declarations.
MisraC++2023 MisraC++2023:6.0.3 The only declarations in the global namespace shall be main, namespace declarations and extern "C" declarations
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Inappropriate Declaration in Global Namespace"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

extern "C" int extern_C_int;                                         // ok: extern "C" declaration

typedef int int32_t;                                                 // ok: type definitions for 'int32_t' are permitted

typedef int nonexempt_typename;   // 'Inappropriate Declaration in Global Namespace' warning issued here

int global_int;                   // 'Inappropriate Declaration in Global Namespace' warning issued here

void global_func(void){}           // 'Inappropriate Declaration in Global Namespace' warning issued here

namespace {
  int fn_in_anon_namespace(void);                                    // ok: not in the global namespace
}

namespace myns
{
  int var_in_named_namespace;                                        // ok: not in the global namespace
}

int32_t main ( ) { return 2; }                                       // ok: main()

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

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