gpt4 book ai didi

c++ - 禁用特定宏的 clang-tidy 警告

转载 作者:行者123 更新时间:2023-12-02 10:19:02 24 4
gpt4 key购买 nike

我有一个实例化全局变量的宏。因此,clang-tidy 将正确发出“具有静态存储持续时间的 ... 初始化可能会引发无法捕获的异常”。

我可以在每个宏的基础上禁用此警告吗?最好在定义宏的地方内联。

也就是说,假设我有:

// header.h
#define UGLY_MACRO(X) SomeClass X(#X)

// source.cpp
UGLY_MACRO(SomeName); // clang-tidy complains here

我希望 clang-tidy 停止提示这个。

我想尽可能具体。
我只想为这个宏关闭这个警告。我不想在全局范围内关闭警告,然后有人可能会在代码中添加更多此类宏而不引起注意。
另外,我不想在使用宏的每个地方都添加一些东西(比如//NOLNT(...)),这太麻烦了。

还是我从错误的方向接近这个?我以前使用过 pc-lint,这是可能的。

最佳答案

我也有同样的问题。我找到了两种方法来做到这一点,遗憾的是,没有一种方法是完美的。
选项 1 通过使用 --line-filter clang-tidy 的命令行参数:

clang-tidy --line-filter='["name":"header.h"]' source.cpp
笔记:
  • 遗憾的是,这并不能选择性地仅对一个警告起作用,它会禁用所有警告。
  • 不像 --filter-regex ,这甚至适用于宏扩展。
  • 您可以更具体地在 header.h 中指定行号的范围您想禁用警告(请参阅 --line-filter 的帮助文本)

  • 选项 2 通过包装宏:
    #define UGLY_MACRO_NOLINT(...) UGLY_MACRO(__VA_ARGS__) //NOLINT(...)
    笔记:
  • 需要修改源代码才能使用 nolint 版本
  • 如果 UGLY_MACRO 不起作用是多线
  • 关于c++ - 禁用特定宏的 clang-tidy 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61031309/

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