C and C++


LANG.STRUCT.DECL.SNM : Modification of Standard Namespaces

要旨

Code introduces a new declaration into the std namespace.

プロパティ

クラス名 Modification of Standard Namespaces
日本語クラス名 Modification of Standard Namespaces
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.DECL.SNM
カテゴリー
AUTOSARC++14 AUTOSARC++14:A17-6-1 Non-standard entities shall not be added to standard namespaces.
CERT-CPP CERT-CPP:DCL58-CPP Do not modify the standard namespaces
対応言語 C++ のみ利用可能です。 C は利用できません。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Modification of Standard Namespaces"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。
#include <vector>

// namespace 'std' is reserved in the C++ standard
namespace std {
  int myvar;                // 'Modification of Standard Namespaces' warning issued here

  namespace subspaceA {}    // 'Modification of Standard Namespaces' warning issued here
}

// namespace 'posix' is also reserved in the C++ standard
namespace posix {}                    // ok: this does not modify namespace 'posix'

namespace mynamespace {
  namespace std {
    int myothervar;                   // ok: belongs to namespace 'mynamespace::std' (not 'std')
    namespace subspaceB {}            // ok: belongs to namespace 'mynamespace::std' (not 'std')
  }
}

namespace std::subspaceC {} // 'Modification of Standard Namespaces' warning issued here

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

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