2012-11-03 85 views
271

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

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

回答

651

添加到您的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

+2

我该如何加入?目前我使用的s.dependency'Facebook-iOS-SDK' s.inhibit_all_warnings! ,我得到以下错误: 未定义的方法'inhibit_all_warnings!' for# KrauseFx

+0

我已经扩展了一些示例以使意图更清晰。 – alloy

+13

我该如何解决以下问题:我希望警告对于某些吊舱是隐藏的,但不是所有警报都隐藏的。 – KrauseFx

12

你可以搜索你的项目的工作空间,在PodBundle的Xcode的构建设置“inhibit_all_warnings”的值设置为“是“,它会隐藏您的所有Pod文件警告。

如果你在工作空间中使用它,它也会隐藏你的所有项目。

+0

这是一个更简单的解决方案,将其设置在pod项目上,仅禁用与pod相关的警告,而不是您的项目警告。无需重新执行Pod安装。 –

+10

不推荐!随着未来'荚install'该设置将被覆盖,所以最好取在Podfile! –

+4

个人而言,我不喜欢这样,这样每次更新我记得我们快速浏览一下,所有的警告,并确保它们是不容忽视的。 –

1

虽然this other answer将在构建阶段删除警告,但似乎并未完全修复Analyze阶段(这导致我们的CI构建仍然有问题)。

什么工作对我来说(除了公认的答案)是:

  • 点击从项目导航
  • Pods项目选择的实际Pod-目标,并点击Build Settings
  • 带式压滤机短语compiler flags
  • 添加一个新的Other C Flags与值-w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(或您需要禁用的任何分析仪) - this answer提供了完整的标志列表来尝试 - 请upvote它!

    但是,Xcode 6.3.1中的clang版本似乎没有包含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目标设置,这将不起作用。我不知道为什么,但你必须为每个实际的目标设定它。

您还可以在per-file basis上设置编译器标志(-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,尽管我期望它可能与在方案的构建设置中选中的“Find implicit dependencies”有关。不过,如果没有选中,那么应用程序需要发生其他事情才能链接到豆荚。

+1

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

+0

@RileyE有趣 - 有没有很好的理由从回购中排除这些人?如果是这样,这个页面上的其他技术是否适合你? (我仍然是一个iOS开发的相对新手,所以很想了解更多) – Jedidja

+0

[是否包含它有一个很大的分歧](http://stackoverflow.com/questions/9446644/what-goes-进入 - 您 - gitignore-IF-您选择 - 使用 - 的CocoaPods)。我不喜欢包含它,因为我更愿意确保我的podfile始终准确,并且发现不同用户的Podfile.lock和.xcworkspaces之间存在一些冲突。这只是对具有强烈争议的优点和缺点的用户的偏好。 – RileyE