É possível usar tarefas de várias linhas no IntelliJ IDEA?

90

Se sim, como?

Caso contrário, existe uma solução alternativa para obter uma funcionalidade semelhante?

EDITAR:

O que quero dizer é algo assim:

// TODO line1
// line2
// line3

e linha1, linha2, linha3 pertencem ao mesmo TODOe são destacados em azul.

Jhegedus
fonte

Respostas:

53

Não, por enquanto não.

Este recurso foi discutido , mas ainda não implementado.

EDITAR / ATUALIZAR:

É implementado na versão 2018.3.

Gallal
fonte
12
Reserve um momento para seguir esse link e votar no problema para priorizar este tíquete. Há um ícone de polegar para cima ao lado de "eleitores" no lado direito.
adamdport
2
Isso agora está implementado no IDEA 2018.3, atualmente no EAP. blog.jetbrains.com/idea/2018/09/…
David
E agora disponível para Android com versão do Android Studio 3.4, pois é baseado no IDEA 2018.3
shaktiman_droid
54

Isso é compatível desde 2018.3 .

Comentários do Multiline TODO

Comentários do Multiline TODO

O IntelliJ IDEA 2018.3 agora oferece suporte a comentários TODO em várias linhas, agora a primeira e todas as linhas de comentário TODO subsequentes são destacadas no editor e listadas na janela da ferramenta TODO . Basta adicionar um recuo a partir da segunda linha de seu comentário TODO multilinha e o IDE o diferenciará de um comentário comum.

congusbongus
fonte
Obrigado! Muito útil. O único problema é que quando clico em Ctrl-Alt-L para formatar meu arquivo, o recuo é removido. Alguma ideia de como evitar isso?
Gep
27

Em minhas configurações, estou usando um regex para TODO multiline:

\/(\/|\*)[ ]*\btodo\b(.|\n)*(\*\/|)

O único problema é que ele não destaca os últimos * / símbolos do comentário de várias linhas. Se alguém puder resolver isso, seria ótimo!

NonGrate
fonte
1
Encontrei dois possíveis bugs (ou prováveis ​​erros da minha parte) com isso, pelo menos para o Android Studios. Um, por algum motivo, atrapalha minha indexação de repositório para uma única classe em meu projeto. A mesma classe sempre. Remova-o da lista TODO e ele será reindexado apropriadamente. Em segundo lugar, ele cria um problema de StackOverflow quando o IDE é carregado, mas o IDE não publica um aviso ou força o fechamento ou nada, então não tenho certeza da gravidade. Vou continuar investigando, mas vale a pena mencionar algo se alguém mais encontrar. Dito isso, parece fazer o que deveria fora disso.
zgc7009
Oi zgc7009! Você poderia postar aqui seu comentário TODO? Mais pessoas veem - mais rápido encontraremos o problema :-)
NonGrate
5

Você quer dizer isso? using-todo-lists

/**
 * todo multi-line
 *  
 */
yanyu
fonte
2
Obrigado pela resposta. Isso seria bom se todas as linhas do bloco pertencessem à lista de tarefas e fossem destacadas em azul. Mas é a coisa mais próxima que temos no momento.
jhegedus
5

Você pode usar FIXME e TODO usando as guias como segue

//FIXME: first line
//<tab> second line
//<tab> third line

Para obter mais informações, consulte a documentação

Baimyrza Shamyr
fonte
3

Com base na resposta do NonGrate:

Vá para as configurações, pesquise as configurações TODO e substitua a entrada de tarefas existente " \ btodo \ b. * " Por:

(\btodo\b.*)|(\/\*(\*(?!\/)|[^*])*\btodo\b(\*(?!\/)|[^*])*\*\/)

Resultado:

insira a descrição da imagem aqui

Você deve usar * / para fechar o destaque.

Ele usa 2 padrões:

  1. (\ btodo \ b. ) captura qualquer linha com a palavra todo
  2. (/ \ * (\ * (?! /) | [^ *]) * \ btodo \ b (\ * (?! /) | [^ *] * \ * /) captura comentários de várias linhas começando com / * e terminando com * /

Quaisquer outras combinações podem não funcionar.

Observação: você deve substituir o regex existente para evitar que várias instâncias do mesmo item de tarefas apareçam na lista de tarefas.

caçador
fonte
Acabei de usar isso no IntelliJ 2017.1.3 no Mac e funcionou muito bem. Obrigado!
yokeho
2
No Android Studio atual, isso não funciona como @Jeremy disse acima ... mas funciona com o uso de / ** teste antes do teste TODO após * /
Codeverso em
3
AVISO: Isso simplesmente divide o IntelliJ e o Android Studio em bilhões de pedaços. Ele tem recursão RegEx, que é considerada quase um pecado no desenvolvimento Java devido à forma como as expressões RegEx são compiladas e a facilidade com que você pode causar um SO (o que de fato isso causa).
mradzinski
-1

Esta regex funciona para mim:

(?:(?:todo|TODO)(?:\[[A-Z,a-z]+\-\d+\])?\s(\s*\b.*\b)*)|(?:\/\*\s*(?:todo|TODO)(?:\[[A-Z,a-z]+\-\d+\])?\s(?:(?!\*\/)[\s\S])*\*\/)

Basicamente, procura o seguinte:

  • Uma palavra-chave todo ou TODO opcionalmente sufixada por um id de ticket / problema entre colchetes e qualquer quantidade de caracteres após um único caractere de espaço em branco.
  • Um comentário Java de várias linhas começando com / * seguido por qualquer quantidade de espaço em branco e as condições descritas na descrição de tarefas de uma única linha acima. Ele termina quando encontra * / em qualquer uma das linhas a seguir.

Exemplos de linha única:

todo some very important stuff
TODO[SAOY-1376] An urgent bug fix described in the SAOY-1376
// todo some very important stuff
// TODO[SAOY-1376] An urgent bug fix described in the SAOY-1376

Exemplos de várias linhas:

/* todo assignee or something
    a very important message
    another thing
*/

/* TODO[SAO-13]
 * a very important message
 * another thing
*/
Martynas Petuska
fonte