Ignorer les avertissements Xcode lors de l'utilisation de Cocoapods

417

J'utilise pas mal de bibliothèques tierces qui contiennent de nombreux avertissements, après les dernières mises à jour de Xcode. (par exemple le pod Facebook SDK) Maintenant, tous ces avertissements sont affichés dans mon Xcode à l'endroit où je veux voir mes propres avertissements ou erreurs.

Existe-t-il un moyen d'ignorer ces erreurs? Les corriger n'aidera pas, car après chaque "installation de pod", les modifications sont rejetées.

KrauseFx
la source

Réponses:

968

Ajoutez à votre Podfile:

platform :ios

# ignore all warnings from all pods
inhibit_all_warnings!

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

Exécutez ensuite: pod install

alliage
la source
3
Comment dois-je inclure cela? Actuellement, j'utilise la dépendance Facebook-iOS-SDK s.inhibit_all_warnings! et j'obtiens l'erreur suivante: méthode non définie `inhibit_all_warnings! ' pour # <Pod :: Specification for MyApp (1.0)>
KrauseFx
22
Comment puis-je résoudre le problème suivant: Je souhaite que les avertissements soient masqués pour certains pods, mais pas pour tous.
KrauseFx
3
@krausefx Désolé, vous n'avez pas vu votre commentaire. Pour la postérité, vous pouvez maintenant désactiver les avertissements par pod, comme indiqué dans les documents Podfile
alliage
2
@JohanKarlsson Supprimez la directive et exécutez pod installpour régénérer le Pods.xcodeproj.
alliage
1
Notez que cela n'empêche pas les avertissements (problèmes) d'apparaître pendant la Analyzephase. J'ai proposé quelques suggestions pour cela dans une réponse différente.
Jedidja
28

Vous pouvez rechercher «inhibit_all_warnings» dans les paramètres de construction xcode du PodBundle dans votre espace de travail de projet, définissez la valeur sur «YES», cela masquera tous les avertissements de votre fichier Pod.

Si vous le faites sur votre espace de travail, cela masquera également tout votre projet.

Teja Swaroop
la source
Il s'agit d'une solution plus simple, définissez-la sur le projet pods et elle désactive uniquement les avertissements liés aux pods, pas les avertissements de votre projet. Pas besoin de réexécuter l'installation du pod.
Andres Canella
28
Non recommandé! Avec le prochain, pod installce paramètre est remplacé, il vaut donc mieux le définir dans Podfile!
electronix384128
4
Personnellement, j'aime cela afin que chaque mise à jour dont je me souvienne jette un coup d'œil rapide à tous les avertissements et s'assure qu'ils sont négligeables.
Andres Canella
qu'en est-il des dépendances dans un podspec pour un pod de développement local?
Ari Braginsky
Vous pouvez également définir Swift Compiler - Warnings Policies> Suppress Warningssur Yes... avec inhibit_all_warningsl' 'characters' is deprecated: Please use String or Substring directly avertissement que j'avais toujours dans les pods. Ce paramètre a supprimé cet avertissement.
Tiois
6

Bien que cette autre réponse supprime les avertissements pendant la phase de génération, elle ne semble pas résoudre complètement la Analyzephase (ce qui a causé des problèmes à notre génération CI).

Ce qui a fonctionné pour moi (en plus de la réponse acceptée) était:

  • Cliquez sur le Podsprojet dans le Navigateur du projet
  • Choisissez la Pod-cible réelle et cliquez surBuild Settings
  • Filtrer avec la phrase compiler flags
  • Ajoutez un nouveau Other C Flagsavec la valeur -w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(ou n'importe quel analyseur dont vous avez besoin désactivé) - cette réponse fournit la liste complète des drapeaux à essayer - s'il vous plaît, votez pour!

    clangCependant, la version de dans Xcode 6.3.1 ne semble pas inclure insecureAPI, vous pouvez donc la supprimer de cette liste. La liste complète "actuelle" est-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

Notez que le définir sur le Podsprojet ou la Podscible ne fonctionnera pas . Je ne sais pas pourquoi, mais vous devez le définir pour chaque Pod-cible réelle .

Vous pouvez également définir les drapeaux du compilateur ( -w -Xanalyzer -analyzer-disable-checker -Xanalyzer coreetc.) fichier par fichier .

J'ai également essayé quelques autres méthodes (qui peuvent être nécessaires ou non en plus de ce qui précède). Ils ont été exécutés sur le Podsprojet lui-même.


[1]

  • Filtrer avec la phrase analyzer
  • Assurez-vous que Analyze During 'Build'est défini sur NO.
  • Modifiez tous les paramètres en NO(y compris Improper Memory Management)

[2]

  • Filtrer avec la phrase warnings
  • Remplacer inhibit all warningsparYES

Pour une raison quelconque, même la désactivation de l' Analyzeétape du schéma ne semble pas fonctionner.

Allez dans la Product > Scheme > Manage Schemesfenêtre, cliquez sur chacun Pod-*dans la liste et cliquez sur le Editbouton. Cliquez Buildsur la liste de gauche, puis décochez la case Analyze de droite de la Podcible.

Je ne comprends toujours pas pourquoi je ne peux pas complètement désactiver l'analyse des pods, bien que je m'attende à ce que cela ait à voir avec les "Rechercher les dépendances implicites" vérifiées dans les paramètres de construction du schéma. Si cela n'était pas coché, il semblerait que quelque chose d'autre devrait se produire pour que l'application se connecte aux pods.

Jedidja
la source
1
Remarque: Malheureusement, cela n'aide pas avec CI si vous excluez les pods et .xcworkspace de votre référentiel - en utilisant votre .gitignore.
RileyE
@RileyE intéressant - y a-t-il une bonne raison d'exclure ceux d'un repo? Si oui, l'autre technique de cette page fonctionne-t-elle pour vous? (Je suis toujours un débutant relatif au développement iOS, donc assez curieux d'en savoir plus)
Jedidja
Il existe un large fossé quant à l'inclusion ou non . Je n'aime pas l'inclure car je préfère m'assurer que mon podfile est toujours précis et j'ai trouvé des conflits entre les différents utilisateurs Podfile.lock et .xcworkspaces. C'est simplement une préférence pour les utilisateurs avec des avantages et des inconvénients fortement discutables.
RileyE
@RileyE merci pour l'information! Donc, si nous excluions Pods / .xcworkspace, il n'y a pas de solution pour le problème?
Jedidja
Malheureusement non. C'est pourquoi j'ai poussé pour des drapeaux supplémentaires pod install.
RileyE
5

Étape: 1 Mettez le script ci-dessous dans votre 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

Étape 2. Faites pod install.

Toseef Khilji
la source
2
J'ai également dû ajouter ce qui suit pour Swift Pods:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
pstoppani