1.. title:: clang-tidy - cppcoreguidelines-init-variables
2
3cppcoreguidelines-init-variables
4================================
5
6Checks whether there are local variables that are declared without an initial
7value. These may lead to unexpected behavior if there is a code path that reads
8the variable before assigning to it.
9
10Only integers, booleans, floats, doubles and pointers are checked. The fix
11option initializes all detected values with the value of zero. An exception is
12float and double types, which are initialized to NaN.
13
14As an example a function that looks like this:
15
16.. code-block:: c++
17
18   void function() {
19     int x;
20     char *txt;
21     double d;
22
23     // Rest of the function.
24   }
25
26Would be rewritten to look like this:
27
28.. code-block:: c++
29
30   #include <math.h>
31
32   void function() {
33     int x = 0;
34     char *txt = nullptr;
35     double d = NAN;
36
37     // Rest of the function.
38   }
39
40It warns for the uninitialized enum case, but without a FixIt:
41
42.. code-block:: c++
43
44   enum A {A1, A2, A3};
45   enum A_c : char { A_c1, A_c2, A_c3 };
46   enum class B { B1, B2, B3 };
47   enum class B_i : int { B_i1, B_i2, B_i3 };
48   void function() {
49     A a;     // Warning: variable 'a' is not initialized
50     A_c a_c; // Warning: variable 'a_c' is not initialized
51     B b;     // Warning: variable 'b' is not initialized
52     B_i b_i; // Warning: variable 'b_i' is not initialized
53   }
54
55Options
56-------
57
58.. option:: IncludeStyle
59
60   A string specifying which include-style is used, `llvm` or `google`. Default
61   is `llvm`.
62
63.. option:: MathHeader
64
65   A string specifying the header to include to get the definition of `NAN`.
66   Default is `<math.h>`.
67