2009-09-25 6 views
2

Je ne fais que commencer avec xcode et l'apprentissage Objective-C & Cocoa, serait-il utile d'échanger le compilateur de Xcode 3.2 vers Clang pour le contrôle d'erreur et l'analyseur statique améliorés. Je suis juste curieux de savoir si les extras donnés seraient utiles ou est-ce que mon apprentissage serait mieux servi coller aux paramètres par défaut?Est-il sage d'utiliser Clang pour commencer?

merci beaucoup

gary

+0

Qu'est ce que c'est "clank"? Pouvez-vous fournir un lien, je suis intrigué ... –

+0

Il veut dire "clang": http://clang.llvm.org/ –

+0

Je me suis mélangé avec Ratchet & Clank :) Je veux dire clang, question ci-dessus édité pour corriger formulation. – fuzzygoat

Répondre

3

Il y a quelques options pour l'utilisation CLANG:

  1. Run construire et analyser, voir clang résultats.

  2. Dans les paramètres du projet pour une configuration , vous pouvez vérifier l' « exécuter analyseur statique » boîte et CLANG seront exécutées chaque fois que vous compilez. Vous pouvez également modifier le compilateur de GCC 4.x à CLANG/LLVM. Que affiche plus d'erreurs et avertissements CLANG (un exemple est que NSLog(@"A value is %@:%@", value) vous avertira que vous ne passez pas en assez de paramètres).

Je recommande l'option 2 - si vous exécutez l'analyseur statique avec chaque génération, il ne prend pas beaucoup plus de temps et vous saurez si vous faites quelque chose d'étrange tout de suite, plutôt que de fixer un tas d'erreurs plus tard. Les messages clairs que cela vous donne fournissent beaucoup de valeur éducative, il est donc encore plus logique de l'activer si vous apprenez juste!

L'option 3 est bonne à exécuter de temps en temps en raison de la plus grande vérification des erreurs. Cependant, actuellement XCode n'a pas de compilateur CLANG/LLVM pour le périphérique iPhone, et vous ne pouvez donc utiliser ce paramètre que lors de la compilation pour le simulateur. La meilleure approche consiste alors à créer une copie de la configuration de débogage (dans l'onglet de configuration des paramètres du projet) nommée "Debug CLANG" et à définir cette configuration pour utiliser le compilateur CLANG/LLVM et exécuter l'analyseur statique. Notez qu'après avoir créé une nouvelle configuration, vous devez annuler la configuration, la sélectionner comme configuration active (via la liste déroulante en haut à droite), puis revenir aux paramètres du projet pour modifier les valeurs.

Ensuite, dans le quotidien, vous utilisez simplement le réglage "Debug" pour compiler en utilisant l'analyseur statique, et passez à "Debug CLANG" peut-être une fois par semaine pour voir si des problèmes plus profonds existent.

3

Si vous « Construire et Analyze » ou activez la préférence « Exécuter analyseur statique » dans XCode, vous obtenez une analyse statique Clang.

Si vous ne faites pas de développement en C++, il ne semble pas y avoir beaucoup d'inconvénients à passer de gcc à Clang. Vous n'avez simplement pas besoin de le faire pour obtenir les avantages de l'analyse statique de Clang.

+0

Etes-vous sûr d'obtenir des messages d'erreur plus clairs en utilisant "Build and Analyze" sous GCC 4.2, je ne le vois pas ici. Aussi pour iPhone, vous devez utiliser GCC? – fuzzygoat

+0

Vous avez raison, vous recevez toujours les messages d'erreur obtus de gcc. J'ai changé ma réponse en conséquence. Et pendant que je jurerais j'ai vu un doc officiel qui a dit pas de Clang-LLVM pour iPhone, je ne le trouve pas, alors essayez-le. Je suis passé à CClang-LLVM pour mon code Mac. –

3

Vous pouvez utiliser l'analyseur statique sans utiliser le compilateur Clang réel. Généralement, vous n'utilisez pas l'analyseur comme option de construction par défaut car cela ralentit un peu les temps de construction.

Cependant, le compilateur Clang est une bonne option même sans tenir compte de l'analyse statique. Les rapports d'erreurs sont meilleurs que vous ne le faites remarquer, mais le principal avantage est que c'est très rapide. En fait, dans mes tests, c'est presque deux fois plus rapide que GCC.

+0

Juste pour référence, il n'y aurait aucune différence dans le code ou le projet par rapport au compilateur que vous avez défini. Si vous trouvez que quelque chose ne marche pas, je suppose que c'est juste un cas de défaut et de recompilation? – fuzzygoat

+0

@fuzzygoat: C'est correct. Vous choisissez simplement un compilateur différent et reconstruisez le projet. Celui que vous choisissez par défaut n'est pas très important. – Amok

Questions connexes