Swift a-t-il un équivalent #warning? Il est simplement utilisé pour afficher un avertissement dans la propre interface graphique de Xcode
Je voudrais également savoir s'il existe un équivalent #error.
Apple a déclaré que la marque #pragma allait bientôt arriver, il pourrait en être de même avec cela.
//WARNING
exactement comme #pragma,//MARK
mais actuellement aucun d'eux n'est ajouté à la version bêta de XCode.Réponses:
À l'avenir, les développeurs Apple pourraient très bien publier un
//WARNING:
point de repère ou fournir la fonctionnalité d'un autre point de repère nommé.Cependant, pour invoquer cette fonctionnalité avec Swift dans Xcode aujourd'hui, vous pouvez procéder comme indiqué par Ben Dodson & Jeffrey Sambells:
Ajoutez un nouveau script d'exécution à l'onglet des phases de génération de votre cible (paramètres du projet> phases de génération> '+'> nouvelle phase de script d'exécution) et collez le code suivant dans la zone vide:
Cela forcera Xcode à signaler un avertissement au moment de la compilation pour tout
// TODO:
ou des// FIXME:
commentaires que vous annotez.Alternativement, vous pouvez modifier TAGS avec une balise personnalisée:
TAGS="WARNING:"
dans le code ci-dessus qui conserverait le comportement par défaut pour TODO & FIXME et déclencherait un avertissement de temps de compilation sur tous les commentaires balisés comme// WARNING:
.http://bendodson.com/weblog/2014/10/02/showing-todo-as-warning-in-swift-xcode-project/ http://jeffreysambells.com/2013/01/31/generate-xcode- warnings-from-todo-comments
EDIT: 18/11/14
@ david-h a soulevé un bon point dans son commentaire. Si vous vouliez uniquement déclencher ces avertissements dans une configuration de build spécifique, vous pouvez effectuer les opérations suivantes:
Alternativement, vous pouvez utiliser "Release" plutôt que "Debug" pour cibler uniquement les builds de production.
la source
-type f
option à lafind
commande pour exclure les répertoires des résultats de la recherche. Cela ne devrait pas être un problème pour la plupart des gens, mais quiconque utilise leR.swift
pod rencontrera la même erreur que moi car ilR.swift
s'agit d'un répertoireÉditer
Depuis Swift 4.2, la prise en charge au niveau de la langue est disponible pour les avertissements et les erreurs de génération.
Réponse originale
Rapide, sale et oh si élégamment simple tout en même temps.
Lance un avertissement indiquant que «FIX_ME__🛠🛠🛠» n'a jamais été utilisé.
Vous pouvez ajouter des émoticônes au nom de la variable si vous le souhaitez ... J'utilise souvent 😱 et 🛠, pour quelque chose qui a vraiment besoin d'être réparé, je considérerais même even. Vous pouvez remplacer
FIX_ME__
avec tout ce que vous voulez:ALGORITHM_NEEDS_REVIEW
,BugID_148
ouJOHNNY_YOU_BROKE_THIS
quelques exemples.Rapide, sans configuration, concis et les émoticônes peuvent même ajouter de l'humour / de la personnalité à votre code. Parfois, la solution la plus simple est la meilleure.
la source
let fixMeMakeMeNonOptional: Int
vous donneImmutable value fixMeMakeMeNonOptional was never used; consider replacing with _ or removing it
dans le navigateur de problème. Toutes les autres solutions vous donnent des messages d'erreur beaucoup plus génériques.Mise à jour post WWDC 2018
À partir de Xcode 10 et Swift 4.2, vous pourrez maintenant
#warning
réutiliser comme ceci:Cela apparaîtra comme un avertissement dans Xcode comme prévu!
Cela fonctionne même en combinaison avec des
#if
vérifications, par exemple, ce qui suit n'affichera un avertissement que si votre plate-forme cible est iOS:Il y a aussi
#error
si vous voulez que votre build échoue.Réponse avant la WWDC 2018
Dans Swift utilisant XCode 6, vous pouvez utiliser différents types de points de repère à différentes fins. Voici ce qu'Apple en dit:
Donc, pour définir un avertissement avec une description, vous utiliseriez quelque chose comme ceci:
//TODO: Clean up this code after testing
Si vous voulez simplement définir une marque courte (en supposant que vous vous souviendrez quoi faire), utilisez ceci:
//FIXME
ÉDITER: Ces points de repère n'apparaissent cependant que dans la barre de saut de XCode, ce qui pourrait ne pas être ce que vous souhaitez et ce à quoi vous vous attendez - en particulier des marques // TODO: et // FIXME. J'ai déposé un radar à ce sujet: # 17776817. Espérons qu'Apple l'ajoutera dans les versions à venir de XCode 6.
SOLUTION (EDIT 2): Si vous installez le Swift Linter via Homebrew (exécuté
brew install swiftlint
après abrew update
) et ajoutez le script de construction suggéré à votre projet, alors vous verrez tous vos points de repèreTODO
etFIXME
apparaître comme des avertissements dans Xcode. SwiftLint ajoutera même quelques avertissements / erreurs supplémentaires que vous pouvez configurer pour répondre à vos besoins - je ne peux que recommander l'utilisation de SwiftLint et cela résout ce problème de manière formidable!la source
Pas encore ajouté par l'équipe Apple. Ce que j'ai décidé de faire est probablement une tricherie, mais au moins cela me montre un message FIXME. Donc, ce que je fais, c'est déclarer la fonction FIXME () dans le fichier Swift:
et quand je l'appelle à partir d'une autre fonction, il affiche un avertissement, par exemple
Pour Swift 2
la source
Regardez cet article .
Vous pouvez écrire votre propre script qui mettra en évidence toutes les balises.
Cela se traduit par:
la source
egrep --directories='skip'
pour ignorer les répertoires avec des noms comme Device.swiftComme alternative, si vous voulez que quelque chose apparaisse dans le panneau des avertissements, vous pouvez écrire quelque chose comme:
Vous ne pouvez pas vraiment faire apparaître de texte, mais au moins c'est un marqueur plus visible, surtout si vous avez tendance à traiter (la plupart) des avertissements comme des erreurs.
la source
J'ai proposé et implémenté cette fonctionnalité, et elle sera livrée avec Swift 4.2. Vous pouvez l'utiliser maintenant en téléchargeant la
master
chaîne d'outils sur swift.org .la source
Un CocoaPod que j'utilisais avait
.swift
dans son nom, donc un répertoire a été retourné, ce qui a provoqué le crash du script par Kyle. L'ajout-type f
à lafind
commande résout ce problème en ne regardant que les fichiers qui correspondent*.swift
au lieu de renvoyer également les répertoires qui correspondent au modèle.Code final que j'ai utilisé:
la source
Si vous ne souhaitez pas ajuster la configuration de votre build, un autre remède maison simple consiste à coller un espace réservé pour l'éditeur devant le commentaire:
Vous obtenez une erreur «Espace réservé de l'éditeur dans le fichier source» lorsque vous créez, mais contrairement à la solution de Jordan, il n'y a pas d'erreur en direct pour vous ennuyer lors de la frappe:
la source
Après beaucoup de recherches et de nostalgie, je suis convaincu qu'aucune telle entité n'existe. J'espère toujours avec les dernières notes de version de Xcode mentionnant l'absence continue d'un mécanisme de marque #pragma, #warning et #error peuvent également arriver.
En passant, je recommande fortement de déposer un radar auprès d'Apple sur bugreport.apple.com pour ajouter cette fonctionnalité (vous pouvez duper 17702491).
la source
Nous avons écrit un outil configurable qui vous permet de mettre des avertissements et des erreurs dans Xcode Issue Navigator en fonction de la balise de commentaire et de la configuration de la construction: https://github.com/doubleencore/XcodeIssueGenerator
Installez-le:
Mettez ensuite une ligne dans une phase d'exécution du script:
Voici un article décrivant comment nous l'utilisons.
la source
Je peux être en retard à la fête avec Xcode 10 prenant en charge les erreurs et les avertissements, mais en mettant simplement une chaîne:
produira un avertissement: l'
String literal is unused
auto-complétion fonctionne toujours et le projet est toujours en cours de compilation.la source
Ma réponse ne répond pas tout à fait à votre question, mais si vous voulez quelque chose de simple, vous pouvez utiliser ce plugin d' alcatraz qui fonctionne dans tous les projets sans aucune préparation supplémentaire. Procédez simplement comme suit:
Il a également des préférences pour ajouter de nouvelles balises
la source
Avantage de cet extrait - il n'affiche pas les avertissements des pods:
Comment installer:
la source