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

Summary

One of the following.

Properties

Class Name Non-const Global Variable
Significance style
Mnemonic LANG.TYPE.NCGV
Categories
MisraC++2023 MisraC++2023:6.7.2 Global variables shall not be used
CWE CWE:1108 Excessive Reliance on Global Variables
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default, and require the unnormalized C ASTs for the project. To enable them, add the following WARNING_FILTER rule and RETAIN_UNNORMALIZED_C_AST specification to the project configuration file.
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Non-const Global Variable"
Note that retaining the unnormalized ASTs will increase the disk space used to store the project representation, and may make the analysis take longer.

Example

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

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.

 

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