cppcoreguidelines-init-variables

检查是否有未初始化值的局部变量。如果存在读取变量但未赋值的代码路径,这些变量可能会导致意外行为。

此规则是 类型安全(Type.5) 配置文件和 C++ 核心准则中的 ES.20 的一部分。

只检查整数、布尔值、浮点数、双精度数和指针。修复选项将所有检测到的值初始化为零。浮点数和双精度数类型例外,它们初始化为 NaN。

例如,一个类似这样的函数

void function() {
  int x;
  char *txt;
  double d;

  // Rest of the function.
}

将被重写为

#include <math.h>

void function() {
  int x = 0;
  char *txt = nullptr;
  double d = NAN;

  // Rest of the function.
}

它会对未初始化的枚举情况发出警告,但没有提供修复建议

enum A {A1, A2, A3};
enum A_c : char { A_c1, A_c2, A_c3 };
enum class B { B1, B2, B3 };
enum class B_i : int { B_i1, B_i2, B_i3 };
void function() {
  A a;     // Warning: variable 'a' is not initialized
  A_c a_c; // Warning: variable 'a_c' is not initialized
  B b;     // Warning: variable 'b' is not initialized
  B_i b_i; // Warning: variable 'b_i' is not initialized
}

选项

IncludeStyle

一个字符串,指定使用的包含样式,llvmgoogle。默认值为 llvm

MathHeader

一个字符串,指定包含用于获取 NAN 定义的头文件。默认值为 <math.h>