我有一个使用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整齐地检查/修复(3 3rdparty和遗留代码,因为它很脆弱而不能修改)。因此,我尝试将空的.clang-tidy
文件放在这些目录中(-checks=-*
=空)。这不管用,因为Error: no checks enabled.
我希望能找到一些假的-checks=-*,hello-world-do-nothing-check
,但什么也没有出现。
是否有其他方法禁用选定子目录(/subtrees)中的检查?这些目录是静态的,需要时可以在CMake中硬编码。
发布于 2019-10-14 14:57:03
如果您想要一个不会做任何事情的虚拟检查,那么至少有一个选项非常容易禁用:定义中的标头
可以使用HeaderFileExtensions
选项使检查只使用特定的头文件后缀。如果将其设置为不存在的行"x“,则可以选择hello-world-do-nothing-check
。然后,您的clang-整齐文件将如下所示:
Checks: '-*,misc-definitions-in-headers'
CheckOptions:
- { key: HeaderFileExtensions, value: "x" }
您还可以检查https://stackoverflow.com/a/56319752/9874699并尝试对line-filter
进行调整,以筛选出某些目录中的文件。
发布于 2020-03-27 23:36:31
是否有其他方法禁用选定子目录(/subtrees)中的检查?
在这些子目录中包含的CMakeList.txt文件中,添加以下行:
set(CMAKE_CXX_CLANG_TIDY "")
但是这不是一个好的解决方案:它在构建系统和特定于工具链的工具之间创建了一个绑定。CMAKE_CXX_CLANG_TIDY
只应通过配置命令(或可能通过工具链文件)设置。
发布于 2021-02-09 01:00:47
下面是我在这个场景中使用的内容:
# 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
我想我们都可以同意“去发表被认为有害的声明”。
https://stackoverflow.com/questions/58338202
复制相似问题