bugprone-suspicious-missing-comma

并排放置的字符串字面量在翻译阶段 6(预处理器之后)进行连接。此功能用于在多行上表示长字符串字面量。

例如,以下声明是等效的

const char* A[] = "This is a test";
const char* B[] = "This" " is a "    "test";

程序员常犯的一个错误是在数组初始化列表中忘记在两个字符串字面量之间添加逗号。

const char* Test[] = {
  "line 1",
  "line 2"     // Missing comma!
  "line 3",
  "line 4",
  "line 5"
};

该数组在偏移量 1(即 Test[1])处包含字符串“line 2line3”。Clang 不会在编译时生成警告。

此检查可能会在以下情况中错误地发出警告:

const char* SupportedFormat[] = {
  "Error %s",
  "Code " PRIu64,   // May warn here.
  "Warning %s",
};

选项

SizeThreshold

一个无符号整数,指定检查应考虑的字符串字面量的最小大小。默认值为 5U

RatioThreshold

一个字符串,指定应考虑的可疑字符串字面量的最大阈值比率 [0, 1.0]。默认值为 ".2"

MaxConcatenatedTokens

一个无符号整数,指定连接的令牌的最大数量。默认值为 5U