JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.

If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.

If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.

CodeSonar® 9.2p0 CONFIDENTIAL CodeSecure Inc
C and C++


LANG.TYPE.NCGV : Non-const Global Variable

要旨

One of the following.

プロパティ

クラス名 Non-const Global Variable
日本語クラス名 Non-const Global Variable
クラス分類 スタイル (style)
ニーモニック LANG.TYPE.NCGV
カテゴリー
MisraC++2023 MisraC++2023:6.7.2 Global variables shall not be used
CWE CWE:1108 Excessive Reliance on Global Variables
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Non-const Global Variable"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

int       myfunc(void);

// dynamic initialization is not permitted in C and will generally cause a compiler error
#ifdef __cplusplus
int       i1 = myfunc();        // 'Non-const Global Variable' warning issued here for C++
const int i2 = i1;              // 'Non-const Global Variable' warning issued here for C++
                                // - declared const, but dynamically initialized
#endif
const int i3 = 0;                                                 // ok: declared const and statically initialized
int       i4 = 0;               // 'Non-const Global Variable' warning issued here
int       i5;                   // 'Non-const Global Variable' warning issued here

#ifdef __cplusplus
extern int       e1 = myfunc(); // 'Non-const Global Variable' warning issued here for C++
extern const int e2 = i1;       // 'Non-const Global Variable' warning issued here for C++
#endif
extern const int e3 = 0;                                          // ok: declared const and statically initialized
extern int       e4 = 0;        // 'Non-const Global Variable' warning issued here
extern int       e5;                                              // warning not issued here: if another location
                                                                  // initializes e5, a warning will be issued there

#ifdef __cplusplus
static int       s1 = myfunc(); // 'Non-const Global Variable' warning issued here for C++
static const int s2 = i1;       // 'Non-const Global Variable' warning issued here for C++
#endif
static const int s3 = 0;                                          // ok: declared const and statically initialized
static int       s4 = 0;        // 'Non-const Global Variable' warning issued here
static int       s5;            // 'Non-const Global Variable' warning issued here

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

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

 

To report problems with this documentation, please visit https://support.codesecure.com/.