Ignorieren Sie Xcode-Warnungen, wenn Sie Cocoapods verwenden


417

Ich verwende ziemlich viele Bibliotheken von Drittanbietern, die nach den letzten Xcode-Updates viele Warnungen enthalten. (zum Beispiel der Facebook SDK-Pod) Jetzt werden alle diese Warnungen in meinem Xcode an der Stelle angezeigt, an der ich meine eigenen Warnungen oder Fehler sehen möchte.

Gibt es eine Möglichkeit, diese Fehler zu ignorieren? Das Beheben hilft nicht, da die Änderungen nach jeder "Pod-Installation" verworfen werden.

Antworten:


967

Zu Ihrem Podfile hinzufügen:

platform :ios

# ignore all warnings from all pods
inhibit_all_warnings!

# ignore warnings from a specific pod
pod 'FBSDKCoreKit', :inhibit_warnings => true

Führen Sie dann Folgendes aus: pod install


3
Wie schließe ich das ein? Derzeit verwende ich s.dependency 'Facebook-iOS-SDK' s.inhibit_all_warnings! und ich erhalte den folgenden Fehler: undefinierte Methode `inhibit_all_warnings! ' für # <Pod :: Spezifikation für MyApp (1.0)>
KrauseFx

22
Wie kann ich das folgende Problem lösen: Ich möchte, dass die Warnungen für einige Pods ausgeblendet werden, aber nicht für alle.
KrauseFx

3
@krausefx Sorry, habe deinen Kommentar nicht gesehen. Aus Gründen der Nachwelt können Sie Warnungen jetzt pro Pod deaktivieren, wie in den Podfile-Dokumenten gezeigt: docs.cocoapods.org/podfile.html#inhibit_all_warnings_bang
Legierung

2
@JohanKarlsson Entfernen Sie die Anweisung und führen Sie sie aus pod install, um Pods.xcodeproj neu zu generieren.
Legierung

1
Beachten Sie, dass dies nicht verhindert, dass Warnungen (Probleme) während der AnalyzePhase angezeigt werden. Ich habe einige Vorschläge dazu in einer anderen Antwort angeboten.
Jedidja

28

Sie können in den Xcode-Build-Einstellungen des PodBundle in Ihrem Projektarbeitsbereich nach "inhibit_all_warnings" suchen. Wenn Sie den Wert auf "YES" setzen, werden alle Warnungen Ihrer Pod-Datei ausgeblendet.

Wenn Sie es in Ihrem Arbeitsbereich tun, wird auch Ihr gesamtes Projekt ausgeblendet.


Dies ist eine einfachere Lösung. Stellen Sie dies für das Pods-Projekt ein und deaktivieren Sie nur podbezogene Warnungen, nicht Ihre Projektwarnungen. Die Pod-Installation muss nicht erneut ausgeführt werden.
Andres Canella

28
Nicht empfohlen! Beim nächsten Mal wird pod installdiese Einstellung überschrieben, also besser in Podfile!
Electronix384128

4
Persönlich mag ich das, damit jedes Update, an das ich mich erinnere, einen kurzen Blick auf alle Warnungen wirft und sicherstellt, dass sie vernachlässigbar sind.
Andres Canella

Was ist mit Abhängigkeiten in einer Podspec für einen lokalen Entwickler-Pod?
Ari Braginsky

Sie können auch Swift Compiler - Warnings Policies> Suppress Warningsauf Yes... setzen, mit dem inhibit_all_warningsich noch die 'characters' is deprecated: Please use String or Substring directly Warnung in Pods hatte. Diese Einstellung hat diese Warnung entfernt.
Tiois

6

Obwohl diese andere Antwort Warnungen während der Erstellungsphase entfernt, scheint sie das Problem nicht vollständig zu behebenAnalyze Phase (was dazu führte, dass unser CI-Build immer noch Probleme hatte).

Was für mich (zusätzlich zur akzeptierten Antwort) funktionierte, war:

  • Klicken Sie im PodsProjektnavigator auf das Projekt
  • Wählen Sie das tatsächliche Pod-Ziel und klicken Sie aufBuild Settings
  • Filtern Sie mit der Phrase compiler flags
  • Fügen Sie einen neuen Other C Flagsmit dem Wert -w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(oder den Analysatoren, die Sie deaktivieren müssen) hinzu - diese Antwort enthält die vollständige Liste der zu versuchenden Flags - bitte stimmen Sie ihr zu!

    Die Version clangin Xcode 6.3.1 scheint jedoch nicht enthalten zu sein, insecureAPIsodass Sie sie aus dieser Liste entfernen können. Die "aktuelle" vollständige Liste ist-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

Beachten Sie, dass das Festlegen dieser Option für das PodsProjekt oder das PodsZiel nicht funktioniert . Ich bin mir nicht sicher warum, aber Sie müssen es für jeden tatsächlichen einstellenPod- Ziel .

Sie können die Compiler-Flags ( -w -Xanalyzer -analyzer-disable-checker -Xanalyzer coreusw.) auch pro Datei festlegen .

Ich habe auch ein paar andere Methoden ausprobiert (die möglicherweise zusätzlich zu den oben genannten erforderlich sind oder nicht). Sie wurden am PodsProjekt selbst durchgeführt.


[1]

  • Filtern Sie mit der Phrase analyzer
  • Stellen Sie sicher, dass eingestellt Analyze During 'Build'istNO .
  • Ändern Sie alle Einstellungen in NO(einschließlich Improper Memory Management)

[2]

  • Filtern Sie mit der Phrase warnings
  • Wechseln Sie inhibit all warningszuYES

Aus irgendeinem Grund Analyzescheint es nicht zu funktionieren, den Schritt im Schema zu deaktivieren .

Gehen Sie zum Product > Scheme > Manage SchemesFenster, klicken Sie auf jedes Pod-*in der Liste und klicken Sie auf die EditSchaltfläche. Klicken Sie Buildauf die linke Liste und deaktivieren Sie Analyze auf der rechten Seite das PodZiel.

Ich bin immer noch verwirrt darüber, warum ich die Analyse der Pods nicht vollständig deaktivieren kann, obwohl ich davon ausgehe, dass dies möglicherweise mit den in den Build-Einstellungen des Schemas überprüften "Implizite Abhängigkeiten suchen" zu tun hat. Wenn dies nicht aktiviert ist, muss anscheinend etwas anderes passieren, damit die App eine Verknüpfung zu den Pods herstellt.


1
Hinweis: Leider hilft dies bei CI nicht, wenn Sie Pods und .xcworkspace mithilfe Ihres .gitignore aus Ihrem Repository ausschließen.
RileyE

@ RileyE interessant - gibt es einen guten Grund, diese von einem Repo auszuschließen? Wenn ja, funktioniert die andere Technik auf dieser Seite für Sie? (Ich bin immer noch ein relativer Neuling in der iOS-Entwicklung, also ziemlich neugierig, mehr zu erfahren)
Jedidja

Es gibt eine große Kluft darüber, ob es aufgenommen werden soll oder nicht . Ich mag es nicht, es einzuschließen, da ich lieber sicherstellen möchte, dass meine Poddatei immer korrekt ist und ich einige Konflikte zwischen Podfile.lock und .xcworkspaces verschiedener Benutzer gefunden habe. Es ist einfach eine Präferenz für Benutzer mit stark umstrittenen Vor- und Nachteilen.
RileyE

@ RileyE danke für die Information! Wenn wir also Pods / .xcworkspace ausgeschlossen haben, gibt es keine Problemumgehung für das Problem?
Jedidja

Leider nicht. Aus diesem Grund habe ich auf zusätzliche Flaggen gedrängt pod install.
RileyE

5

Schritt: 1 Fügen Sie das folgende Skript in Ihre Poddatei ein.

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

Schritt 2. Tun pod install.


2
Ich musste auch Folgendes für Swift Pods hinzufügen:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
pstoppani
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.