Блог создается при поддержке Failover Bar и Anarchic Pro

Обзор возможностей IntelliJ IDEA 2023.2

November 16, 2023 . 7 минут на чтение статьиОбзор возможностей ||| IntelliJ IDEA 2023.2

Долгожданный LSP, встроенный AI-чат, апгрейд до Windows 10 и -Xmx2G

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

Идея раздулась до 2 гигабайт хипа, появилась поддержка LSP-серверов, и теперь вам нужно проапгрейдиться с Windows 7 минимум до Windows 10.

Из мелочей: появился чата с нейронкой "AI Assistant". Профилировщик научился отображать подсказки прямо в редакторе, а интеграция с GitLab позволяет меньше переключаться между браузером и IDE.

Хотите узнать подробней?

Ключевые изменения

  1. Появился AI Assistant, который добавляет чат с нейронкой под капотом, позволяя делать простые вещи вроде написания документации в комментариях, подсказывания хороших наименований, генерации названий коммитов, и так далее. Ничего супер интеллектуального он не делает. Доступ к возможностям AI пока что ограничен: он требует установки плагина и логина в сервис JetBrains AI. Дополнительная информация достуна по ссылке.
  2. Профилировщик отображает подсказки прямо в редакторе. Интерпретировать информацию можно по цветным аннотациям в гаттере.
  3. Интеграция с GitLab позволяет делать мердж-риквесты прямо из IDE. Подробности.

User experience

  1. Search Everywhere (Двойной ⇧ / Двойной Shift) теперь лучше ищет по тексту.
  2. Можно назначать заголовкам проектов уникальные цвета и загружать для них свои иконки. Если проектов в воркспейсе много, их куда легче находить. А еще, это красиво.
  3. Переработано гамбургерное меню в панели инструментов new UI на Windows и Linux. Когда нажимаешь на иконку, элементы отображаются горизонтально, перекрывая тулбар. Появилась опция превратить это меню в отдельный тулбар.
  4. Во вьюхе Project теперь можно сортировать файлы по времени изменения.
  5. Пользователи new UI получили альтернативную тему Light with Light Header. Это светлая тема, в которой синхронизированы цвета для загловков окнон, подсказок и всплывающих окон нотификаций.
  6. В полноэкранном режиме new UI на macOS, кнопки управления окном отображаются справа от главного меню, а не в перекрывающей панели, как раньше.
  7. В разделе настроек Settings / Preferences | Editor | Inspections реализована подсветка примеров кода.
  8. Для удобства пользователей Linux, нативный заголовок (который рисует операционная система) удален из new UI, это делает интерфейс более чистым и аккуратным.
  9. Во вьюхе Project, появилась новая опция Open Directories with Single Click, которая делает разворачивание и сворачивание директорий более быстрым и отзывчивым.
  10. Расширены возможности настройки главной панели new UI. Появилась выпадашка, в которой можно быстро выбрать элементы, которые появятся на тулбаре.
  11. В разделе настроек Settings/Preferences | Plugins появился набор рекомендуемых плагинов, который автоматически формируется на основе специфики открытого проекта.
  12. Переработан интерфейс запуска и отладки во вьюхе Services, теперь оно выглядит более похожим на виджет Run/Debug.
  13. В виджете Run теперь можно запинить ваши наиболее любимые конфигурации. Это полезно, когда у вас очень много конфигруаций и требуется функциональность "закладок".

Java

  1. Расширено количество инспекций для того, чтобы писать более высококачественный и правильный код. Подробнее об улучшения в коданализе есть отдельный пост.
  2. Появилась подсветка и навигация по форматирующим строкам.
  3. Улучшилась поддержка тэга @snippet в Javadoc-комментариях.
  4. Обнаружились новые способы применять рефакторинги сразу к нескольким элементам.
  5. Улучшено распознавание позиции метода в отчете о стектрейсе, даже если номера строк недоступны или разошлись с оригиналом.
  6. Более лучшее распознавание конкатенаций и интерполяции SQL в Java и Kotlin, ловить SQL-инъекции стало проще.

Scala

  1. Улучшенная поддержка Scala 3: нормальная поддержка enum-ов, улучшенный декомпилятор TASTy, более приличная отладка. Из дополнительных плюшек: более информативное дополнение для Universal Apply Methods, поддержка IArray в редакторе и более корректная работа с синтаксисом "fewer braces".
  2. Проекты на sbt стали работать чуть лучше.
  3. Починили несколько проблем с выводом типов.
  4. Zinc стал компилятором по-умолчанию. Это позволило полноценно поддержать инкрементальную компиляцию свежих фичей Scala 3, включая инлайн-методы.
  5. Улучшен интерфейс управления директориями source и target.
  6. Улучшилось отображение быстрой документации ScalaDoc. Включая подсветку аннотаций, ключевых слов и литералов, с использованием текущей выбранной темы оформления. Реализовано разделение списка трейтов и классов на несколько строк. Заработала поддержка ключевых слов из Scala 3.

Производительность

  1. Появилась новая утилита командной строки для быстрой сборки и заливки shared indexes. Это делается всего за несколько кликов, вместо написания кучи скриптов и сервисов. Подробности.

Run/Debug

  1. При отладке реактивных приложений, теперь можно быстро вычислять значения вотчей и локальных переменных для типов Mono и Flux.
  2. Автотестинг стал менее сырым, и теперь можно использовать его вместе с Maven/Gradle/JPS.

Контроль версий

  1. Появилась возможность коммитить только нужные тебе строки. Можно не коммитить куски кода целиком.

Профилирование

  1. Attach IntelliJ Profiler и Capture Memory Snapshot теперь запускаются отдельными кнопками в окне Run.
  2. По-умолчанию, теперь используется Wall-clock profiling mode (учитывается полное время, проведенное внутри метода, включая время ожидания).

Фреймворки и технологии

  1. Можно запускать и отлаживать приложения в Tomcat, запущенном через Windows Subsystem for Linux (WSL).
  2. Можно посылать gRPC-запросы по TLS с помощью HTTP Client.
  3. В HTTP Client появилась возможность разобрать спецификации Swagger и OpenAPI и показать соответствующее дополнение для тела JSON-запроса.
  4. В диалоговое окно Edit Swagger Codegen Configuration добавили кастомизаций, а конфигурации запуска теперь доступны из гаттера без дополнительных настроек.
  5. Появился предпросмотр Redoc UI для спецификаций OpenAPI и Swagger, включая YAML и JSON. Можно переключаяться между Redoc и Swagger UI прямо внутри IDE.
  6. Появилось автодополнение ключей JSON-файлов для JavaScript.
  7. Теперь можно вынести часто используемый JavaScript-код для обработчиков HTTP Client в отдельные модули и импортировать их.
  8. Предпросмотр PDF и HTML отображается рядом с результатами запросов HTTP Client.
  9. HTTP Client CLI позволяет взаимодействовать с GraphQL API и подключаться к сервисам через WebSocket.
  10. При нстройке конфигурации Spring Boot, поле VM options начало отображать автодополнение по ключам, которые можно перечислить с помощью во флага -D.
  11. Автодополнение и валидация свойств в YAML-конфигурациях Spring доступны сразу же, без настройки процессора аннотаций.
  12. Появилась поддежка Spring AOP для Kotlin.
  13. Работа с форматом спецификаций AsyncAPI стала проще: появилась валидация схемы и автодополнение по референсам. Появилась вьюха Endpoints и панель Editor Preview.
  14. Для борьбы с Норвежской проблемой появилась специальная инспекция, которая подсвечивает возможность неправильной интерпретации булевских значений в YAML.

Docker

  1. Можно смотреть файлы внутри слоев.
  2. Можно использовать одну Docker-конфигурацию перед другой, добавив ее в список Before Launch.

Kubernetes

  1. Несколько kubeconfig-файлов уживаются внутри одного проекта. Управлять несколькими кластерами или несколькими средами в разных кластерах стало куда проще.
  2. В окне Services теперь можно смотреть логи деплойментов.

Сборка

  1. Полная поддержка свежей версии Maven 4.0.0-alpha.

Веб-разработка

  1. Улучшенное форматирование ошибок в JS/TS.
  2. Поддержка CSS nesting.
  3. Vue Language Server (Volar) умеет в более лучшее определение ошибок и информацию по типам. Это используется для точных быстрых переходов и в окне быстрой документации.
  4. Появилось несколько новых live templates для React hooks.

Качество кода

  1. Статический анализ теперь можно делать через JetBrains Qodana – лубочно-самобытный статический анализатор, по легенде подходящий к любым популярным способам строить CI/CD. Подробности.

Базы данных

  1. При работе с кластером Redis стали доступны все те же настройки и фичи, что и при работе с одиночной нодой.
  2. Переделан интерфейс миграции схемы.
  3. В окне настроек Data Editor and Viewer появилось поле Time zone. Этот часовой пояс используется при отображении datetime.
  4. Добавлена поддержка внешних баз и шар в Redshift.

Разное

  1. Появилась поддержка LSP API, который нужен разработчикам плагинов, получающих информацию о языке из LSP-серверов. Подробности.
  2. Плагин Big Data Tools распилен на несколько микроплагинов, которые можно использовать по-отдельности. Так возникли новые сущности: Kafka, Spark, Flink, Remote File Systems, Big Data File Viewer и Zeppelin.
  3. Объявлены устаревшими и больше не будут обновляться плагины для Struts2, Resin, tc Server, Play и Cloud Foundry.
  4. Встроенный Android-плагин научился фичам Android Studio Giraffe Beta 2, включая поддержку Android Gradle Plugin (AGP) 8.0.0. Фичи, которые требуют логина в аккаунт Firebase, не поддерживаются.
  5. Максимальный размер хипа (-Xmx) увеличен до 2Gb.
  6. Windows 7 объявлена устаревшей. Чтобы продолжать пользоваться Идеей, нужно обновлиться до Windows 10 и выше.

Это были все наиболее важные изменения. Полный список изменений есть в release notes (но вы практически точно не хотите на него смотреть).

Ваша обратная связь крайне важна для дайджестов Javawatch. Если вам есть чем поделиться — сразу пишите Олегу.



Не забывайте подписаться на наши ресурсы, там есть ништяки:

  • CodCraft - Youtube-канал от автора этого гайда
  • Оправдания от Олега - Telegram-чат автора (общий, про всё на свете)
  • Javawatch - Telegram-канал про Java
  • Telegram-канал Failover Bar - единственный в Санкт-Петербурге (а может, и в России вообще) бар для разработчиков. Мы здесь постоянно встречаемся и разговариваем про Java.