使用Cocoapods时忽略Xcode警告


417

在最新的Xcode更新之后,我使用了很多第三方库,其中包含许多警告。(例如Facebook SDK pod)现在所有这些警告都显示在Xcode上我想看到自己的警告或错误的地方。

有什么办法可以忽略这些错误?修复它们无济于事,因为在每次“ pod安装”之后,所做的更改都将被丢弃。

Answers:


967

添加到您的Podfile:

platform :ios

# ignore all warnings from all pods
inhibit_all_warnings!

# ignore warnings from a specific pod
pod 'FBSDKCoreKit', :inhibit_warnings => true

然后执行: pod install


3
如何包括在内?目前,我使用s.dependency'Facebook-iOS-SDK's.inhibit_all_warnings!我得到以下错误:未定义的方法“ inhibit_all_warnings!” for#<Pod :: MyApp(1.0)的规范>
KrauseFx 2012年

22
如何解决以下问题:我希望对某些吊舱而不是对所有吊舱隐藏警告。
KrauseFx 2012年

3
@krausefx对不起,没有看到您的评论。为了后代的缘故,您现在可以按Podfile docs中所示按每个容器禁用警告:docs.cocoapods.org/podfile.html#inhibit_all_warnings_bang
合金

2
@JohanKarlsson删除指令并运行pod install以重新生成Pods.xcodeproj。
合金

1
请注意,这并不排除在此Analyze阶段出现警告(问题)。为此,我提供了一些建议。
耶迪贾2015年

28

您可以在项目工作空间的PodBundle的xcode构建设置中搜索“ inhibit_all_warnings”,将该值设置为“ YES”,它将隐藏所有Pod文件警告。

如果在工作空间中执行此操作,它将同时隐藏所有项目。


这是一个更简单的解决方案,请在pods项目上进行设置,并且仅禁用与pod相关的警告,而不是项目警告。无需重新执行Pod安装。
Andres Canella 2014年

28
不建议!接下来,pod install此设置将被覆盖,因此最好在Podfile中进行设置!
electronix384128

4
我个人很喜欢这样做,因此我记得每次更新都会快速浏览所有警告并确保它们可以忽略。
Andres Canella 2015年

本地开发pod的podspec中的依赖关系又如何呢?
Ari Braginsky

您也可以将Swift Compiler - Warnings Policies> 设置Suppress WarningsYes...,inhibit_all_warnings'characters' is deprecated: Please use String or Substring directly 在Pod中仍然收到警告。此设置删除了此警告。
Tiois

6

尽管此其他答案将在构建阶段消除警告,但它似乎并未完全解决该Analyze阶段(这导致我们的CI构建仍然存在问题)。

除了可接受的答案外,对我有用的是:

  • Pods在项目浏览器中单击项目
  • 选择实际Pod-目标并单击Build Settings
  • 用短语过滤 compiler flags
  • 添加一个Other C Flags带有值的新值-w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(或您需要禁用的任何分析仪)- 此答案提供了尝试的标志的完整列表-请对其进行投票!

    clang但是,似乎未包含Xcode 6.3.1中的版本,insecureAPI因此您可以从该列表中删除它。“当前”的完整列表是-w -Xanalyzer -analyzer-disable-checker -Xanalyzer alpha -Xanalyzer -analyzer-disable-checker -Xanalyzer core -Xanalyzer -analyzer-disable-checker -Xanalyzer cplusplus -Xanalyzer -analyzer-disable-checker -Xanalyzer deadcode -Xanalyzer -analyzer-disable-checker -Xanalyzer debug -Xanalyzer -analyzer-disable-checker -Xanalyzer llvm -Xanalyzer -analyzer-disable-checker -Xanalyzer osx -Xanalyzer -analyzer-disable-checker -Xanalyzer security -Xanalyzer -analyzer-disable-checker -Xanalyzer unix

请注意,在“ Pods项目”或“ Pods目标” 上设置此功能将无效。我不确定为什么,但是您必须为每个实际Pod-目标设置它。

您还可以按文件设置编译器标志(-w -Xanalyzer -analyzer-disable-checker -Xanalyzer core等)。

我还尝试了几种其他方法(除上述方法外,可能需要或可能不需要)。它们是在Pods项目本身上执行的。


[1]

  • 用短语过滤 analyzer
  • 确保Analyze During 'Build'设置为NO
  • 将所有设置更改为NO(包括Improper Memory Management

[2]

  • 用短语过滤 warnings
  • 更改inhibit all warningsYES

由于某种原因,即使禁用Analyze该方案中的步骤似乎也不起作用。

转到Product > Scheme > Manage Schemes窗口,Pod-*从列表中单击每个,然后单击Edit按钮。单击Build左侧列表,然后取消选中 目标Analyze右侧Pod

我仍然对为什么不能完全禁止分析Pod感到困惑,尽管我希望它可能与方案的构建设置中选中的“查找隐式依赖项”有关。但是,如果未选中该选项,则似乎需要进行其他操作才能使该应用链接到Pod。


1
注意:不幸的是,如果您从存储库中排除Pods和.xcworkspace-使用.gitignore,则这对CI没有帮助。
RileyE 2015年

@RileyE有趣-是否有充分的理由将这些从回购交易中排除?如果是这样,此页面上的其他技术对您有用吗?(我仍然是iOS开发的相对新手,因此非常想了解更多信息)
Jedidja 2015年

是否包含它有很大的分歧。我不喜欢包含它,因为我更喜欢确保我的podfile总是准确的,并且我发现不同用户的Podfile.lock和.xcworkspaces之间存在一些冲突。对于具有明显争议的优缺点的用户而言,这只是一种偏爱。
RileyE

@RileyE感谢您提供信息!因此,如果我们确实排除了Pods / .xcworkspace,则没有解决问题的方法吗?
耶迪贾2015年

不幸的是没有。这就是为什么我一直在要求添加其他标志的原因pod install
RileyE

5

步骤:1将以下脚本放入Podfile中。

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['GCC_WARN_INHIBIT_ALL_WARNINGS'] = "YES"
        end
    end
end

第2步pod install


2
我还必须为Swift Pods添加以下内容:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
pstoppani
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.