C and C++


LANG.STRUCT.INIT.OIE : Over-initialized Element

Summary

A designated initializer initializes the same element multiple times.

Properties

Class Name Over-initialized Element
Significance reliability
Mnemonic LANG.STRUCT.INIT.OIE
Categories
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
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default, and require the unnormalized C ASTs for the project. To enable them, add the following WARNING_FILTER rule and RETAIN_UNNORMALIZED_C_AST specification to the project configuration file.
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Over-initialized Element"
Note that retaining the unnormalized ASTs will increase the disk space used to store the project representation, and may make the analysis take longer.

Example

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) */

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.