C and C++


LANG.STRUCT.INIT.MBI : 波括弧が不足した初期化

要旨

オブジェクトもしくはサブオブジェクトの初期化子が波括弧 {...} で囲まれておらず、 かつ以下の許可された様式ではありません。

プロパティ

クラス名 Missing Braces in Initialization
日本語クラス名 波括弧が不足した初期化
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.INIT.MBI
カテゴリー
MisraC2023 MisraC2023:9.2 The initializer for an aggregate or union shall be enclosed in braces
Misra2012 Misra2012:9.2 The initializer for an aggregate or union shall be enclosed in braces
Misra2004 Misra2004:9.2 Braces shall be used to indicate and match the structure in the non-zero initialisation of arrays and structures
AUTOSARC++14 AUTOSARC++14:M8-5-2 Braces shall be used to indicate and match the structure in the non-zero initialization of arrays and structures.
MisraC++2008 MisraC++2008:8-5-2 Braces shall be used to indicate and match the structure in the non-zero initialization of arrays and structures.
CWE CWE:665 Improper Initialization
JSF++ JSF++:144 Braces shall be used to indicate and match the structure in the non-zero initialization of arrays and structures.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Missing Braces in Initialization"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

int arr_nonestinit[2][2] = {1, 2, 3, 4};    /* 'Missing Braces in Initialization' warning issued here */
int arr_nestinit[2][2] = { {1, 2}, {3, 4} };                       /* fully nested */ 
char arr_strinit[10] = "hello";                                    /* string literal */ 
int arr_zero[2][2] = { 0 };                                        /* {0} initializes all elements to 0 */ 
int arr_desinit[2][2] = {[1][0]=1, [0][0]=2, [0][1]=1, [1][1]=0};  /* designated initializer */ 

typedef struct { int x, y; }  point;
typedef struct { point beg; point end; } line ;

line l_nonest = {1, 2, 3, 4};               /* 'Missing Braces in Initialization' warning issued here */ 
line l_nest = { {1,2}, {3,4} };                                    /* fully nested */ 
line l_zero = { 0 };                                               /* {0} initializer */ 
line l_des = { .beg.x = 0 };                                       /* designated initializer */

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

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