Ignora gli avvisi Xcode quando si utilizzano Cocoapods


417

Uso un sacco di librerie di terze parti che contengono molti avvisi, dopo gli ultimi aggiornamenti di Xcode. (ad esempio il pod di Facebook SDK) Ora tutti questi avvisi sono mostrati nel mio Xcode nel punto in cui voglio vedere i miei avvertimenti o errori.

C'è un modo per ignorare questi errori? La loro riparazione non sarà di aiuto, poiché dopo ogni "installazione del pod" le modifiche vengono eliminate.

Risposte:


968

Aggiungi al tuo podfile:

platform :ios

# ignore all warnings from all pods
inhibit_all_warnings!

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

Quindi eseguire: pod install


3
Come lo includo? Attualmente utilizzo s.inhibit_all_warnings di s. Facebook-iOS-SDK! e ottengo il seguente errore: metodo indefinito `inibit_all_warnings! ' per # <Pod :: Specifiche per MyApp (1.0)>
KrauseFx

22
Come posso risolvere il seguente problema: voglio che gli avvisi siano nascosti per alcuni pod, ma non per tutti.
KrauseFx,

3
@krausefx Siamo spiacenti, non ho visto il tuo commento. Per motivi di posterità, ora puoi disabilitare gli avvisi su base per pod, come mostrato nei documenti Podfile
lega

2
@JohanKarlsson Rimuovere la direttiva ed eseguire pod installper rigenerare Pods.xcodeproj.
lega

1
Si noti che ciò non preclude la visualizzazione di avvisi (problemi) durante la Analyzefase. Ho offerto alcuni suggerimenti per questo in una risposta diversa.
Jedidja,

28

Puoi cercare "inhibit_all_warnings" nelle impostazioni di costruzione di xcode di PodBundle nel tuo spazio di lavoro del progetto, impostando il valore su "YES" nasconderà tutti gli avvisi del file Pod.

Se lo fai nel tuo spazio di lavoro, nasconderà anche tutto il tuo progetto.


Questa è una soluzione più semplice, impostala sul progetto pods e disabilita solo gli avvisi relativi ai pod, non gli avvisi del tuo progetto. Non è necessario rieseguire l'installazione del pod.
Andres Canella,

28
Non consigliato! Con il prossimo pod installquesta impostazione viene ignorata, quindi meglio impostarla in Podfile!
electronix384128,

4
Personalmente mi piace così ogni aggiornamento che ricordo per dare una rapida occhiata a tutti gli avvisi e assicurarmi che siano trascurabili.
Andres Canella,

che dire delle dipendenze in un podspec per un pod di sviluppo locale?
Ari Braginsky,

Puoi anche impostare Swift Compiler - Warnings Policies> Suppress Warningssu Yes... con l' inhibit_all_warningsho ancora visualizzato l' 'characters' is deprecated: Please use String or Substring directly avviso in Pods. Questa impostazione ha rimosso questo avviso.
Tiois,

6

Sebbene questa altra risposta rimuoverà gli avvisi durante la fase di compilazione, non sembra risolvere completamente la Analyzefase (che ha causato ancora problemi alla nostra build CI).

Ciò che ha funzionato per me (oltre alla risposta accettata) è stato:

  • Fai clic sul Podsprogetto da Project Navigator
  • Scegli l' Pod-obiettivo reale e fai clic suBuild Settings
  • Filtra con la frase compiler flags
  • Aggiungine una nuova Other C Flagscon il valore -w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(o qualunque analizzatore sia necessario disabilitare) - questa risposta fornisce l'elenco completo delle bandiere da provare - per favore votalo!

    La versione di clangXcode 6.3.1, tuttavia, non sembra includere, insecureAPIquindi è possibile rimuoverla da tale elenco. L'elenco completo "corrente" è-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

Notare che l'impostazione su PodsProgetto o PodsTarget non funzionerà . Non sono sicuro del perché, ma devi impostarlo per ciascun Pod-obiettivo reale .

È inoltre possibile impostare i flag del compilatore ( -w -Xanalyzer -analyzer-disable-checker -Xanalyzer coreecc.) In base al file .

Ho anche provato un paio di altri metodi (che possono essere richiesti o meno in aggiunta a quanto sopra). Sono stati eseguiti sul PodsProgetto stesso.


[1]

  • Filtra con la frase analyzer
  • Assicurarsi che Analyze During 'Build'sia impostato su NO.
  • Cambia tutte le impostazioni in NO(incluso Improper Memory Management)

[2]

  • Filtra con la frase warnings
  • Cambia inhibit all warningsinYES

Per qualche ragione, anche disabilitare il Analyzepassaggio nello schema non sembra funzionare.

Vai alla Product > Scheme > Manage Schemesfinestra, fai clic su ciascuno Pod-*dall'elenco e fai clic sul Editpulsante. Fai clic Buildsull'elenco a sinistra, quindi deseleziona Analyze il lato destro per il Podtarget.

Sono ancora confuso sul perché non riesco a disabilitare completamente i Pod dall'analisi, anche se mi aspetto che potrebbe avere a che fare con "Trova dipendenze implicite" verificato nelle impostazioni di build dello schema. Se questa opzione è deselezionata, sembra che dovrebbe succedere qualcos'altro per consentire all'app di collegarsi ai pod.


1
Nota: Sfortunatamente, questo non aiuta con CI se si escludono Pod e .xcworkspace dal proprio repository, usando .gitignore.
RileyE,

@RileyE interessante - c'è una buona ragione per escluderli da un repository? In tal caso, l'altra tecnica in questa pagina funziona per te? (Sono ancora un principiante relativamente allo sviluppo di iOS, quindi abbastanza curioso di saperne di più)
Jedidja,

C'è una grande divisione sull'opportunità di includerlo o meno . Non mi piace includerlo poiché preferisco assicurarmi che il mio podfile sia sempre accurato e ho riscontrato alcuni conflitti tra Podfile.lock e .xcworkspaces di diversi utenti. È semplicemente una preferenza per gli utenti con pro e contro fortemente discutibili.
RileyE,

@RileyE grazie per l'informazione! Quindi se escludessimo Pods / .xcworkspace non ci sarebbe soluzione per il problema?
Jedidja,

Sfortunatamente no. Ecco perché ho spinto per ulteriori bandiere pod install.
RileyE,

5

Passaggio: 1 Inserisci lo script seguente nel tuo 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

Passaggio 2. Fare pod install.


2
Ho anche dovuto aggiungere quanto segue per Swift Pod:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
pstoppani,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.