C and C++


LANG.STRUCT.INIT.PIAGG : Partially Uninitialized Aggregate

Summary

Part, but not all, of an aggregate is initialized.

Properties

Class Name Partially Uninitialized Aggregate
Significance style
Mnemonic LANG.STRUCT.INIT.PIAGG
Categories
MisraC++2023 MisraC++2023:11.6.1 All variables should be initialized
CWE CWE:1419 Incorrect Initialization of Resource
JSF++ JSF++:144 Braces shall be used to indicate and match the structure in the non-zero initialization of arrays and structures.
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="Partially Uninitialized Aggregate"
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

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

point p_under = {1};       /* 'Partially Uninitialized Aggregate' warning issued here */ 
point p_ok = {1,2};                                         /* fully initialized */ 

line l_wayunder = {1};     /* 'Partially Uninitialized Aggregate' warning issued here */ 
line l_under = {{1,2},{3}};/* 'Partially Uninitialized Aggregate warning' issued here */ 
line l_ok = {{1,2},{3,4}};                                  /* fully initialized */

Relevant Configuration File Parameters

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