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.