.clang-tidy 配置文件内容被忽略

.clang-tidy configuration file content is being ignored

我想修改代码分析器程序 clang-tidy 正在做的检查,但配置文件 .clang-tidy 的内容似乎被忽略了。

  1. 我通过使用标志 -dump-config 调用 clang-tidy 创建文件,并将输出重定向到文件 .clang-tidy.
  2. 然后我调用 sed 将值 800 替换为值 700,这对应于带有键 google-readability-function-size.StatementThreshold 的选项。具体选项对我来说并不重要,这只是为了测试。
  3. 我验证该值确实已更改。
  4. 最后,我重新运行clang-tidy看它是否接受了新的配置,但它仍然没有改变。
# generate config
clang-tidy -dump-config > .clang-tidy
# change config
sed -i 's/800/700/' .clang-tidy
# verify change
grep '700' .clang-tidy
# use config, does not work
clang-tidy -config '' -dump-config

CheckOption保持默认值,配置文件的内容已被忽略:

CheckOptions:
# some lines omitted for brevity
  - key:             google-readability-function-size.StatementThreshold
    value:           '800'

运行 clang-tidy -config '' -dump-config -explain-config 表明至少找到了配置文件,即在检测到的配置文件中启用了许多 clang-analyzer 特定检查,但检查 google-readability-function-size.StatementThreshold 是未列出。

我也尝试使用命令 clang-tidy -config="{CheckOptions: [ {key: google-readability-function-size.StatementThreshold, value: 700} ]}" -dump-config 直接将配置作为命令行参数传递,但得到了相同的结果。

命令 clang-tidy --version 给出以下输出,运行 on Ubuntu 20.04:

LLVM (http://llvm.org/):
  LLVM version 10.0.0
  
  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: haswell

要查看更改,您需要启用检查:

Checks:          'google-readability-function-size'

您可以在有效配置中看到它发生了变化:

clang-tidy --dump-config

另一个需要注意的陷阱是解析值的错误将被静默丢弃。