Чи можна використовувати багаторядкові завдання в IntelliJ IDEA?


90

Якщо так, то як?

Якщо ні, чи є спосіб обійти цю подібну функціональність?

РЕДАГУВАТИ:

Я маю на увазі щось подібне:

// TODO line1
// line2
// line3

і рядок1, рядок2, рядок3 належать до одного TODOі виділяються синім.


Відповіді:


53

Ні, поки що не.

Ця функція обговорювалась , але ще не реалізована.

РЕДАГУВАТИ / ОНОВИТИ:

Він реалізований у версії 2018.3.


12
Будь ласка, переходьте за цим посиланням і проголосуйте, щоб отримати пріоритет для цього квитка. Поруч із "виборцями" праворуч є значок пальця.
adamdport

2
Зараз це реалізовано в IDEA 2018.3, на даний момент в EAP. blog.jetbrains.com/idea/2018/09/…
Девід

І тепер доступний для Android з випуском Android Studio 3.4, оскільки він базується на IDEA 2018.3
shaktiman_droid

54

Це підтримується з 2018 року.3 .

Багаторядкові коментарі TODO

Багаторядкові коментарі TODO

IntelliJ IDEA 2018.3 тепер підтримує багаторядкові коментарі TODO , тепер перший і всі наступні рядки коментарів TODO виділені в редакторі та перераховані у вікні інструменту TODO . Просто додайте відступ, починаючи з другого рядка вашого багаторядкового коментаря TODO, і IDE буде відрізняти його від звичайного коментаря.


Дякую! Дуже корисний. Єдина проблема, коли я натискаю Ctrl-Alt-L для форматування мого файлу, відступ видаляється. Будь-яка ідея, як запобігти цьому?
Gep

27

У своїх налаштуваннях я використовую такий регулярний вираз для багаторядкового TODO:

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

Єдина проблема полягає в тому, що він не виділяє останні * / символи багаторядкового коментаря. Якщо хтось може це вирішити, було б здорово!


1
Знайшов дві потенційні помилки (або ймовірні помилки з мого боку) із цим принаймні для Android Studios. Один з якихось причин відкидає моє індексування репо для одного класу в моєму проекті. Щоразу теж один і той же клас. Видаліть це зі списку TODO, і воно буде належним чином переіндексовано. По-друге, це створює проблему StackOverflow, коли IDE завантажується, але IDE не публікує попередження або примусового закриття або що-небудь, тому я не впевнений у серйозності. Я продовжуватиму розглядати це, але щось, про що варто згадати, якщо хтось ще на нього зіткнеться. З огляду на це, здається, це робиться як слід поза цим.
zgc7009,

Привіт, zgc7009! Не могли б ви розмістити тут свій коментар TODO? Більше людей це бачать - швидше ми знайдемо проблему :-)
NonGrate

5

Ви маєте на увазі це? using-todo-lists

/**
 * todo multi-line
 *  
 */

2
Дякую за відповідь. Це було б добре, якби всі рядки в блоці належали до задачі і були б виділені синім кольором. Але це найближче, що ми маємо на даний момент.
jhegedus

5

Ви можете використовувати FIXME та TODO, використовуючи вкладки наступним чином

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

Для отримання додаткової інформації зверніться до документації


3

Спираючись на відповідь NonGrate:

Перейдіть до налаштувань, знайдіть налаштування TODO і замініть існуючий запис завдання " \ btodo \ b. * " На:

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

Результат:

введіть тут опис зображення

Ви повинні використовувати * /, щоб закрити виділення.

Він використовує 2 шаблони:

  1. (\ btodo \ b. ) фіксує будь-який рядок зі словом todo
  2. (/ \ * (\ * (?! /) | [^ *]) * \ btodo \ b (\ * (?! /) | [^ *] * \ * /) фіксує багаторядкові коментарі, що починаються з / * та закінчується * /

Будь-які інші комбінації можуть не спрацювати.

Примітка: Вам доведеться замінити існуючий регулярний вираз, щоб уникнути того, щоб у списку завдань з'являлося кілька екземплярів одного і того ж елемента завдання.


Просто використовував це в IntelliJ 2017.1.3 на Mac, і він чудово працював. Дякую!
yokeho

2
У поточній Android Studio це не працює, як сказав @Jeremy вище ... але працює з використанням / ** тестування перед тестуванням TODO після * /
Ковервер

3
ПОПЕРЕДЖЕННЯ: Це просто розбиває IntelliJ та Android Studio на мільярд частин. Він має рекурсію RegEx, що вважається майже гріхом у розробці Java через те, як компілюються вирази RegEx і як легко ви можете викликати SO (що справді це спричиняє).
mradzinski

-1

Цей регулярний вираз працює для мене:

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

В основному він шукає наступне:

  • TODO або TODO ключового слово необов'язково суфікс квитка / видача ідентифікатор в дужках і будь кількістю символів після одного пробілу.
  • Коментар до Java із декількох рядків, що починається з / *, за яким слід будь-яка кількість пробілів, а потім умови, описані в однорядковому описі вище. Він закінчується, коли знаходить * / у будь-якому з наступних рядків.

Однорядкові приклади:

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

Багаторядкові приклади:

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

/* TODO[SAO-13]
 * a very important message
 * another thing
*/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.