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

Jet*_*ype 21 c c++ clang compiler-warnings

我发现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来说存在一切 - 我可能不得不求助于使用它而只是明确禁用我不喜欢的那些吗?更多文档会使这更理想.)

per*_*eal 10

您可以查看源代码:

例如,

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
Run Code Online (Sandbox Code Playgroud)

对于-Wall期待在最,括号开关.你可以找到:

def Most : DiagGroup<"most", [ 
....
Run Code Online (Sandbox Code Playgroud)

进一步下来的文件.同样,额外的:

def Extra : DiagGroup<"extra", [
    MissingFieldInitializers,
    IgnoredQualifiers,
    InitializerOverrides,
    SemiBeforeMethodBody,
    MissingMethodReturnType,
    SignCompare,
    UnusedParameter
  ]>;
Run Code Online (Sandbox Code Playgroud)


JVA*_*pen 6

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

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

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