使用 Cocoapods 时忽略 Xcode 警告

Ignore Xcode warnings when using Cocoapods

提问人:KrauseFx 提问时间:11/3/2012 更新时间:7/12/2021 访问量:93179

问:

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

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

iPhone Xcode 警告 Cocoapods

评论


答:

1101赞 alloy 11/3/2012 #1

添加到你的 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赞 KrauseFx 11/4/2012
我该如何包括它?目前我使用 s.dependency 'Facebook-iOS-SDK' s.inhibit_all_warnings!我收到以下错误:MyApp(1.0) 的 #<Pod::Specification 的未定义方法“inhibit_all_warnings!”>
26赞 KrauseFx 11/5/2012
如何解决以下问题:我希望对某些 pod 隐藏警告,但不要对所有 pod 隐藏警告。
6赞 alloy 7/11/2013
@krausefx 对不起,没有看到您的评论。为了子孙后代的缘故,您现在可以基于每个 Pod 禁用警告,如 Podfile 文档中所示: docs.cocoapods.org/podfile.html#inhibit_all_warnings_bang
2赞 alloy 3/17/2014
@JohanKarlsson 删除指令并运行以重新生成 Pod.xcodeproj。pod install
1赞 Jedidja 5/15/2015
请注意,这并不排除在阶段中出现警告(问题)。我在不同的答案中提供了一些建议。Analyze
39赞 Teja Swaroop 6/3/2014 #2

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

如果你对你的工作区这样做,它也会隐藏你的所有项目警告。

评论

0赞 Andres Canella 10/25/2014
这是一个更简单的解决方案,在 pods 项目上设置它,它只会禁用与 pod 相关的警告,而不是您的项目警告。无需重新执行 pod 安装。
36赞 electronix384128 1/12/2015
不推荐!接下来,这个设置被覆盖了,所以最好在 Podfile 中设置它!pod install
4赞 Andres Canella 4/29/2015
就我个人而言,我确实喜欢这样,因此我记得每次更新都要快速浏览所有警告并确保它们可以忽略不计。
0赞 Ari Braginsky 9/2/2015
对于本地开发 Pod 的 PodSpec 中的依赖项呢?
1赞 Tiois 12/15/2017
您也可以将>设置为...我在 Pods 中仍然有警告。此设置删除了此警告。Swift Compiler - Warnings PoliciesSuppress WarningsYesinhibit_all_warnings'characters' is deprecated: Please use String or Substring directly
8赞 Jedidja 5/14/2015 #3

尽管这个另一个答案将在构建阶段删除警告,但它似乎并没有完全修复该阶段(这导致我们的 CI 构建仍然存在问题)。Analyze

对我有用的(除了公认的答案之外)是:

  • 单击项目导航器中的项目Pods

  • 选择实际目标,然后单击Pod-Build Settings

  • 使用短语进行筛选compiler flags

  • 添加一个新的值(或您需要禁用的任何分析器) - 此答案提供了要尝试的完整标志列表 - 请为它投赞成票!Other C Flags-w -Xanalyzer -analyzer-disable-checker -Xanalyzer core

    但是,Xcode 6.3.1 中的版本似乎不包括,因此您可以将其从该列表中删除。“当前”完整列表是clanginsecureAPI-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

请注意,在“项目”或“目标”上设置此项将不起作用。我不知道为什么,但你必须为每个实际目标设置它。PodsPodsPod-

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

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


[1]

  • 使用短语进行筛选analyzer
  • 确保设置为 。Analyze During 'Build'NO
  • 将所有设置更改为(包括NOImproper Memory Management)

[2]

  • 使用短语进行筛选warnings
  • 更改为inhibit all warningsYES

出于某种原因,即使禁用方案中的“分析”步骤似乎也不起作用。

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

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

评论

1赞 RileyE 5/15/2015
注意:不幸的是,如果你从存储库中排除 Pod 和 .xcworkspace - 使用 .gitignore,这对 CI 没有帮助。
0赞 Jedidja 5/15/2015
@RileyE有趣 - 是否有充分的理由将这些从存储库中排除?如果是这样,此页面上的其他技术是否适合您?(我仍然是 iOS 开发的新手,所以很想了解更多)
0赞 RileyE 5/16/2015
关于是否将其包括在内,存在很大分歧。我不喜欢包含它,因为我更喜欢确保我的 podfile 始终准确,并且我发现不同用户的 Podfile.lock 和 .xcworkspaces 之间存在一些冲突。这只是对利弊有争议的用户的偏好。
0赞 Jedidja 5/16/2015
@RileyE感谢您提供的信息!因此,如果我们确实排除了 Pods/.xcworkspace,那么问题就没有解决方法了吗?
0赞 RileyE 5/19/2015
很遗憾没有。这就是为什么我一直在推动额外的标志。pod install
21赞 Toseef Khilji 5/22/2019 #4

步骤: 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

评论

7赞 pstoppani 9/20/2019
我还必须为 Swift Pod 添加以下内容:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"