c++ - cmake + clang_tidy - 禁用签入目录
问题描述
我有使用 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 检查/修复(第 3 方和遗留代码,因为它很脆弱而无法修改)。所以我尝试将空.clang-tidy
文件放在这些目录中(empty = with -checks=-*
)。这不起作用,因为Error: no checks enabled.
我希望能找到一些假的-checks=-*,hello-world-do-nothing-check
,但没有任何东西出现。
是否有其他方法可以禁用选定子目录(/子树)中的检查?这些目录是静态的,如果需要,可以在 CMake 中硬编码。
解决方案
如果你想要一个什么都不做的虚拟检查,那么至少有一个很容易通过它的选项禁用:misc-definitions-in-headers
该HeaderFileExtensions
选项可用于使检查仅适用于某些头文件后缀。如果你将它设置为不存在的行“x”,那么你有一个hello-world-do-nothing-check
选择。您的 clang-tidy 文件将如下所示:
Checks: '-*,misc-definitions-in-headers'
CheckOptions:
- { key: HeaderFileExtensions, value: "x" }
您还可以检查https://stackoverflow.com/a/56319752/9874699并尝试调整line-filter
以过滤掉某些目录中的文件。
推荐阅读
- javascript - 如果条件正确,为什么序列不起作用?
- java - 如何在休眠中为多对多关系添加现有集合中的条目?
- react-native - 为底部导航反应原生曲线形状
- python - iPython 为意外的关键字参数“inputhook”提供错误
- heroku - 将单独的 repo 部署到 Heroku 子域
- javascript - 传单检查和禁用 GeoJSON 子层故障排除
- sql-server - 尝试在 where 子句中使用使用动态值创建的列但出现错误
- javascript - CryptJS PyCryptoDome - JS 端 AES 解密不可能
- reactjs - 如何保持在同一页面上并在 React js 中呈现不同的组件
- django - Pipenv shell 无法在 Python 3.8 中创建虚拟环境