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

时间:2014-07-23 07:18:32

标签: 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的警告?< / strong>这将非常有用。我需要知道-Wall包含哪些内容,哪些不包含,所以我可以考虑启用那些不包含的内容。

(我知道 - Clang的存在 - 我可能不得不求助于使用它而只是明确禁用我不喜欢的那些吗?更多文档会使这更理想。)

2 个答案:

答案 0 :(得分:10)

你可以check the source code

例如,

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,请查看最多,括号,切换。你可以找到:

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

进一步向下文件。同样,额外的:

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

答案 1 :(得分:3)

Clang过去在记录可用内容时非常糟糕。 虽然从4.0.0版本开始,但它们已经修复了它。对于旧版本,可以尝试或查阅源代码。在the compiler-warnings page on Github,您可以根据源代码找到警告的摘录。

因此,您可以在the documentation pages找到有关最新标记的文档,以及release pages (4.0.0)上特定版本的匹配文档。

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

上找到