Java-инспекции в IDEA 2023.2

Это ретроспективный пост про Java-инспекции IntelliJ IDEA 2023.2, в преддверии 2023.3 (которая сейчас в состоянии Beta 2). Несмотря на то, что эта версия вышла еще в июле, не все в точности помнят, что же там произошло, и какую версию они вообще используют.

А между тем, там не всё хорошо. Например, баги с тэгом @snippet до сих пор не поправили.

Чтобы самому воспроизвести новости из ченжлога - нужно набирать много кода и проверять их. Это лень, это мы не делаем. Вместо этого, мы смотрим этот короткий пост с PNG-картинками, показывающими основные фишки.

Итак, что нового?

В свежей Идее улучшился и расширился набор Java-инспекций, позволяющих быстрее искать косяки и повышать качество кода.

Инспекция Incorrect "MessageFormat" pattern предупредит тебя, когда ссылки внутри шаблона не походят на переданные аргументы.

Java-инспекции в IDEA 2023.2, image #1

Там же можно увидеть, что внутри MessageFormat не совпали кавычки и скобочки.

Java-инспекции в IDEA 2023.2, image #2

Идея научилась работать с прямым вызовом ChronoField и ChronoUnit и пытается предложить более точные варианты, чтобы сделать код более красивым.

Было:

Java-инспекции в IDEA 2023.2, image #3

Стало:

Java-инспекции в IDEA 2023.2, image #4

А еще, мы увидим ошибку, если неподдерживаемые константы ChronoField и ChronoUnit используют вместе с LocalTime и LocalDateTime.

Java-инспекции в IDEA 2023.2, image #5

Коданализ IDE теперь понимает диапазоны для методов get и getLong классов LocalDateTime и LocalTime. Ты получаешь предупреждения о лишних вызовах, которые можно заменить на константу внутри подходящего диапазона.

Java-инспекции в IDEA 2023.2, image #6

IDEA умеет умно определять длинные методы, которые можно аккуратно разделить на отдельные приватные методы. Она сразу же предлагает почистить код от мусора.

Java-инспекции в IDEA 2023.2, image #7

Подсветка и переходы для форматирующих строк

Поставьте курсор на описание формата, и IDE подсветит соответствующий аргумент и все, что на него указывает. Чтобы прыгнуть с плейсхолдера под курсором на код, который ему соответствует, можно нажать Go To Declaration (Ctrl+B/⌘B).

Java-инспекции в IDEA 2023.2, image #8

Улучшенная поддержка тэга @snippet в Javadoc

Чтобы красиво отображать документацию, можно помечать код с помощью тэга @snippet.

Если изначальная запись выглядит как-то так:

Java-инспекции в IDEA 2023.2, image #9

То после нажатия кнопки рендеринга (слева вверху от комментария), оно выглядит вот так:

Java-инспекции в IDEA 2023.2, image #10

Эта форма записи поддерживает "регионы": можно сохранить кусок кода в отдельный файл и использовать его в документации.

Например, если изначальная запись выглядит так:

Java-инспекции в IDEA 2023.2, image #11

И мы сохранили сниппет в отдельный класс так:

Java-инспекции в IDEA 2023.2, image #12

То результирующий комментарий будет выглядеть вот так:

Java-инспекции в IDEA 2023.2, image #13

Важно, что сниппеты сейчас должны храниться в директории под названием snippet-files.

К сожалению, с этим связана проблема. Во-первых, сейчас создать такую директорию изнутри вьюхи Project нельзя, это неправильное имя пакета. Во-вторых, даже создав ее каким-то образом, переместить класс Snippets внутрь этой директории не получится, будет ошибка перемещения. Про это уже есть в трекере баги: раз, два.

Чёрт знает, как тестировали, и тестировали ли вообще эту фичу. Но сейчас есть чудесный обходный путь: нужно пойти в файловый менеджер (или в терминал), создать эту директорию самостоятельно, и переместить классы со сниппетами оттуда же как обычные файлы. Криво, но работает.

На сегодня пока всё, но там есть еще куча интересных вещей для освещения.

Источник

757 views·19 shares