使用LLVM/Clang忽略特定文件中的所有警告

bob*_*age 68 xcode clang compiler-warnings

我的iOS项目中有一些文件有一些警告,我想忽略这些警告.我不想在整个项目中禁用警告(知道如何做),只是一些特定的文件.那么,有没有办法完全忽略特定文件中的所有警告?

我在Xcode 4.2上使用LLVM 3.0和Clang.

kch*_*ood 93

我继承了一个包含大量320个代码的项目,并且该代码库向我抛出了几个警告和静态分析器错误,我没有兴趣修复,因为我将在不久的将来从项目中删除该代码.

您可以通过包含以下编译器标志来禁用特定文件的静态分析器警告:

-Xanalyzer -analyzer-disable-all-checks
Run Code Online (Sandbox Code Playgroud)

您可以将此与-w结合使用以禁用该文件的警告.这使我能够推进新的开发,而不必被代码库产生的大约30个警告所困扰.

使用上面的说明:使用Xcode更改文件的构建标志:

  1. 选择目标
  2. 选择构建阶段
  3. 找到该文件以修改"编译源"阶段中的参数
  4. 双击其"编译器标志"单元格进行编辑
  5. 添加"-w -Xanalyzer -analyzer-disable-all-checks"来抑制警告和铿锵警告

  • 较新版本的clang(即iOS6中的4.x)似乎已经选择了-Xclang -analyzer-disable-checker (3认同)
  • -Xanalyzer表单仍然适用于我新安装的XCode(版本4.5.1,IOS6).另一种形式不起作用. (3认同)

jus*_*tin 63

如果你只是使用clang,那么你应该对你维护的源使用pragma语法(假设不可能通过适当地改变程序来删除警告).

这是语法:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmultichar"

char b = 'df'; // no warning.

#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)

如果这些程序是您无法更改和不维护的,则应指定要对文件禁用的警告,而不是全部.要禁用所有,您可以添加每个文件参数-w.源更改,并且某些警告(或不应用)适用于不同的构建设置.clang的消息可以告诉你什么标志等于生成的警告.

要使用Xcode来改变文件的构建标志:

  • 选择目标
  • 选择构建阶段
  • 找到该文件以修改"编译源"阶段中的参数
  • 双击其"编译器标志"单元格进行编辑


Rob*_*ert 21

在贾斯汀的回答的帮助下,这就是你的做法

1.找到警告的名称.

在我的情况下它 conversion

在此输入图像描述

2.添加每个文件编译器标志构建阶段

使用过滤器在编译源中查找文件的名称,-Wno-[error name]例如,键入-Wno-conversion

在此输入图像描述