gpt4 book ai didi

c++ - 在 Cmake 中为 clang-tidy 提供 header 过滤器的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-01 14:43:09 42 4
gpt4 key购买 nike

我有项目将 Clang-tidy 配置设置如下

set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=google-*,cppcoreguidelines-*;")

但是,我注意到它正在检查甚至不在当前存储库中的所有文件,例如
/opt/ros/melodic/include/ros/console.h

以及子模块的所有 .h/.hpp 文件...

我试图添加一个正则表达式来过滤目标 .h 文件,但无法让它工作......
我已经给出了单个 .hpp 文件的绝对路径,但它仍在评估 /opt/ros/melodic/include文件...

我可以举一个关于 header-filter 的例子吗?

我假设如果 hpp 在过滤器中,clang-tidy 将检查相应的 cpp 文件。我对么?

最佳答案

你可以看看这个例子。那是我的 promise 。 https://github.com/cocos2d/cocos2d-x/pull/19928

这就是我使用正则表达式禁用两个目录的 clang-tidy 检查的方式。

'^((?!/cocos2d-x/external/|/cocos/scripting/).)*$'

它禁用了对 external 的 clang-tidy 检查。目录和 cocos/scripting目录。

我创建了一个 python 脚本来测试正则表达式是否按预期工作。

#!/usr/bin/env python
import re

files = [
"/home/john/cocos2d-x/external/openssl/include/linux/openssl/bio.h",
"/home/john/cocos2d-x/external/tiff/include/linux/tiff.h",
"/home/john/git/cocos/cocos2d-x/cocos/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.cpp"
"/home/john/cocos2d-x/external/json/stringbuffer.h",
"/home/john/cocos2d-x/cocos/base/ccUtils.h",
"/home/john/git/cocos/cocos2d-x/cocos/scripting/js-bindings/precheader.cpp",
"/home/john/cocos2d-x/cocos/physics/CCPhysicsBody.cpp",
"/home/john/cocos2d-x/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.cpp",
"/home/john/cocos2d-x/templates/cpp-template-default/Classes/AppDelegate.cpp",
"/home/john/git/cocos/cocos2d-x/cocos/scripting/js-bindings/proj.android/CMakeLists.txt",
]

pattern = '^((?!/cocos2d-x/external/|/cocos/scripting/).)*$'

for file in files:
m = re.search(pattern, file)
if m:
print m.group(0)

运行这个 python 文件,输出是

/home/john/cocos2d-x/cocos/base/ccUtils.h
/home/john/cocos2d-x/cocos/physics/CCPhysicsBody.cpp
/home/john/cocos2d-x/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.cpp
/home/john/cocos2d-x/templates/cpp-template-default/Classes/AppDelegate.cpp

您可以修改正则表达式和python测试脚本,看看它是否有效。

关于c++ - 在 Cmake 中为 clang-tidy 提供 header 过滤器的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61001314/

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