Можно ли использовать многострочные задачи в IntelliJ IDEA?


92

Если да, то как?

Если нет, есть ли обходной путь для получения аналогичной функциональности?

РЕДАКТИРОВАТЬ:

Я имею в виду примерно следующее:

// TODO line1
// line2
// line3

и line1, line2, line3 принадлежат одному TODOи тому же и выделяются синим цветом.


Ответы:


52

Нет, пока нет.

Эта функция обсуждалась , но еще не реализована.

ИЗМЕНИТЬ / ОБНОВИТЬ:

Реализовано в версии 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


62

Это поддерживается с 2018.3 .

Многострочные комментарии TODO

Многострочные комментарии TODO

IntelliJ IDEA 2018.3 теперь поддерживает многострочные комментарии TODO , теперь первая и все последующие строки комментариев TODO выделены в редакторе и перечислены в окне TODO Tool . Просто добавьте отступ, начиная со второй строки многострочного комментария TODO, и IDE отличит его от обычного комментария.


Спасибо! Очень полезно. Единственная проблема в том, что когда я нажимаю Ctrl-Alt-L для форматирования файла, отступ удаляется. Есть идеи, как это предотвратить?
Gep 01

27

В своих настройках я использую такое регулярное выражение для многострочного TODO:

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

Проблема только в том, что он не выделяет последние символы * / многострочного комментария. Если кто-то может это решить, было бы здорово!


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

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

5

Вы имеете в виду это? списки задач

/**
 * todo multi-line
 *  
 */

2
Спасибо за ответ. Было бы хорошо, если бы все строки в блоке принадлежали задаче и были бы выделены синим цветом. Но это самое близкое, что у нас есть на данный момент.
jhegedus


3

Основываясь на ответе NonGrate:

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

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

Результат:

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

Вы должны использовать * /, чтобы закрыть выделение.

Он использует 2 шаблона:

  1. (\ btodo \ b. ) захватывает любую строку со словом todo
  2. (/ \ * (\ * (?! /) | [^ *]) * \ btodo \ b (\ * (?! /) | [^ *] * \ * /) захватывает многострочные комментарии, начинающиеся с / * и заканчивается на * /

Любые другие комбинации могут не работать.

Примечание. Необходимо заменить существующее регулярное выражение, чтобы в списке задач не появлялось несколько экземпляров одного и того же элемента задачи.


Просто использовал это в IntelliJ 2017.1.3 на Mac, и он отлично работал. Благодаря!
yokeho 02

2
В текущей Android Studio это не работает, как сказал @Jeremy выше ... но он работает с использованием / ** тестирования перед тестированием TODO после * /
Codeversed

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.