C and C++


LANG.STRUCT.INIT.UADI : サイズ未定義の指示付初期化子

要旨

指示付きの初期化子が、サイズが明示されていない配列の初期化に使用されています。

プロパティ

クラス名 Unspecified Array Size with Designator Initialization
日本語クラス名 サイズ未定義の指示付初期化子
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.INIT.UADI
カテゴリー
MisraC2023 MisraC2023:9.5 Where designated initializers are used to initialize an array object the size of the array shall be specified explicitly
Misra2012 Misra2012:9.5 Where designated initializers are used to initialize an array object the size of the array shall be specified explicitly
CWE CWE:1419 Incorrect Initialization of Resource
CERT-C CERT-C:MSC23-C Beware of vendor-specific library and language differences
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Unspecified Array Size with Designator Initialization"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

void lang_struct_init_uadi( void ){

  int sz_arr[3] = {[0] = 5, [1] = 10};               /* array size specified */               

  int nosz_arr[] = {[0] = 0, [1] = 10}; /* 'Unspecified Array Size with Designator Initialization' warning issued here */ 
}

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

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