Clang的-Wall和-Wextra中包含哪些警告?

What warnings are included in Clang's -Wall and -Wextra?

本文关键字:包含哪 警告 -Wextra -Wall Clang      更新时间:2023-10-16

我发现Clang的文档非常糟糕。我没有找到太多可用的Clang警告标志列表。我对C/c++警告特别感兴趣,但这是一个普遍的问题。

GCC在这里列出并描述了警告,还列出了-Wall和-Wextra中包含的内容:https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html Warning-Options

Clang的-Wall和-Wextra中包含哪些警告标志?

我可以浏览每个版本的Clang发布说明,看看每次都引入了哪些新的警告标志(例如http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html),但是是否有一个更简单的Clang警告列表和/或描述?这将非常有用。我需要知道什么是包括在-Wall和什么不是,所以我可以考虑打开那些不是。

(我知道- Clang的一切都存在-我可能不得不求助于使用它,只是明确禁用那些我不喜欢的?))

您可以查看源代码:

例如,

def : DiagGroup<"all", [Most, Parentheses, Switch]>;
// Warnings enabled by -pedantic.  This is magically filled in by TableGen.
def Pedantic : DiagGroup<"pedantic">;
// Aliases.
def : DiagGroup<"", [Extra]>;                   // -W = -Wextra

对于-Wall,查看Most, Parentheses, Switch。你可以找到:

def Most : DiagGroup<"most", [ 
....

在文件的更下方。类似地,对于extra:

def Extra : DiagGroup<"extra", [
    MissingFieldInitializers,
    IgnoredQualifiers,
    InitializerOverrides,
    SemiBeforeMethodBody,
    MissingMethodReturnType,
    SignCompare,
    UnusedParameter
  ]>;

Clang过去非常不擅长记录可用的内容。虽然从4.0.0版本开始,他们已经修复了这个问题。对于旧版本,可以尝试或查阅源代码。在Github上的编译器警告页面,您可以找到基于源代码的警告摘录。

因此,您可以在文档页面上找到最新标志的文档,以及在其发布页面(4.0.0)上找到特定版本的匹配文档。

Clang-cl有自己的警告标志,其映射可以在其文档

中找到。