C and C++


LANG.STRUCT.INIT.OIE : 複数回初期化された要素

要旨

指示初期化子が同じ要素を複数回初期化しています。

プロパティ

クラス名 Over-initialized Element
日本語クラス名 複数回初期化された要素
クラス分類 信頼性 (reliability)
ニーモニック LANG.STRUCT.INIT.OIE
カテゴリー
MisraC2023 MisraC2023:9.4 An element of an object shall not be initialized more than once
Misra2012 Misra2012:9.4 An element of an object shall not be initialized more than once
CWE CWE:665 Improper Initialization
  CWE:1164 Irrelevant Code
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Over-initialized Element"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

int arr_okinit[3] = {[0]=1,[1]=2,[2]=3};                               /* each element initialized once */  

int arr_diffover[3] = {[0]=1,[1]=2,[1]=4,[2]=3}; /* 'Over-initialized Element' warning issued here */

int arr_sameover[3] = {[0]=1,[1]=2,[1]=2,[2]=3}; /* 'Over-initialized Element' warning issued here
                                                  * (even though initialization values are the same) */

typedef struct { int x, y; }  point;

point p_dok = {.x=1,.y=2};                                             /* each element initialized once */  

point p_doverdiff = {.x=1,.y=2,.y=3};            /* 'Over-initialized Element' warning issued here  */

point p_doversame = {.x=1,.y=2,.y=2};            /* 'Over-initialized Element' warning issued here
                                                  * (even though initialization values are the same) */

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

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