【问题标题】:What warnings are included in Clang's -Wall and -Wextra?Clang 的 -Wall 和 -Wextra 中包含哪些警告?
【发布时间】:2014-09-14 06:15:23
【问题描述】:

我发现 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 存在 -Weverything - 我是否必须求助于使用它并明确禁用我不喜欢的那些?更多文档会使这更加理想。)

【问题讨论】:

  • 事实证明,依赖 Clang 的发行说明并不是很有用 - 来自llvm.org/releases/3.0/docs/ClangReleaseNotes.html:“添加了许多新警告来捕获常见的、容易出错的代码模式。”跨度>
  • 有一些有趣的讨论here,虽然有点老了。
  • 谢谢 - 这很有趣,虽然已经有几年的历史了,这在 Clang 开发时间中已经很多了。为了 GCC 兼容性,接受了一些警告标志,但没有实现(尽管我发现一些 GCC 标志不被接受很有趣!)。一些有趣的引述:“相反,我会鼓励每个人不要启用超出 -Wextra 的标志。” “[警告] 最终都应该迁移到适当的大桶标志 [-Wall 或 -Wextra] 中,或者从 Clang 中删除。”这就是当时的设计目标。 GCC 肯定不会尝试将所有有用的标志都集中到这样的存储桶中。

标签: c++ c clang compiler-warnings


【解决方案1】:

你可以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
  ]>;

【讨论】:

【解决方案2】:

Clang 过去不擅长记录可用的内容。 虽然从 4.0.0 版开始,他们已经修复了它。对于较旧的版本,可以尝试或查阅源代码。在the compiler-warnings page on Github,您可以找到基于源代码的警告摘录。

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

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

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 2011-01-01
    • 2021-07-22
    • 2020-08-19
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多