C and C++


LANG.STRUCT.SCOPE.FILE : ファイルスコープの可能性

要旨

ファイルスコープでのみ使用されている変数が、グローバルスコープで定義されています。

設定ファイルパラメータ SCOPE_CHECK_SUGGESTS_LOCAL_STATICNo に設定されている場合、ローカルスコープとなる可能性の変数も含みます。 (そうでない場合は(ローカルスコープの可能性) としてレポートされます)。

プロパティ

クラス名 Scope Could Be File Static
日本語クラス名 ファイルスコープの可能性
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.SCOPE.FILE
カテゴリー
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.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Scope Could Be File Static"

以下は、myfile.c が変数 myint を参照している唯一のファイルの例です。

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

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

int get_myint(){
    return myint;
}

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

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