我正在尝试使用 make use of clang-tidy与cmake 的集成,我想传递这个-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成功调用了额外的参数?
在 clang tidy 中,检查[llvm-header-guard]查找 LLVM 样式的头保护,但我找不到任何正确的 LLVM 头保护样式的示例,特别是给定名称的结构,编码标准页面没有提到任何东西。
这两个工具似乎都有一些共同的目标,虽然clang-tidy的文档对其功能非常明确,但是clang-check的有点稀疏.
如果我在运行相同的检查时只运行其中一个工具,那将是很好的.显然,clang-tidy有一些在clang-check中不存在的功能,所以问题是:
是否有针对clang-tidy的检查组合,包括clang-check -analyze?的所有功能?
我在头文件中有以下函数声明:
extern void flash(const char *message, const enum msg_type type);
Run Code Online (Sandbox Code Playgroud)
基本上,它采用两个参数并将相应的消息推送到全局消息队列中。由于不需要修改参数,因此我对它们进行了const限定。但是,CLion的静态代码分析器对此发出了警告:
Clang-Tidy:参数'type'在函数声明中是const限定的;参数的const限定仅对函数定义有影响
这是我的问题:
const限定词也没有效果。我正在处理一个 C++ 项目,该项目有一些自动生成的大段代码,我不想被 linted。是否有类似于//NOLINT注释的东西可以应用于多行?像下面这样:
// BEGINNOLINT
bad-code;
// ENDNOLINT
Run Code Online (Sandbox Code Playgroud)
我有几个项目,我想解析很多标题,但有几个标题我不想用 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 中,但没有帮助,
我怎样才能做到这一点?
谢谢
我在 C++ 项目中有如下代码:
struct Foo {
union {
double d = 1.0;
char c;
};
};
Run Code Online (Sandbox Code Playgroud)
当我通过 Clang-Tidy 运行它时,它警告我构造函数没有初始化字段c。但是,当我编译代码时,我没有看到有关此联合初始化的任何警告。
这段代码是否潜伏着潜在的问题?还是来自 Clang-Tidy 的警告是可以安全忽略的误报?
我有一个包含在 C 和 C++ 源文件中的 .h 文件。它的内容被包裹在
#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)
然而,当我将它包含在 .cpp 文件中时,clang-tidy 会发出特定于 C++ 的消息,例如
我喜欢这些检查,我想让它们在我的 clang-tidy 配置中保持活动状态,但当然仅适用于 C++ 代码。我无法更改头文件以使用using代替typedef或<cstdlib>代替,<stdlib.h>因为它也包含在 C 源中,因此extern "C".
有什么方法可以告诉 clang-tidy 将代码extern "C"视为 C 而不是 C++,即使包含在 .cpp 文件中?
clang-tidy 版本是 12.0.0。
目前我正在我的项目中使用 Clang Format 实用程序。为了在我的团队中共享其设置,我将 .clang 格式的配置文件放在项目文件夹的根目录中,现在 IDE 在处理项目时会自动加载它。同样,我想使用 Clang Tidy 实用程序。但是,与 Clang Format 不同,我找不到配置文件格式的描述或创建它的实用程序。我还需要 IDE 自动加载这些设置并在自动格式化时考虑它们,因此我不可能使用向其传递必要参数的脚本来运行该实用程序。有办法实现我所需要的吗?
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文件,仅包含srcA和srcB(.cpp 和 .hpp)。此外,显然,srcA和srcB下的一些文件正在使用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) clang-tidy ×10
c++ ×5
c ×2
clang ×2
cmake ×2
clion ×1
const ×1
declaration ×1
linter ×1
llvm ×1
llvm-clang ×1