我在开发中使用clang-tidy作为一个“linter”工具。我开始将第三方软件集成到我的代码中,当我使用它们的头文件时:
-I/path/to/include
字符串
产生了大量的错误,我甚至还没有#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);
^
...
型
我编译我的程序使用:
/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>
型
看起来这些“clang-diagnostic-errors”不会停止编译,因为它会继续编译并正常运行。是否有一个标志来关闭/抑制这个错误?我不想看到它,因为我没有写这些头文件。
如果我去掉参数-I/path/to/include
,一切都编译得很好,没有错误。
3条答案
按热度按时间5lwkijsr1#
没有办法忽略 *
clang-diagnostic-error
**,因为它基本上是一个编译器错误。要让
clang-tidy
工作,clang
后端需要能够编译分析的代码,以生成AST(抽象语法树)。问题是你包含了一些不能被clang编译的头文件(我猜是MSVC的windows头文件)。
sh7euo9m2#
我不确定这是否会破坏以后的东西,所以只是在你自己的风险。我设法“解决”这个问题(因为它只是一个问题列表中有一个错误)在VSCode:
字符串
这使得clang-tidy告诉编译器只抛出一个错误并给予,所以clang-tidy将解析剩下的任何错误。
我知道这是针对VSCode的,但是这个参数可以在其他IDE中使用。
1wnzp6jl3#
尝试防止无限循环。我曾经遇到过这个问题,当我在SDL 2中运行一个窗口时,当我简单地将第二个条件与“|“,它工作了。我认为问题出在VS代码编译器上,它认为,循环是无限的。