【问题标题】:clang-tidy reporting unknown warningsclang-tidy 报告未知警告
【发布时间】:2018-04-10 21:51:13
【问题描述】:

我有一个使用 GCC 的 CMake 构建。我生成了 compile_commands.json 然后运行 ​​clang-tidy 但我得到了数百个:

error: unknown warning option '-Wno-maybe-uninitialized'; did you mean '-Wno-uninitialized'? [clang-diagnostic-unknown-warning-option]
error: unknown warning option '-Wno-psabi' [clang-diagnostic-unknown-warning-option]

如何禁用或删除这些警告?我看到了clang++ warning: “warning: unknown warning option '-Wno-maybe-uninitialized'”,但添加“-Wno-unknown-warning-option”会给我一个错误:

run-clang-tidy-3.8.py: error: unrecognized arguments: -Wno-unknown-warning-option

【问题讨论】:

  • 但是那里给出的答案不适用于clang-tidy。
  • 如果您的 CMake 项目无条件添加给定的编译器选项,您唯一能做的可能就是修复 CMake 项目本身。
  • 这不是无条件的——这些选项对 GCC 有效。
  • 但它们对 clang 无效。 “无条件”是指项目在添加选项之前不检查编译器。还是你为 gcc 配置了项目,但是用 clang 构建了它?如果是这样,你还想要什么?

标签: c++ cmake clang-tidy


【解决方案1】:

我在使用 GCC 生成 compile_commands.json 时遇到了同样的问题。当我使用 Clang 时,一切都很好。看来 clang-tidy/run_clang_tidy.py 在处理由不同于 Clang 的编译器生成的 compile_commands.json 时存在问题。

【讨论】:

    【解决方案2】:

    对我来说,

    set(CMAKE_CXX_CLANG_TIDY "clang-tidy-8;--extra-arg=-Wno-error=unknown-warning-option")
    

    解决了在 CMake 中运行 clang-tidy 时的问题。

    【讨论】:

      【解决方案3】:

      尝试将 -extra-arg=-Wno-unknown-warning-option 附加到 clang-tidy 命令行。

      使用-extra-arg= 要求clang-tidy 将-Wno-unknown-warning-option 传递给底层clang。否则,它会尝试将其解释为一个整洁的标志。

      编辑:

      run-clang-tidy.py 脚本从 5.0 版开始支持 -extra-arg。在以前的版本中,您需要编辑脚本并手动添加 -extra-arg

      如果您使用的是 Ubuntu 16.04,您可以从以下地址获取clang-tidy-5.0
      https://www.ubuntuupdates.org/package/xorg-edgers/xenial/main/base/clang-tidy-5.0

      【讨论】:

      • "run-clang-tidy-3.8.py:错误:无法识别的参数:-extra-arg=-Wno-unknown-warning-option"。我需要更新版本的 clang-tidy 吗?
      • 对,你需要run-clang-tidy-5.0.py,如果你正在运行脚本(-extra-arg 也被clang-tidy-3.8 识别,但只有在 5.0 脚本中,参数被脚本并传递给 clang-tidy)。
      猜你喜欢
      • 2017-01-24
      • 2017-05-31
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 2020-05-30
      • 2021-09-04
      • 2020-03-08
      • 2012-10-17
      相关资源
      最近更新 更多