标签: clang-tidy

如何指定与 CMAKE_CXX_CLANG_TIDY 变量一起使用的其他参数

我正在尝试使用 make use of clang-tidycmake 的集成,我想传递这个-check论点。我尝试-DCMAKE_CXX_CLANG_TIDY="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*"在调用 cmake 时添加,但我的 makefile 命令最终看起来像:

/usr/local/Cellar/cmake/3.6.2/bin/cmake -E __run_iwyu --tidy="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*" --source=/Users/ellery/work/.....

换句话说,它似乎是 ; 分离的 args 没有被分开解析。我还尝试CXX_CLANG_TIDY使用相同的值直接在我的目标上设置目标属性,并且我得到了相同的行为。

有没有人clang-tidy通过 cmake成功调用了额外的参数?

cmake clang-static-analyzer clang-tidy

7
推荐指数
1
解决办法
4212
查看次数

什么是正确的 LLVM 标头保护样式?

在 clang tidy 中,检查[llvm-header-guard]查找 LLVM 样式的头保护,但我找不到任何正确的 LLVM 头保护样式的示例,特别是给定名称的结构,编码标准页面没有提到任何东西。

c++ include-guards llvm llvm-clang clang-tidy

7
推荐指数
1
解决办法
6570
查看次数

clang-tidy是否会使clang-check多余?

这两个工具似乎都有一些共同的目标,虽然clang-tidy文档对其功能非常明确,但是clang-check的有点稀疏.

如果我在运行相同的检查时只运行其中一个工具,那将是很好的.显然,clang-tidy有一些在clang-check中不存在的功能,所以问题是:

是否有针对clang-tidy的检查组合,包括clang-check -analyze?的所有功能?

clang clang-static-analyzer clang-tidy

7
推荐指数
1
解决办法
1487
查看次数

函数声明中参数的常量限定

我在头文件中有以下函数声明:

extern void flash(const char *message, const enum msg_type type);
Run Code Online (Sandbox Code Playgroud)

基本上,它采用两个参数并将相应的消息推送到全局消息队列中。由于不需要修改参数,因此我对它们进行了const限定。但是,CLion的静态代码分析器对此发出了警告:

Clang-Tidy:参数'type'在函数声明中是const限定的;参数的const限定仅对函数定义有影响

在此处输入图片说明

这是我的问题:

  1. 我用const限定了这两个参数,为什么只有后者会触发警告?
  2. 真的不好吗?我知道这没有效果,但是从技术上讲,const限定词也没有效果。
  3. 我可以摆脱这个警告吗?

c const declaration clion clang-tidy

7
推荐指数
1
解决办法
2374
查看次数

多行的 Clang-Tidy `NOLINT`?

我正在处理一个 C++ 项目,该项目有一些自动生成的大段代码,我不想被 linted。是否有类似于//NOLINT注释的东西可以应用于多行?像下面这样:

// BEGINNOLINT
bad-code;
// ENDNOLINT
Run Code Online (Sandbox Code Playgroud)

我在网上能找到的只是一个应该实施建议。有没有办法避免// NOLINT在每一行的末尾写?

clang clang-tidy

7
推荐指数
2
解决办法
5041
查看次数

从 clang-tidy 中排除特定标题

我有几个项目,我想解析很多标题,但有几个标题我不想用 clang-tidy 解析

我的文件夹层次结构如下

一种\

    B\

        C\
           coco.h
        D\
    E\
Run Code Online (Sandbox Code Playgroud)

我的项目在 C 和 D 文件夹中,我希望它们解析 B 下的所有标题,所以我的解决方案是 HeaderFilterRegex: 'B/*' 我想包含很多标题,所以我无法命名每个标题。

但是在 C 和 D 文件夹中有几个我想排除的标题(例如 coco.h)。

我尝试将 NO_LINT 放在包含 coco.h 的 cpp 中,但没有帮助,

我怎样才能做到这一点?

谢谢

clang-tidy

7
推荐指数
2
解决办法
5615
查看次数

Clang-Tidy 关于未能初始化匿名联合的所有字段的警告是误报吗?

我在 C++ 项目中有如下代码:

struct Foo {
  union {
    double d = 1.0;
    char c;
  };
};
Run Code Online (Sandbox Code Playgroud)

当我通过 Clang-Tidy 运行它时,它警告我构造函数没有初始化字段c。但是,当我编译代码时,我没有看到有关此联合初始化的任何警告。

这段代码是否潜伏着潜在的问题?还是来自 Clang-Tidy 的警告是可以安全忽略的误报?

c++ clang-tidy

7
推荐指数
1
解决办法
763
查看次数

clang-tidy:如何抑制 C 头文件中的 C++ 警告?

我有一个包含在 C 和 C++ 源文件中的 .h 文件。它的内容被包裹在

#ifdef __cplusplus
extern "C" {
#endif

...

#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)

然而,当我将它包含在 .cpp 文件中时,clang-tidy 会发出特定于 C++ 的消息,例如

  • 警告:包括“stdbool.h”在 C++ 中无效;考虑删除它 [hicpp-deprecated-headers,modernize-deprecated-headers]
  • 警告:包含已弃用的 C++ 头文件“stdlib.h”;考虑使用“cstdlib”代替 [hicpp-deprecated-headers,modernize-deprecated-headers]
  • 警告:使用 'using' 而不是 'typedef' [modernize-use-using]

我喜欢这些检查,我想让它们在我的 clang-tidy 配置中保持活动状态,但当然仅适用于 C++ 代码。我无法更改头文件以使用using代替typedef<cstdlib>代替,<stdlib.h>因为它也包含在 C 源中,因此extern "C".

有什么方法可以告诉 clang-tidy 将代码extern "C"视为 C 而不是 C++,即使包含在 .cpp 文件中?

clang-tidy 版本是 12.0.0。

c c++ static-analysis clang-tidy

7
推荐指数
2
解决办法
269
查看次数

Clang Tidy 配置格式

目前我正在我的项目中使用 Clang Format 实用程序。为了在我的团队中共享其设置,我将 .clang 格式的配置文件放在项目文件夹的根目录中,现在 IDE 在处理项目时会自动加载它。同样,我想使用 Clang Tidy 实用程序。但是,与 Clang Format 不同,我找不到配置文件格式的描述或创建它的实用程序。我还需要 IDE 自动加载这些设置并在自动格式化时考虑它们,因此我不可能使用向其传递必要参数的脚本来运行该实用程序。有办法实现我所需要的吗?

c++ clang-tidy

7
推荐指数
1
解决办法
7202
查看次数

clang-tidy:从分析中排除特定目录

clang-tidy我正在一个具有以下三个文件夹的中型项目中使用:

srcA
srcB
external
Run Code Online (Sandbox Code Playgroud)

我试图external从分析中排除文件夹,但没有成功。我正在使用的命令是:

clang-tidy $SRC -p build/ --extra-arg=-ferror-limit=0'
Run Code Online (Sandbox Code Playgroud)

SRC=srcA/file.cpp srcA/fileN.cpp srcB/file.cpp srcB/fileN.cpp ...
Run Code Online (Sandbox Code Playgroud)

build/以及由生成的编译数据库cmake。请注意,SRC 不包含任何external文件,仅包含srcAsrcB(.cpp 和 .hpp)。此外,显然,srcAsrcB下的一些文件正在使用external.

80% 的错误来自clang-tidy文件external/,我无法修复这些错误,因为有第三方库。

下面是.clang-tidy我正在使用的文件:

Checks: '-*,readability-identifier-naming'
WarningsAsErrors: "*"
CheckOptions:
  - { key: readability-identifier-naming.ClassCase, value: CamelCase }
  - { key: readability-identifier-naming.ClassMethodCase, value: camelBack }
  - { key: readability-identifier-naming.VariableCase, value: camelBack }
  - { key: readability-identifier-naming.PrivateMemberPrefix, value: m_ } …
Run Code Online (Sandbox Code Playgroud)

c++ cmake linter clang-tidy

7
推荐指数
2
解决办法
7430
查看次数