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.STRUCT.SCOPE.FILE : Scope Could Be File Static

Summary

A variable has been declared with global scope when it only requires file static scope. When configuration file parameter SCOPE_CHECK_SUGGESTS_LOCAL_STATIC is set to No, this includes the case where the variable could be local static (otherwise, such cases are reported as Scope Could Be Local Static).

Properties

Class Name Scope Could Be File Static
Significance style
Mnemonic LANG.STRUCT.SCOPE.FILE
Categories
MisraC2025 MisraC2025:1.5 Obsolescent language features shall not be used
  MisraC2025:8.7 Functions and objects should not be defined with external linkage if they are referenced in only one translation unit
  MisraC2025:8.8 The static storage class specifier shall be used in all declarations of objects and functions that have internal linkage
MisraC2023 MisraC2023:1.5 Obsolescent language features shall not be used
  MisraC2023:8.7 Functions and objects should not be defined with external linkage if they are referenced in only one translation unit
  MisraC2023:8.8 The static storage class specifier shall be used in all declarations of objects and functions that have internal linkage
Misra2012 Misra2012:1.5 Obsolescent language features shall not be used
  Misra2012:8.7 Functions and objects should not be defined with external linkage if they are referenced in only one translation unit
  Misra2012:8.8 The static storage class specifier shall be used in all declarations of objects and functions that have internal linkage
Misra2004 Misra2004:8.10 All declarations and definitions of objects or functions at file scope shall have internal linkage unless external linkage is required
  Misra2004:8.11 The static storage class specifier shall be used in definitions and declarations of objects and functions that have internal linkage
CWE CWE:1126 Declaration of Variable with Unnecessarily Wide Scope
CERT-C CERT-C:DCL15-C Declare file-scope objects or functions that do not need external linkage as static
  CERT-C:DCL19-C Minimize the scope of variables and functions
JSF++ JSF++:136 Declarations should be at the smallest feasible scope.
  JSF++:137 All declarations at file scope should be static where possible.
POW10 POW10:6 Declare data objects at the smallest possible level of scope.
JPL JPL:13 Declare data objects at smallest possible level of scope.
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default. To enable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += allow class="Scope Could Be File Static"

Example

Suppose we have a project in which myfile.c is the only file that refers to variable myint. Then:

int myint = 5;  /* 'Scope Could Be File Static' warning issued here */

void modify_int(int i){
    myint += i;
}

int get_myint(void){
    return myint;
}

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/.