首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cmake中为clang-tidy提供标题过滤器的正确方式是什么?

问在Cmake中为clang-tidy提供标题过滤器的正确方式是什么?
EN

Stack Overflow用户
提问于 2020-04-03 05:21:12
回答 1查看 4K关注 0票数 14

我有一些项目设置Clang-tidy配置,如下所示

代码语言:javascript
复制
set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=google-*,cppcoreguidelines-*;")

但是,我注意到它正在检查所有甚至不在当前存储库中的文件,比如

代码语言:javascript
复制
/opt/ros/melodic/include/ros/console.h

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

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

我可以有一个关于头过滤器的例子吗??

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

EN

回答 1

Stack Overflow用户

发布于 2020-04-03 09:29:43

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

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

代码语言:javascript
复制
'^((?!/cocos2d-x/external/|/cocos/scripting/).)*$'

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

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

代码语言:javascript
复制
#!/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文件,输出为

代码语言:javascript
复制
/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测试脚本,以查看它是否工作。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61001314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档