【问题标题】:Ignore Xcode warnings when using Cocoapods使用 Cocoapods 时忽略 Xcode 警告
【发布时间】:2012-10-23 21:03:58
【问题描述】:

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

有没有办法忽略这些错误?修复它们无济于事,因为在每次“pod install”之后,更改都会被丢弃。

【问题讨论】:

    标签: iphone xcode warnings cocoapods


    【解决方案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

    【讨论】:

    • 我如何包含它?目前我使用 s.dependency 'Facebook-iOS-SDK' s.inhibit_all_warnings!我收到以下错误:未定义的方法`inhibit_all_warnings!对于#<:myapp>
    • 如何解决以下问题:我希望对某些 pod 隐藏警告,但不是对所有 pod。
    • @krausefx 抱歉,没有看到您的评论。为后代着想,您现在可以针对每个 pod 禁用警告,如 Podfile 文档中所示:docs.cocoapods.org/podfile.html#inhibit_all_warnings_bang
    • @JohanKarlsson 删除指令并运行 pod install 以重新生成 Pods.xcodeproj。
    • 请注意,这并不排除在Analyze 阶段出现警告(问题)。我在另一个答案中对此提出了一些建议。
    【解决方案2】:

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

    如果您对工作区执行此操作,它也会隐藏您的所有项目警告。

    【讨论】:

    • 这是一个更简单的解决方案,在 pods 项目上设置它,它只会禁用与 pod 相关的警告,而不是您的项目警告。无需重新执行 pod install。
    • 不推荐!下一个 pod install 会覆盖此设置,所以最好在 Podfile 中设置它!
    • 就我个人而言,我确实喜欢这样,所以我记得每次更新都快速查看所有警告并确保它们可以忽略不计。
    • 对于本地开发 pod 的 podspec 中的依赖关系如何?
    • 您也可以将 Swift Compiler - Warnings Policies > Suppress Warnings 设置为 Yes... 使用 inhibit_all_warnings 我仍然在 Pods 中收到 'characters' is deprecated: Please use String or Substring directly 警告。此设置删除了此警告。
    【解决方案3】:

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

    【讨论】:

    • 我还必须为 Swift Pods 添加以下内容:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
    【解决方案4】:

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

    对我有用的(除了接受的答案)是:

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

    • 选择实际的Pod- 目标并点击Build Settings

    • 用短语compiler flags过滤

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

      不过,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 目标上设置此设置将不起作用。我不知道为什么,但你必须为每个实际的 Pod- 目标设置它。

    您还可以在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 warnings 更改为YES

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

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

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

    【讨论】:

    • 注意: 不幸的是,如果您从存储库中排除 Pod 和 .xcworkspace - 使用您的 .gitignore,这对 CI 没有帮助。
    • @RileyE 很有趣 - 是否有充分的理由将那些从回购中排除?如果是这样,此页面上的其他技术是否适合您? (我还是 iOS 开发的新手,所以很想了解更多信息)
    • There is a large divide on whether to include it or not。我不喜欢包含它,因为我更喜欢确保我的 podfile 始终准确,并且我发现不同用户的 Podfile.lock 和 .xcworkspaces 之间存在一些冲突。这只是对具有强烈争议的利弊的用户的偏好。
    • @RileyE 感谢您提供的信息!那么,如果我们确实排除了 Pods/.xcworkspace,就没有解决问题的方法吗?
    • 很遗憾没有。这就是为什么我一直在 pod install 上争取更多的标志。
    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 2014-11-27
    • 1970-01-01
    • 2020-11-13
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多