C and C++


LANG.ID.ND.NEST : 区別できない識別子:ネストされたスコープ

要旨

内側のスコープの識別子が外側のスコープの識別子と区別できません。

複数の識別子の最初のN個の文字が同じ文字列(大文字、小文字は区別)となっています。

関連したワーニングクラスの Identifier Classes を参照してください。

プロパティ

クラス名 Non-distinct Identifiers: Nested Scope
日本語クラス名 区別できない識別子:ネストされたスコープ
クラス分類 スタイル (style)
ニーモニック LANG.ID.ND.NEST
カテゴリー
MisraC2023 MisraC2023:5.3 An identifier declared in an inner scope shall not hide an identifier declared in an outer scope
Misra2012 Misra2012:5.3 An identifier declared in an inner scope shall not hide an identifier declared in an outer scope
Misra2004 Misra2004:5.1 Identifiers (internal and external) shall not rely on the significance of more than 31 characters
  Misra2004:5.2 Identifiers in an inner scope shall not use the same name as an identifier in an outer scope, and therefore hide that identifier
AUTOSARC++14 AUTOSARC++14:A1-1-1 All code shall conform to ISO/IEC 14882:2014 - Programming Language C++ and shall not use deprecated features.
  AUTOSARC++14:A2-10-1 An identifier declared in an inner scope shall not hide an identifier declared in an outer scope.
MisraC++2008 MisraC++2008:2-10-2 Identifiers declared in an inner scope shall not hide an identifier declared in an outer scope.
MisraC++2023 MisraC++2023:6.4.1 A variable declared in an inner scope shall not hide a variable declared in an outer scope
CWE CWE:710 Improper Adherence to Coding Standards
CERT-C CERT-C:DCL01-C Do not reuse variable names in subscopes
  CERT-C:DCL23-C Guarantee that mutually visible identifiers are unique
JSF++ JSF++:46 User-specified identifiers (internal and external) will not rely on significance of more than 64 characters.
  JSF++:135 Identifiers in an inner scope shall not use the same name as an identifier in an outer scope, and therefore hide that identifier.
JPL JPL:13 Declare data objects at smallest possible level of scope.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Non-distinct Identifiers: Nested Scope"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

SIGNIFICANCE_LEN_OTHER=-1 が設定されているものとします。

static void nestneitherA(void);                                           /* distinct in first 31 characters */

/* nestc90only123456789012345678901234567890A and
 * nestc90only123456789012345678901234567890B
 * are distinct in first 63 characters; not distinct in first 31 characters
 */
extern int nestc90only123456789012345678901234567890A;

/* nestboth123456789012345678901234567890123456789012345678901234567890A
 * and nestboth123456789012345678901234567890123456789012345678901234567890B
 * are not distinct in first 63 characters
 */
static  int nestboth123456789012345678901234567890123456789012345678901234567890A;

static void lang_id_nd_nest(int nestneitherB){                             /* distinct in first 31 characters */
  /* 'Non-distinct Identifiers: Nested Scope' warning issued on following line for C90 only */
  double nestc90only123456789012345678901234567890B;

  struct { int x; int y;}
        /* 'Non-distinct Identifiers: Nested Scope' warning issued on following line for both C90 and C99 */
        nestboth123456789012345678901234567890123456789012345678901234567890B;
  /* ... */
}

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

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