2010-08-06 12 views
4

Dans plusieurs projets, j'utilise du code tiers qui produit plus d'un avertissement de compilateur. Je ne veux évidemment pas passer en revue et modifier le code des projets tiers mis à jour activement.Comment supprimer les avertissements du compilateur en masse dans Xcode

Cela me laisse avec beaucoup d'avertissements inutiles qui étouffent les avertissements dans MY Code.

Je l'ai utilisé quelques drapeaux du compilateur pour supprimer les avertissements spécifiques sur une base par fichier, mais qui est beaucoup trop fastidieux pour le code open source avec 10-20 fichiers .m.

Est-il possible tous les avertissements par groupe Xcode ou chemin de fichier? Ou quelqu'un a-t-il une meilleure suggestion?

(FYI: J'utilise le compilateur LLVM 1.5)

+0

Il semblerait que Mahmoud Khalifa ait répondu à votre question au mieux des capacités de Xcode. Sinon, il semble que vous ayez besoin de déposer un RADAR. Veuillez fournir le numéro RADAR afin que les autres puissent le demander lorsqu'ils rencontrent ce fil de discussion. – jww

Répondre

2

Dans mon expérience, 3.x XCode semble montrer que les avertissements pour les fichiers qui ont été effectivement compilés dans la construction la plus récente, donc si vous construisez le projet, modifier un seul fichier, puis recréer le projet, vous ne verrez que les avertissements pour le fichier modifié. Je trouve généralement ce qu'il faut faire plus de mal que de bien (d'autant plus que dans Objective-C, il est seulement un avertissement pour appeler un sélecteur qui n'existe pas!) — et, heureusement, il est fixé dans XCode 4 — mais dans votre cas pourrait être utile.

Cependant, pour diverses raisons, vous voudrez peut-être envisager de mettre le code tiers dans un cadre. Cela ne supprimerait pas automatiquement les avertissements (bien que cela puisse faciliter leur suppression), mais cela signifierait que le code tiers a été compilé dans une bibliothèque et ne faisait donc pas partie de votre cycle de compilation normal.

+0

L'utilisation d'un framework (lib statique sur l'iphone) peut être mon meilleur espoir comme tu l'as dit. Je suppose que cela ne pose pas trop de problèmes et devrait résoudre les problèmes. Mon seul problème avec cette technique, c'est que s'il y a un problème, je n'ai plus le code source à regarder. C'est plus un problème d'avoir un gâteau et de le manger, ou quelque chose comme ça ... –

+0

Si Xcode affiche les résultats de la dernière construction ou de toutes les constructions est un paramètre dans la fenêtre Résultats de la construction. J'ai le mien mis à toutes les constructions et mes préférences de Xcode réglées pour ne pas s'arrêter sur les erreurs, de sorte qu'une seule construction d'un nouveau projet m'indique tous les avertissements et les erreurs qu'elle a. –

+0

Les derniers résultats sont vraiment la seule solution qui fonctionne un peu. C'est juste que parfois de vrais avertissements passent quand ils me manquent sur la première construction «fraîche». –

1

C'est certainement pas la solution plus facile, mais vous pouvez passer par ces bibliothèques tierces et corriger leurs bogues causant avertissement et soumettre des correctifs. Ensuite, les avertissements disparaissent, les bugs sont corrigés et tout le monde peut profiter des deux améliorations. (Le nombre d'avertissements que vous pourrez écraser de cette manière dépendra de ce qu'ils sont: Des avertissements d'API obsolètes peuvent être inévitables si la bibliothèque doit supporter une ancienne version de Mac OS X ou iOS API désapprouvées étaient la seule façon.)

+0

Vous avez raison, la fixation des avertissements est la solution évidente. Je l'ai fait dans quelques projets open source, mais en raison de contraintes de temps, je ne peux pas corriger les avertissements dans tous les projets open source que j'utilise. Il serait idéal de traiter le code que je n'ai pas le temps de corriger comme une "boîte noire". Et pour certains projets, comme vous l'avez mentionné, les appels obsolètes s'excitent. –

2

Désactivation des avertissements sur une base par fichier est super simple. Tout ce qui est requis est un drapeau de compilateur. Voici le processus étape par étape.

  1. Ouvrez le navigateur de projet dans Xcode
  2. Cliquez sur l'icône de projet au sommet du navigateur
  3. Dans le volet de détail résultant sélectionnez la cible que vous travaillez avec
  4. Sélectionnez « Créer phases »
  5. Expand « Sources » Compile
  6. dans la liste localiser le fichier que vous êtes intéressé par
  7. Double-cliquez sur la colonne sous le « drapeaux du compilateur » colonne à côté votre fichier
  8. Ajouter un -w à la boîte de dialogue qui
  9. Cliquez sur « Terminé »
  10. Générez votre projet maintenant des avertissements sans

ici est le lien de référence http://blog.bluelightninglabs.com/2011/12/suppressing-xcode-warnings-on-a-per-file-basis/

+0

Merci pour ça! – Tim

Questions connexes