gpt4 book ai didi

c++ - CMake 调用时出现 clang-tidy 重复错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:03:08 27 4
gpt4 key购买 nike

我对 clang-tidy 有疑问。基本上,它会分析我的每个项目文件,但对于包含在多个 .cpp 文件中的 header ,它会打印冗余错误。

问题是,Visual Studio Code 有它的 PROBLEMS 选项卡,它会挑选每一个问题,所以对于文件 definitions.hpp ,它包含在 3 个单独的.cpp 文件我最终得到这样的东西:

enter image description here

控制台输出为:

[build] [3/4  25% :: 14.699] Building CXX object CMakeFiles\solver.dir\src\definitions.cpp.obj
[build] [...]\build\..\src/definitions.hpp:1:9: warning: header guard does not follow preferred style [llvm-header-guard]
[build] #ifndef DEFINITIONS_HPP
[build] ^~~~~~~~~~~~~~~
[...]
[build] [3/4 50% :: 16.138] Building CXX object CMakeFiles\solver.dir\src\genetic_algorithm.cpp.obj
[build] [...]\build\..\src/definitions.hpp:1:9: warning: header guard does not follow preferred style [llvm-header-guard]
[build] #ifndef DEFINITIONS_HPP
[build] ^~~~~~~~~~~~~~~
[...]
[build] [3/4 75% :: 17.362] Building CXX object CMakeFiles\solver.dir\src\main.cpp.obj
[build] [...]\build\..\src/definitions.hpp:1:9: warning: header guard does not follow preferred style [llvm-header-guard]
[build] #ifndef DEFINITIONS_HPP
[build] ^~~~~~~~~~~~~~~

那么,有没有什么办法可以防止这样的事情发生呢?我的意思是它是我的错误列表的两倍。

@编辑

所以这是我的 clang-tidy - CMakeLists.txt 的相关部分:

if(CMAKE_VERSION VERSION_GREATER 3.6)
option(CLANG_TIDY_FIX "Perform fixes for Clang-Tidy" OFF)
find_program(
CLANG_TIDY_EXE
NAMES "clang-tidy"
DOC "Path to clang-tidy executable"
)

if(CLANG_TIDY_EXE)
if(CLANG_TIDY_FIX)
set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE}" "-fix")
else()
message("SETTING UP CLANG TIDY")
set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE}")
endif()
endif()
endif()

这是我的 .clang-tidy 文件:

---
Checks: '*'
HeaderFilterRegex: '.*'
AnalyzeTemporaryDtors: false
FormatStyle: none
...

最佳答案

这可能是 Visual Studio Code 如何实现其对 clang-tidy 的支持的问题。

Clang-tidy 自身供应 run-clang-tidy.py对编译数据库中的所有文件运行 clang-tidy 的脚本文件。它还可以防止在代码的相同位置多次应用修复。

您的选择是:

  • 修复代码,不发出警告
  • 使用//NOLINT//NOLINTNEXTLINE 来抑制这些警告

编辑:在讨论之后,这在我看来就像是 cmake 如何调用 clang-tidy 的问题——它在每个目标上单独运行,而 clang-tidy 无法知道它之前报告了一些错误。您应该只使用 CMake 生成 compile_commands.json 然后通过 run-clang-tidy.py 运行 clang-tidy .

This article似乎证实了我对与 CMake 的 clang-tidy 集成的怀疑。

关于c++ - CMake 调用时出现 clang-tidy 重复错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55822272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com