ChatGPT解决这个技术问题 Extra ChatGPT

使用 Cocoapods 时忽略 Xcode 警告

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

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


K
King-Wizard

添加到您的 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!对于#
如何解决以下问题:我希望对某些 pod 隐藏警告,但不是对所有 pod。
@krausefx 抱歉,没有看到您的评论。为后代着想,您现在可以针对每个 pod 禁用警告,如 Podfile 文档中所示:docs.cocoapods.org/podfile.html#inhibit_all_warnings_bang
@JohanKarlsson 删除指令并运行 pod install 以重新生成 Pods.xcodeproj。
请注意,这并不排除在 Analyze 阶段出现警告(问题)。我在不同的答案中对此提出了一些建议。
a
auspicious99

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

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


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

步骤: 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 Pod 添加以下内容:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
C
Community

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

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

在 Project Navigator 中单击 Pods 项目

选择实际的 Pod-Target 并点击 Build Settings

使用短语编译器标志过滤

添加一个新的 Other C 标志,其值为 -w -Xanalyzer -analyzer-disable-checker -Xanalyzer 核心(或您需要禁用的任何分析器)-此答案提供了要尝试的标志的完整列表-请投票!不过,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 死码 -Xanalyzer -analyzer-disable-checker -Xanalyzer 调试 -Xanalyzer -analyzer-disable-checker -Xanalyzer llvm -Xanalyzer -analyzer-disable-checker -Xanalyzer osx -Xanalyzer -analyzer-disable-checker -Xanalyzer 安全性 -Xanalyzer -分析器禁用检查器-Xanalyzer unix

请注意,在 Pods 项目或 Pods 目标上设置此项将不起作用。我不确定为什么,但您必须为每个实际的 Pod- 目标设置它。

您还可以在 per-file basis 上设置编译器标志(-w -Xanalyzer -analyzer-disable-checker -Xanalyzer core 等)。

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

[1]

使用短语分析器进行过滤

确保在“构建”期间分析设置为否。

将所有设置更改为 NO(包括不正确的内存管理)

[2]

使用短语警告过滤

将禁止所有警告更改为是

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

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

我仍然对为什么我不能完全禁用 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 上的其他标志。