【问题标题】:How to exclude single checks from clang-tidy file?如何从 clang-tidy 文件中排除单个检查?
【发布时间】:2021-08-11 15:45:30
【问题描述】:

我们来说说这个简单的例子:

#include <iostream>

int main(int argc, char *argv[])
{
  std::cout << "started " << argv[0] << " with " << argc << " params." << std::endl;
  return 0;
}

我们有一个最小的.clang-tidy 文件,如下所示:

Checks:
    '-*,
    cppcoreguidelines-*,
    -cppcoreguidelines-pro-bounds-pointer-arithmetic'

WarningsAsErrors:
    '*'

即使我收到以下警告:

src/main.cpp:5:30: error: do not use pointer arithmetic [cppcoreguidelines-pro-bounds-pointer-arithmetic,-warnings-as-errors]
  std::cout << "started " << argv[0] << " with " << argc << " params." << std::endl;
                             ^

我不想在我的代码中乱用NOLINT,也不想仅仅因为clang-tidy而在CMakeLists.txt文件中添加一些额外的标志。

有没有一种干净的方法来屏蔽.clang-tidy 文件中的一些单一检查?

我在 Linux 的 6.0.0 版本中使用 gcc/g++ 和 clang-tidy。我知道How to disable a clang-tidy check? - 但它没有回答我的问题,而且重复的链接完全是错误的。

【问题讨论】:

  • 我也想知道,如果你想通了!将 clang-tidy 与 Meson 一起使用,并且添加内联检查不是一种选择。

标签: c++ clang-tidy


【解决方案1】:

就我而言,我认为问题与全局扩展顺序有关。最初,我的.clang-tidy 中的Checks 行看起来像这样:

Checks: 'clang-diagnostic-*,clang-analyzer-*,*'

我想禁用altera-unroll-loops 诊断。解决方法是在最后那个鬼鬼祟祟的 glob-all 之后添加它:

Checks: 'clang-diagnostic-*,clang-analyzer-*,*,-altera-unroll-loops'

最初,我将它放在* 之前,我认为这会导致它被覆盖。我也没有问题,它被分成多行,就像你上面所说的那样。

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 2020-04-08
    • 2020-06-28
    • 2019-10-01
    • 2016-02-18
    • 2017-01-05
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多