忽略由第三方标头引起的[clang-diagnostic-error] clang-tidy

use*_*353 9 c++ header-files linter clang-tidy

我正在使用clang-tidy作为开发中的“线性”工具。我开始将第3方软件集成到我的代码中,并在使用它们包含头文件时使用:

-I/path/to/include 
Run Code Online (Sandbox Code Playgroud)

产生了大量错误,我什#include至还没有标题。

error: too many errors emitted, stopping now [clang-diagnostic-error]
...
/path/to/include/wchar.h:81:1: error: unknown type name 'wint_t' [clang-diagnostic-error]
wint_t fgetwc(FILE *__stream);
^
/path/to/include/wchar.h:81:15: error: unknown type name 'FILE' [clang-diagnostic-error]
wint_t fgetwc(FILE *__stream);
              ^
...
Run Code Online (Sandbox Code Playgroud)

我使用以下命令编译程序:

/usr/bin/clang-tidy-4.0 /path/to/main.cpp -checks=-*,cppcoreguidelines* -- -lang-c++ -I/path/to/include -std=gnu++11 -Wall -Werror -O0 -g -D<define variables>
Run Code Online (Sandbox Code Playgroud)

似乎这些“ lang诊”错误不会停止编译,因为它会继续编译并运行良好。是否有一个标志可以关闭/抑制该错误?我不想看到它,因为我没有写这些头文件。

如果我摆脱了争论,-I/path/to/include一切都会顺利进行,没有错误。

pab*_*285 6

无法忽略, clang-diagnostic-error因为它基本上是一个编译器错误。

为了clang-tidy工作,分析的代码需要由后端编译clang以生成 AST(抽象语法树)。

问题是您包含无法由 clang 编译的标头(我猜是用于 MSVC 的 Windows 标头)。