Como posso marcar comentários de “Tarefas” no Xcode?


111

Atualmente estou trabalhando em uma tarefa de manipulação de imagem baseada em iOS.

Problema:

Estou trabalhando em diferentes módulos. Portanto, se eu precisar adicionar algo em um módulo no futuro, quero marcá-lo como uma nota de tarefa. Existem outras macros ou semelhantes para adicionar uma nota a fazer no Xcode?

Eu tentei:

Para isso atualmente estou usando #pragmacomo:

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

Eu tenho:

Mas lista na seção Método como:

Façam

O que eu realmente preciso:

O problema é que ele está listado na lista de métodos, então às vezes me esqueci de removê-lo da seção e também é muito difícil encontrá-lo no código-fonte inteiro. (Pesquisando #pragma resultados para mostrar listas inteiras)

Detalhes técnicos:

Estou usando o Xcode versão 4.6.2.


Como faço para chegar a essa visualização específica em que o Xcode lista todos os métodos, marcas de pragma e anotações TODO?
— Mischa

@Mischa: Verifique minha resposta, está na barra de listagem de métodos.
— Midhun MP de

Eu verifiquei sua resposta e não encontrei uma dica de como mostrar aquele pop-up. Mas acho que encontrei agora: está no topo do editor de código naquela barra de "navegação", certo?
— Mischa

Btw: Existe alguma maneira de mostrar todos os TODOs do projeto de uma vez?
— Mischa

@Mischa: Sim, está no topo do editor de código e, pelo que sei, não há como exibir todos os comentários de uma vez (em vez de pesquisar todo o projeto)
— Midhun MP

Respostas:


133

Deixa comigo.

Escrever comentário como:

// TODO: Do something

Vai fazer o truque.

Eu tenho algo como:

FAÇAM


Além disso, há várias opções como :

  1. // FIXME: Midhun

  2. // ???: Midhun

  3. // !!!: Midhun

  4. // MARK: Midhun

16
você também pode usar // FIXME: ou #warning. ao usar #warning, você recebe um aviso no Xcode e pode pular diretamente para essa parte.
— brush51

6
Não é isso que @ Dev2rights postou uma hora antes de você? Por que você não aceita sua resposta?
— trojanfoe

@trojanfoe: sim. Mas eu tenho uma solução mais adequada para mim // MARK: e #warning. É por isso que eu não aceitei
— Midhun MP

1
Bem // FIXME, // MARKe #warningnão são o mesmo que // TODOe isso não responde à sua pergunta.
— trojanfoe

1
@Domsou: Atualmente não há outras opções disponíveis além das listadas. Vou atualizar minha resposta se receber alguma.
— Midhun MP de

129
// TODO: the thing todo

É como você mostra as tarefas.


10
Você também pode usar // FIX: Everything crashes all the timepara tornar mais fácil voltar às partes do código que geram problemas usando a barra de salto.
— Maarten

Estranhamente, usar isso não mostra o comentário no XCode 5.1.1
— loretoparisi

Mais 2 marcadores que parecem relevantes aqui são #warning e #error i.imgur.com/KVjrVwG.png
— Zane Helton

3
Nitpick: coloque um espaço entre //e TODO:. Por exemplo: // TODO: Read this from prefs. Se você revisar a documentação das linguagens Swift e Objective C, esta convenção de espaço é seguida de forma bastante consistente.
— Jeffro

43

Usando o

//TODO: some thing here

funciona se tudo o que você deseja fazer é olhar a lista de tarefas no menu suspenso

Se você quiser ser intrusivo, pode usar #warningmarcas:

#warning this will create a compiler warning.

E quando você construir o aplicativo, você receberá um aviso do compilador (um triângulo amarelo, não um erro do compilador) que é um pouco mais "na cara" sobre lembrá-lo de coisas que você precisa fazer.


Acho que #warningé a melhor solução porque irá avisá-lo em tempo de compilação. Obrigado
— Duck

36

Com o script abaixo, você pode ver todas as tags necessárias, como avisos.

  1. Selecione seu projeto no Project Navigator
  2. Abra o alvo na barra lateral e vá para a guia "Build Phases"
  3. Clique no sinal "+"
  4. Selecione "Nova fase de construção de script de execução" Adição de script
  5. Adicione o script abaixo para "Executar Script" Roteiro Pronto O 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/"
    

insira a descrição da imagem aqui

A resposta original foi tirada daqui

Outra alternativa é o plugin XToDo para Xcode.


ótima solução, há uma maneira de excluir todos os arquivos de pod? há alguns Todos oder Mixmes em minhas extensões usadas?
— Marco Weber

encontrei uma solução sozinho neste post stackoverflow.com/q/37157027/6003494 o script é: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

Eu comecei com

// TODO: Implement bubble sort.

Então, entrei em um grande projeto e às vezes precisava de um todo para viver mais do que um commit WIP e, assim, para distinguir meus todos dos meus pares, nomeei meu todo com minhas iniciais:

// TODO: SM: Implement bubble sort

Às vezes eu queria mais visibilidade, então comecei a usar avisos de pragma em alguns lugares.

#warning Implement bubble sort

Um dia, decidi ativar o modo difícil adicionando -Werroraos meus cflags. Infelizmente, isso torna os avisos de pragma inúteis porque impedem a compilação. E então voltei a usar // TODO:até que Jeff Nadeau me disse que posso colocar

-Wno-error=#warnings

em meus cflags para não tratar avisos de pragma como erros. Portanto, agora #warninge -Werrorpodem viver lado a lado.


3

Eu tendo a escrever exatamente // TODO: Blá, blá, blá

Então eu apenas faço um COMMAND-SHIFT-F e procuro por "// TODO".

Usar a lista suspensa de esboço do arquivo mostrará apenas TODOs para o arquivo atual, mas tendo a querer ver o status TODO do meu projeto.

Solução difícil, mas funciona.


2

Eu divido os tokens reconhecidos em Avisos e Erros para meu próprio uso, pensei em compartilhá-los aqui:

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

Outro método simples, um pouco fora da caixa, se você não quiser bagunçar a barra de listagem de métodos, é usar uma convenção nos comentários como //Todo:e quando você quiser abordá-los em massa, basta selecionar o Find Navigator, match case e procurar por//Todo:

Eu prefiro isso porque não gosto dos métodos suspensos parecidos com código-spagetti. E sim, geralmente tenho muitos Todo: 's;)


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.