cmake + clang_tidy - 禁用签入目录
cmake + clang_tidy - disable checking in directory
我有一个使用 CMake 的大型项目。我想使用以下代码添加 clang_tidy-8
支持:
set(BORG_CLANG_TIDY OFF CACHE STRING "If enabled, clang-tidy will be used. If set to 'fix', fixes will be done on source")
set_property(CACHE BORG_CLANG_TIDY PROPERTY STRINGS ON OFF fix)
if(BORG_CLANG_TIDY)
if (BORG_CLANG_TIDY STREQUAL "fix")
set(maybe_fix -fix)
endif()
set(CMAKE_CXX_CLANG_TIDY clang-tidy-8 -extra-arg=-Wno-unknown-warning-option -format-style=file ${maybe_fix} )
endif()
我把正确的 .clang-tidy
放在项目的根目录中(正确的 = 带有所需的检查)。但是,有些目录我不希望 clang tidy 到 check/fix(第 3 方和遗留代码无法修改,因为它很脆弱)。所以我尝试将空 .clang-tidy
文件放在这些目录中(空 = 带 -checks=-*
)。这不起作用,因为 Error: no checks enabled.
我希望能找到一些假货 -checks=-*,hello-world-do-nothing-check
但没有出现。
是否有其他方法可以禁用对选定子目录 (/subtrees) 的检查?这些目录是静态的,如果需要可以在 CMake 中进行硬编码。
如果你想要一个什么都不做的虚拟检查,至少有一个很容易通过它的选项禁用:misc-definitions-in-headers
HeaderFileExtensions
选项可用于使检查仅适用于某些头文件后缀。如果你将它设置为不存在的行 "x" 那么你有一个 hello-world-do-nothing-check
替代。你的 clang-tidy 文件看起来像这样:
Checks: '-*,misc-definitions-in-headers'
CheckOptions:
- { key: HeaderFileExtensions, value: "x" }
您还可以检查 并尝试调整 line-filter
以过滤掉某些目录中的文件。
Is there other way to disable checks in selected subdirectories (/subtrees)?
在这些子目录中包含的 CMakeList.txt 个文件中,添加以下行:
set(CMAKE_CXX_CLANG_TIDY "")
但这不是一个好的解决方案:它在构建系统和特定于工具链的工具之间创建了一个绑定。 CMAKE_CXX_CLANG_TIDY
只能通过配置命令(或可能通过工具链文件)设置。
这是我在这个场景中使用的:
# Disable most checks as this is third-party code
# Have to enable at least one check, so pick a benign one!
#InheritParentConfig: false
Checks: cppcoreguidelines-avoid-goto
我想我们都同意“转到被认为有害的声明”。
我有一个使用 CMake 的大型项目。我想使用以下代码添加 clang_tidy-8
支持:
set(BORG_CLANG_TIDY OFF CACHE STRING "If enabled, clang-tidy will be used. If set to 'fix', fixes will be done on source")
set_property(CACHE BORG_CLANG_TIDY PROPERTY STRINGS ON OFF fix)
if(BORG_CLANG_TIDY)
if (BORG_CLANG_TIDY STREQUAL "fix")
set(maybe_fix -fix)
endif()
set(CMAKE_CXX_CLANG_TIDY clang-tidy-8 -extra-arg=-Wno-unknown-warning-option -format-style=file ${maybe_fix} )
endif()
我把正确的 .clang-tidy
放在项目的根目录中(正确的 = 带有所需的检查)。但是,有些目录我不希望 clang tidy 到 check/fix(第 3 方和遗留代码无法修改,因为它很脆弱)。所以我尝试将空 .clang-tidy
文件放在这些目录中(空 = 带 -checks=-*
)。这不起作用,因为 Error: no checks enabled.
我希望能找到一些假货 -checks=-*,hello-world-do-nothing-check
但没有出现。
是否有其他方法可以禁用对选定子目录 (/subtrees) 的检查?这些目录是静态的,如果需要可以在 CMake 中进行硬编码。
如果你想要一个什么都不做的虚拟检查,至少有一个很容易通过它的选项禁用:misc-definitions-in-headers
HeaderFileExtensions
选项可用于使检查仅适用于某些头文件后缀。如果你将它设置为不存在的行 "x" 那么你有一个 hello-world-do-nothing-check
替代。你的 clang-tidy 文件看起来像这样:
Checks: '-*,misc-definitions-in-headers'
CheckOptions:
- { key: HeaderFileExtensions, value: "x" }
您还可以检查 并尝试调整 line-filter
以过滤掉某些目录中的文件。
Is there other way to disable checks in selected subdirectories (/subtrees)?
在这些子目录中包含的 CMakeList.txt 个文件中,添加以下行:
set(CMAKE_CXX_CLANG_TIDY "")
但这不是一个好的解决方案:它在构建系统和特定于工具链的工具之间创建了一个绑定。 CMAKE_CXX_CLANG_TIDY
只能通过配置命令(或可能通过工具链文件)设置。
这是我在这个场景中使用的:
# Disable most checks as this is third-party code
# Have to enable at least one check, so pick a benign one!
#InheritParentConfig: false
Checks: cppcoreguidelines-avoid-goto
我想我们都同意“转到被认为有害的声明”。