clang-tidy -fix 不应用任何更改

clang-tidy -fix does not apply any changes

我 运行 clang-tidy 使用以下命令:

run-clang-tidy.py -checks="-*,cppcoreguidelines-*,hicpps-*" -header-filter=".*" -fix"

(或 clang-tidy -checks="-*,cppcoreguidelines-*,hicpps-*" -header-filter=".*" -fix" 也有效)

这个returns错误很多。它也在终端中显示 applying fixes... 因为我添加了 -fix 选项。

我的问题是 cppcoreguidelines-*hicpps-* 修复未应用,仅显示。我选择的支票是否不支持解决我的 1000 个问题?

您应该使用 -fix-errors 选项而不仅仅是 -fix。如果存在编译器错误,后者将不会应用任何修复。 见 clang-tidy documentation:

  -fix                          -
                                  Apply suggested fixes. Without -fix-errors
                                  clang-tidy will bail out if any compilation
                                  errors were found.
  -fix-errors                   -
                                  Apply suggested fixes even if compilation
                                  errors were found. If compiler errors have
                                  attached fix-its, clang-tidy will apply them as
                                  well.

当我试图通过 LLVM 的 run-clang-tidy python 脚本自动应用 clang-tidy 修复时,我也 运行 遇到了同样的问题:

问题的根源 对我来说,run-clang-tidy.py scriptclang-tidyclang-apply-replacements 的版本不匹配。 后者是版本 10 而不是 11,因此安装 clang-tidy-11 并将 clang-apply-replacements 链接到 clang-apply-replacements-11 为我解决了这个问题。我还从 LLVM 的存储库中下载了带有匹配标签的 run-clang-tidy 脚本。

这是否也是您问题的原因? 如果报告的版本不匹配,类似的步骤也可能会解决您的问题。

clang++ --version
clang-tidy --version
clang-apply-replacements --version