Comment marquer des commentaires «À faire» dans Xcode?


111

Actuellement, je travaille sur une tâche de manipulation d'image basée sur iOS.

Problème:

Je travaille sur différents modules. Donc, si je dois ajouter quelque chose dans un module à l'avenir, je veux le marquer comme une note à faire. Existe-t-il d'autres macros ou similaires pour ajouter une note à faire dans Xcode?

J'ai essayé:

Pour cela, j'utilise actuellement #pragmacomme:

#pragma mark -
#pragma mark To do: Add the Image processing methods.

J'ai eu:

Mais il énumère dans la section Méthode comme:

Faire

Ce dont j'ai réellement besoin:

Le problème est qu'il est répertorié dans la liste des méthodes, alors j'ai parfois oublié de le supprimer de la section.Il est également très difficile de le trouver dans tout le code source. (Recherche de résultats #pragma pour afficher des listes entières)

Détails techniques:

J'utilise la version 4.6.2 de Xcode.


Comment accéder à cette vue particulière où Xcode répertorie toutes les méthodes, les marques de pragma et les annotations TODO?
Mischa

@Mischa: Vérifiez ma réponse, c'est sous la barre de liste des méthodes.
Midhun MP

J'ai vérifié votre réponse et je n'ai pas trouvé d'indice pour afficher cette fenêtre contextuelle. Mais je pense que je l'ai trouvé maintenant: c'est au-dessus de l'éditeur de code dans cette barre de "navigation", non?
Mischa

Btw: Y a-t-il un moyen de montrer tous les TODO du projet à la fois?
Mischa

@Mischa: Oui, c'est en haut de l'éditeur de code, et à ma connaissance, il n'y a aucun moyen d'afficher tout pour faire des commentaires à la fois (au lieu de rechercher dans tout le projet)
Midhun MP

Réponses:


133

J? ai compris.

Rédaction de commentaires comme:

// TODO: Do something

Fera l'affaire.

J'ai quelque chose comme:

FAIRE


Il existe également de nombreuses options telles que :

  1. // FIXME: Midhun

  2. // ???: Midhun

  3. // !!!: Midhun

  4. // MARK: Midhun

16
vous pouvez également utiliser // FIXME: ou #warning. lorsque vous utilisez #warning, vous recevez un avertissement dans Xcode et vous pouvez accéder directement à cette partie.
brush51

6
N'est-ce pas ce que @ Dev2rights a publié une heure avant vous? Pourquoi n'acceptez-vous pas sa réponse?
trojanfoe

@trojanfoe: oui. Mais j'ai une solution plus appropriée pour moi // MARK: et #warning. C'est pourquoi je ne l'ai pas accepté
Midhun MP

1
Eh bien // FIXME, // MARKet #warningne sont pas les mêmes que // TODOet donc cela ne répond pas à votre question.
trojanfoe

1
@Domsou: Actuellement, il n'y a pas d'autres options disponibles que celles listées. Je mettrai à jour ma réponse si j'en ai.
Midhun MP

129
// TODO: the thing todo

C'est comment vous montrez les tâches à accomplir.


10
Vous pouvez également utiliser // FIX: Everything crashes all the timepour faciliter la récupération des parties de votre code qui génèrent des problèmes à l'aide de la barre de saut.
Maarten

Étrangement, l'utilisation de cela n'affiche pas le commentaire dans XCode 5.1.1
loretoparisi

2 autres marqueurs qui semblent pertinents ici sont #warning et #error i.imgur.com/KVjrVwG.png
Zane Helton

3
Nitpick: placez un espace entre //et TODO:. Par exemple: // TODO: Read this from prefs. Si vous passez en revue la documentation des langages Swift et Objective C, cette convention d'espace est assez systématiquement suivie.
Jeffro

43

En utilisant le

//TODO: some thing here

fonctionne si tout ce que vous voulez faire est de regarder la liste des tâches dans le menu déroulant

Si vous voulez être intrusif, vous pouvez utiliser des #warningmarques à la place:

#warning this will create a compiler warning.

Et lorsque vous construisez l'application, vous obtiendrez un avertissement du compilateur (un triangle jaune, pas une erreur de compilation) qui est un peu plus "dans votre visage" pour vous rappeler les choses que vous devez faire.


Je pense que #warningc'est la meilleure solution car elle vous avertira au moment de la compilation. Merci
Duck

36

Avec le script ci-dessous, vous pouvez voir toutes les balises requises comme les avertissements.

  1. Sélectionnez votre projet dans le navigateur de projet
  2. Ouvrez la cible dans la barre latérale et passez à l'onglet "Phases de construction"
  3. Cliquez sur le signe "+"
  4. Sélectionnez "Nouvelle phase de création du script d'exécution" Ajout de script
  5. Ajoutez le script ci-dessous à "Exécuter le script" Script prêt Le script:

    KEYWORDS="TODO:|FIXME:|DevTeam:|XXX:"
    find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/ warning: \$1/"

entrez la description de l'image ici

La réponse originale a été tirée d' ici

Une autre alternative est le plugin XToDo pour Xcode.


excellente solution, existe-t-il un moyen d'exclure tous les fichiers pod? il y a quelques Todos oder Mixmes dans mes extensions utilisées?
Marco Weber

j'ai trouvé une solution par moi-même dans ce post stackoverflow.com/q/37157027/6003494 le script est:KEYWORDS="TODO:|FIXME:|\?\?\?:|\!\!\!:" find "." \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "./Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/ warning: \$1/"
Marco Weber

6

Vous pouvez utiliser le plugin XToDo

https://github.com/trawor/XToDo

utilisez ctrl + t pour activer / désactiver la fenêtre de liste

utilisez ctrl + t pour activer / désactiver la fenêtre de liste

Exemple de barre d'outils

Installation facile avec alcatraz utilisez ctrl + t pour activer / désactiver la fenêtre de liste


1
Faisait défiler vers le bas pour suggérer cela, je le recommande complètement.
MANIAK_dobrii

6

J'ai commencé avec

// TODO: Implement bubble sort.

Puis j'ai rejoint un grand projet et parfois j'avais besoin d'un todo pour vivre plus longtemps qu'un commit WIP et donc pour distinguer mes todos de mes pairs je nomme espacé mon todo avec mes initiales:

// TODO: SM: Implement bubble sort

Parfois, je voulais plus de visibilité, alors j'ai commencé à utiliser des avertissements pragma à certains endroits.

#warning Implement bubble sort

Un jour, j'ai décidé d'activer le mode difficile en ajoutant -Werrorà mes cflags. Malheureusement, cela rend les avertissements pragma inutiles car ils empêchent la compilation. Et donc je suis retourné à l'utilisation // TODO:jusqu'à ce que Jeff Nadeau me dise que je peux mettre

-Wno-error=#warnings

dans mes cflags afin de ne pas traiter les avertissements pragma comme des erreurs. Alors maintenant #warninget -Werrorpeuvent vivre côte à côte.


3

J'ai tendance à écrire exactement // TODO: Blah blah blah

Ensuite, je fais juste un COMMAND-SHIFT-F et cherche "// TODO".

L'utilisation de la liste déroulante de contour de fichier ne vous montrera que les TODO pour le fichier actuel, mais j'ai tendance à vouloir voir l'état TODO de mon projet.

Solution approximative, mais elle fait son travail.


2

J'ai divisé les jetons reconnus en avertissements et erreurs pour mon propre usage, j'ai pensé le partager ici:

KEYWORDS="STUB:|WARNING:|TODO:|FIXME:|DevTeam:|\?\?\?:" 
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "${SRCROOT}/Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/1: warning: \$1/"

KEYWORDS="ERROR:|XXX:|\!\!\!:" 
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "${SRCROOT}/Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/1: error: \$1/"
ERROR_OUTPUT=`find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "${SRCROOT}/Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/1: error: \$1/"`

exit ${#ERROR_OUTPUT}

0

Une autre méthode simple, légèrement en dehors de la boîte, si vous ne voulez pas encombrer la barre de liste des méthodes, consiste à utiliser une convention dans les commentaires comme //Todo: et lorsque vous voulez les aborder en masse, sélectionnez simplement le Navigateur de recherche, faites correspondre la casse et recherchez//Todo:

Je préfère cela car je n'aime pas les méthodes déroulantes qui ressemblent à du code spagetti. Et oui, j'ai souvent beaucoup de Todo: 's;)


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.