首页 文章

使用Cocoapods时忽略Xcode警告

提问于
浏览
334

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

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

3 回答

  • 3

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

    如果你对你的工作空间这样做,它也会隐藏你的所有项目 .

  • 806

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

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

    • 单击Project Navigator中的 Pods 项目

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

    • 过滤短语 compiler flags

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

    但是,Xcode 6.3.1中的 clang 版本似乎不包含 insecureAPI ,因此您可以从该列表中删除它 . "current"完整列表是 -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

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

    转到产品>方案>管理方案窗口,单击列表中的每个Pod- *,然后单击编辑按钮 . 单击左侧列表中的Build,然后取消选中Pod目标右侧的Analyze .

    我仍然感到困惑,为什么我不能完全禁用Pods被分析,虽然我希望它可能与方案的构建设置中选中的“查找隐式依赖项”有关 . 但是,如果未经检查,则看起来应用程序需要将其他内容链接到pod .

  • 22

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

相关问题