IntelliJ IDEA 2023.2. Language Server Protocol, AI Assistant, IntelliJ Profiler в редакторе, GitLab merge requests, ftw

в 14:54, , рубрики: devops, intellij idea, java, javascript, jetbrains, jetstorm, Блог компании Failover Bar, Программирование
IntelliJ IDEA 2023.2. Language Server Protocol, AI Assistant, IntelliJ Profiler в редакторе, GitLab merge requests, ftw - 1

Только что вышла IntelliJ IDEA 2023.2. В этом релизе в IDE появилась куча интересных фичей и важных улучшений.

Вы можете скачать последнюю сборку с официального сайта, или из бесплатного приложения Toolbox, или из snap-пакетов для Ubuntu.

Этот релиз IntelliJ IDEA 2023.2 представляет вам AI-ассистента, вооруженного набором инструментов машинного обучения. IntelliJ Profiler показывает подсказки в редакторе, делая профилирование более интуитивным и иформативным. Еще, в этом релизе появилась интеграция с GitLab.

В том посте мы пробежимся по всем основным фичам IntelliJ IDEA 2023.2. В отличие от официального анонса, вся европейская политкорректность выкинута на свалку, автор перевода не видит никакой ценности в соблюдении повесточки.

Кроме того, в этот четверг в Питере будет встреча Javawatch, посвященная Java 21. Я прочитаю мини-доклад минут на 30 о новых фичах, и потом мы сможем все вместе собраться и за кружкой пива это обсудить. Анонс события в телеге, обсуждение в чате. Я бывший PMM в JetBrains Big Data и тимлид в Remote Development/Projector, а сейчас работаю над российским дистрибутивом Java - Axiom JDK.

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

  • В IntelliJ IDEA 2023.2 появился AI Assistant, который делает на основе машинного обучения штуки вроде автоматического написания комментариев, подсказки имен, генерации текста коммитов в гит, и тому подобное. Количество полезных фичей пока довольно ограниченное. Для начала работы, нужно установить плагин под названием AI Assistant и залогиниться в сервис JetBrains AI. Подробнее написано вот в этом посте.

  • IntelliJ Profiler научился показывать подсказки о перформансе прямо в редакторе, и это упрощает профилировку, резульаты проще интерпретировать, они подсвечены цветом в гаттере. Это достаточно очевидное изменение, и нет никаких разумных объяснений, почему этого не было сделано раньше.

  • Появилась интеграция с GitLab, как-никак это одна из самых популярных систем. Конкретно, теперь можно делать мердж-риквесты прямо из IDE. Подробности.

User Experience

  • Search Everywhere (вызывается через быстрое нажатие шифт-шифт или шифт-шифт-шифт, вы ведь в курсе об этой штуке?), теперь умеет искать текст.

  • Проектам можно назначать уникальные цвета и иконки, чтобы различать их внутри воркспейса. Ждём анимированные эмодзи :)

  • Меню "гамбургера" на основной панели инструментов пернеработали для Windows и Linux. Его элементы теперь отображаются горизонтально поверх панели, когда вы нажимаете кнопку гамбургера. Появилась опция автоматически превращать это меню в отдельный тулбар.

  • В панели Project теперь можно сортировать файлы по дате изменения.

  • Для пользователей нового интерфейса (так называемого New UI), теперь можно переключиться в тему Light with Light Header. В ней наконец-то цвета рамочек и всплывающих окон соответствуют цвету темы, и черный цвет не выжигает глаза. Пользователи New UI всё ещё должны страдать, но теперь меньше.

  • Используя полноэкранный режим New UI на mac OS, элементы управления окном отображаются как часть основной панели инструментов, а раньше это была плавающая панель.

  • В диалоге инспеций (Settings / Preferences | Editor | Inspections), реализована подсветка синтаксиса для шаблонов кода.

  • Для удобства пользователей Linux на десктопе (кто все эти люди?), нативная рамочка, отрисовываемая операционной системой, удалена из New UI, от этого интерфейс стал чище.

  • В панели Project, появилась опция Open Directories with Single Click, благодаря которой навигация по проекту ощущается более быстрой и отзывчивой.

  • Расширены возможности настройки главной панели New UI. Выпадающее меню позволяет быстро выбирать действия, которые хочется добавить на панель.

  • Обновленная секция Settings/Preferences | Plugins включает набор стандартных плагинов, список которых автоматически определяется в зависимости от специфики вашего проекта.

  • Переделан интерфейс для запуска и отладки в планели Services, чтобы ее внешний вид совпадал с виджетом Run/Debug.

  • Чтобы лучше управляться с несколькими конфигурациями запуска, реализована опциями запинить часто используемые конфигурации наверх виджета Run.

Java

  • Улучшены инспеции и их количество увеличилось, это позволяет поддерживать высокое качество кода и лучше находить возможные ошибки. Больше об улучшениях в анализаторе кода можно почитить вот в этом посте в блоге.

  • IntelliJ IDEA 2023.2 научилась лучше подсвечивать и перемещаться по форматирующим строкам.

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

  • IntelliJ IDEA 2023.2 может точно определить расположение метода в стектрейсе (текстовом отчете о нем), даже если номера строк недоступны или неправильно отображаются.

  • IntelliJ IDEA Ultimate лучше анализирует конкатенацию и интерполяцию SQL в Java и Kotlin, определяет потенциально опасные запросы, и тем самым защищает код от SQL-инъекций.

Scala

  • IntelliJ IDEA 2023.2 научилась лучше работать со Scala 3, включая поддержку enum-ов, улучшенный декомпилятор TASTy, и улучшенную отладку. В дополнение к этому, Universal Apply Methods из Scala 3 теперь нормально автодополняются, в редакторе появилась поддержка IArray и синтаксиса "fewer braces". Поддержка Scala 3 всё ещё крайне всратая и неюзабельная, но другой поддержки всё равно нигде нет, включая другие IDE.

  • Улучшилась поддержка Scala Build Tool (sbt).

  • Исправлено несколько багов в выводе типов.

  • Компилятором по-умолчанию выбран Zinc, поэтому заработала инкрементальная компиляция фичей из Scala 3, включая inline methods.

  • Улучшилось управление source и target директориями.

  • Улучшилось отображение ScalaDoc Quick Documentation. Подсвечиваются аннотации, кейворды и литералы. Для подсветки используется текущая цветовая тема, списки расширенных трейтов и классов выделяются на отдельные строки, подсвечиваются ключевые слова из Scala 3.

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

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

Run/Debug

  • При отладке реактивных приложений, можно вычилслять значения watch-ей и локальных переменных для типов Mono и Flux. Забавно, что в оригинальном чендлоге от JetBrains забыли написать, к какому языку это улучшение относится. Оставим это в качестве упражнения для внимательного читателя.

  • Автотестирование теперь совместимо с системами сборки Maven, Gradle и JPS.

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

  • Можно коммитить отдельные строки кода. Гениально.

Профилировщик

  • Attach IntelliJ Profiler и Capture Memory Snapshot теперь доступны в виде кнопок на панели Run.

  • По-умолчанию включен режим Wall-clock profiling mode, который ориентируется на суммарное время, проведенное внутри метода, включая время ожидания.

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

Весь список изменений ниже относится только к платной версии - IntelliJ IDEA Ultimate 2023.2.

(Как в популярном анкедоте Нет ножек - нет мультиков. Простите, вырвалось. 29 баксов или почти 3 тысячи рублей в месяц, между прочим).

  • Приложения для Tomcat можно запускать и отлаживать на Windows Subsystem for Linux (WSL).

  • gRPC запросы через Transport Layer Security (TLS) можно посылать через HTTP Client.

  • HTTP Client понимает спецификации Swagger и OpenAPI, и делает автодополнение внутри текста JSON-запросов.

  • Улучшена поддержка конфигураций Swagger Codegen. Диалог Edit Swagger Codegen Configuration проще настраивается, а конфигурации запуска доступны прямо из гаттера, без необходимости в проведеии дополнительных настроек.

  • Добавлен предпросмотр Redoc UI для файлов спецификаций OpenAPI и Swagger, включая YAML и JSON. Можно переключаться между интерфейсами Redoc и Swagger внутри IDE.

  • Добавлено автодополение ключей в JSON для JavaScript-кода.

  • Можно переиспользовать общий JS-код для разных обработчиков запросов HTTP Client, достигается использованием импорта модулей.

  • Прямо в IDE можно посмотреть предпросмотр файлов PDF и HTML, которые получаются в результате отработки запросов HTTP Client.

  • HTTP Client CLI научилось работать с GraphQL API и поддерживаеть соединения с сервисами поверх WebSocket.

  • При создании конфигурации Spring Boot, полу VM options предоставляет автодополнение для ключей, используемых вместе с флагом -D.

  • Бины Spring Configuration не требуют отдельного процессора аннотаций, поэтому автодополнение и валидация свойств и YAML-коинфрураций работает сразу и из коробки.

  • Поддержка Spring AOP заработала вместе с Kotlin.

  • Упростилась работа со спецификацией AsyncAPI, потому что IDE научилось в валидацию схемы и автодополнение ссылок, в панелях Endpoints и Editor Preview.

  • Добавлено несколько инспеций для борьбы с "Norway problem", т.е неправильной интерпретации ключей в YAML-файлах, которые похожи на булевские переменные.

Docker

  • Появился предспросмотр файлов внутри image layers.

  • Теперь можно запускать Docker-конфигурацию до любой другой Run/Debug конфигурации, добавив её в блок Before Launch.

Kubernetes

  • В одном и том же проекте теперь можно иметь несколько kubeconfig файлов, что позволяет проще управлять несколькими кластерами или средами разработки.

  • Внутри панели Services появилась возможность смотреть логи деплойментов Kubernetes.

Инструменты сборки

  • Поддержка наисвежайшего Maven 4.0.0-alpha. Непонятно, кому это ужно, но ни в чем себе не отказывайте.

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

  • IntelliJ IDEA Ultimate 2023.2 умеет лучше автоматически форматировать код на JavaScript и TypeScript.

  • Заработала поддержка CSS nesting.

  • Vue Language Server (Volar) делает более точно подсказывает ошибки и информацию о типах, они доступны в быстрой навигации и документации.

  • Для React Hooks добавлено несколько Live Templates.

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

  • Упрощена настройка статического анализа, благодаря интеграции с JetBrains Qodana - умным движком статического анализа, созданного для работы со множеством пайплайнов CI/CD. Благодаря этому повяляется два преимущества. Во-первых, анализ настраивается в два клика, можно будет смотреть ошибки по всему проекту, ставить quality gates для своей любой системы CI/CD. Во-вторых, можно смотреть результаты анализа, запущенного на сервере, прямо внутри IDE. Подробней всё описано здесь.

Базы данных

  • Можно подключать Redis Cluster, и набор фичей внутри IDE будет такой же, как если бы вы работали с отдельным сервером.

  • Переделан визуальный интерфейс диалога миграции схемы.

  • На страничке Data Editor and Viewer появилось поле Time zone, чтобы настраивать тот часовой пояс, в котором будет отображаться результат работы datetime.

  • Реализована поддержка внешних баз данных и datashares в Redshift.

Полезные мелочи

  • LSP API позволяет работать со внешними серверами Language Server Protocol. Подробнее.

  • Плагин Big Data Tools распилен на кусочки. Теперь не нужно ставить огромный монолит, а можно поставить только то, что реально нужно. Доступные кусочки: KafkaSparkFlinkRemote File SystemsBig Data File ViewerZeppelin.

  • Объявлены устаревшими плагины для Struts2, Resin, tc Server, Play, Cloud Foundry. Новых версий этих плагинов больше никогда не появится.

  • Встроенный плагин для работы с Android теперь работает с фичами Android Studio Giraffe Beta 2, включая поддержку Android Gradle Plugin (AGP) 8.0.0. Важно, что все фичи, требующие входа в аккаунт Firebase, не поддерживаются (по понятной причине).

  • Значение хипа (-Xmx пожираемой Идеей оперативной памяти) по-умолчанию увеличилось до 2Gb. Типичная IntelliJ IDEA. Кстати, вы уже купили новый макбук?

  • Windows 7 больше не поддеерживается. Обновляйтесь до Windows 10 или страдайте.

Это был весь список полезных улучшений в IntelliJ IDEA 2023.2. Есть еще полный список, он есть в Release Notes, но зачем его читать обычному человеку (не разработчику IDE) - не ясно.

Ваш фидбек крайне нужен и полезен сообществу. Автор этого поста на Хабре всячески советует пройти в наш чат в Телеграме (tg:javawatch_chat) и поделиться возникшими идеями и болями. Также, можно подписаться на наш новостной канал (tg:javawatch) и Twitter (twi:javawatchru). И не забывайте зайти на митап по Java 21 в Failover Bar в Санкт-Петербурге (все анонсы Failover Meetup Space можно посмотреть в телеге tg:failoverbar).

Автор: Олег Чирухин

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js