Что нового в IntelliJ IDEA 2022.1

В IntelliJ IDEA 2022.1 появился Dependency Analyzer, который упрощает управление зависимостями и разрешение конфликтов. Кроме того, мы обновили мастер создания проектов и предлагаем более удобный способ просмотра уведомлений в IDE. Рассказываем об этих и других важных изменениях.

Главное

Dependency Analyzer

Dependency Analyzer

Новый инструмент Dependency Analyzer позволяет получить подробную информацию обо всех зависимостях Maven и Gradle, используемых в проектах и подпроектах. Он помогает находить и разрешать конфликты зависимостей, отфильтровывать идентичные зависимости, смотреть, в каких библиотеках они содержатся, а также легко переходить к корректным конфигурациям сборки.

Улучшенный мастер создания проектов

Мы переработали интерфейс мастера New Project, чтобы упростить создание проектов. Теперь можно быстро запустить пустой проект, а также использовать предварительные настройки для Java, Kotlin, Groovy и JavaScript. Если вы работаете над более сложными проектами, воспользуйтесь генераторами.

Новое окно <i>Notifications</i>

Новое окно уведомлений

Вместо Event Log появилось новое окно Notifications. В нем удобно просматривать важные уведомления и полезные предложения в упорядоченном виде. Подробнее

Взаимодействие с IDE

Maven Archetype в мастере создания проектов

В обновленном генераторе проектов Maven Archetype в мастере New Project появилась функция поиска по мере ввода при просмотре архетипов, а также возможность управления каталогом при создании модуля и ввода необходимых свойств по архетипам.

Улучшенные встроенные подсказки

Мы улучшили встроенные подсказки Code Vision, которые сообщают полезную информацию о вашем коде прямо в редакторе. Теперь они показывают производные типы, использования, авторов кода и связанные проблемы. По умолчанию все метрики включены, отключить их можно в настройках Inlay Hints. Настройки также были обновлены и получили новый интерфейс.

Равные вкладки в режиме Split

Теперь в режиме Split вкладки можно сделать одинаковыми по ширине. Для этого в меню Settings | Advanced Settings | Editor Tabs выберите опцию Equalize proportions in nested splits.

Экспорт UML-диаграмм в другие форматы

Экспорт UML-диаграмм в другие форматы
Ultimate

В новой версии диаграммы можно экспортировать в форматах yEd (.graphml), JGraph (.drawio), Graphviz (.dot и .dot с позициями), Mermaid (.md), Plantuml, а также в файлы .uml IntelliJ IDEA. Благодаря этому их можно использовать в сторонних инструментах.

Обновленный диалог Structural Search and Replace

В диалоге Structural Search and Replace теперь отображается список всех шаблонов, чтобы между ними было проще переходить. Кроме того, появилась иконка Pin Dialog и изменилось положение флажков Injected code и Match case.

Безопасность

Плагин Package Checker
Ultimate

IntelliJ IDEA 2022.1 can now detect vulnerabilities in Maven and Gradle dependencies used in your projects by checking across the Checkmarx SCA Database and the National Vulnerability Database, thanks to the Package Сhecker plugin that is bundled with IntelliJ IDEA Ultimate.

Подробнее

Редактор

Выполнение команд из Markdown-файлов

Выполнение команд из Markdown-файлов

Если вы работаете с файлом Markdown, в котором есть команды, их можно выполнить прямо из файла, используя специальные иконки на полях редактора.

Копирование фрагментов кода из файлов Markdown

Копирование фрагментов кода из Markdown-файлов

Для Markdown появилось действие Copy code snippet, позволяющее в один клик скопировать данные в буфер обмена.

Обновленная плавающая панель инструментов в редакторе Markdown

Мы переработали плавающую панель инструментов в Markdown-редакторе: теперь с ее помощью можно создавать списки, а в выпадающем меню выбирать стили заголовков. Вы также можете сами выбирать, что должно быть на этой панели.

Переформатирование кода в режиме LightEdit

Переформатирование кода в режиме LightEdit

Теперь в режиме LightEdit вам доступно больше возможностей без создания и открытия проекта. В новой версии можно переформатировать код, не загружая проект.

Новая инспекция Incorrect formatting

Новая инспекция Incorrect formatting

Мы добавили инспекцию Incorrect formatting: если форматирование файла не соответствует настройкам стиля кода, IDE сообщит об этом.

Улучшения форматирования

Чтобы соблюсти единство форматирования кода, в параметр Add a space at line comment start добавлен флажок Enforce on reformat, который ставится автоматически. По умолчанию он доступен для Java, Kotlin и Groovy и изменяет только комментарии к строкам, которые начинаются с буквенно-цифровых символов.

Поддержка режима Dry run в инструменте форматирования из командной строки

Инструмент форматирования из командной строки поддерживает режим Dry run для проверки файлов проекта. Если файл необходимо отформатировать, то программа завершится с ненулевым кодом возврата.

Java

Поддержка Java 18

В IntelliJ IDEA 2022.1 есть поддержка новых возможностей Java 18, вышедшей в марте этого года. IDE поддерживает сниппеты, изменения сопоставления с образцом для switch-выражений и многое другое. Подробнее

Декомпилятор Java

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

Расширенная поддержка JUnit 5

Мы добавили поддержку возможностей, появившихся в JUnit 5.7, в том числе аннотаций @EnabledIf/DisabledIf, @NullSource/EmptySource и @TempDir.

Обновленный шаблон Surround with try/catch

Обновленный шаблон Surround with try/catch

Шаблон Surround with try/catch теперь повторно выдает исключение, обернутое в RuntimeException, а не пропускает его.

Kotlin

Поддержка Kotlin 1.6.20

IntelliJ IDEA 2022.1 поддерживает Kotlin 1.6.20, так что теперь в IDE доступны все новые возможности языка, включая поддержку параллельной компиляции, прототип контекстного ресивера и улучшения в использовании общего кода на разных платформах. Подробнее

Оптимизация производительности при работе с Kotlin

Оптимизация индексации пакетов значительно повысила скорость работы многих функций IDE: автодополнения, подсветки и операций, связанных с поиском ссылок. Количество и область операций повторной индексации после изменения кода также сократились.

Улучшения отладчика

Мы внесли несколько улучшений в функцию Smart Step Into, используемую при отладке Kotlin-проектов. Кроме того, исправлен ряд проблем с точками останова.

Интеграция с Kover

To ensure better Kotlin code coverage, the Kover plugin has been integrated with IntelliJ IDEA.

Groovy

Плагин Package Checker

Поддержка постфиксных шаблонов для Groovy

В новой версии автодополнение кода для Groovy поддерживает большинство Java-образных постфиксных шаблонов, таких как arg, cast, for, iter, nn, notnull, null, not, throw, try, var, par, sout, serr, while, new, reqnonnull и return.

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

Поддержка микросервисов Go
Ultimate

IntelliJ IDEA Ultimate поддерживает микросервисы Go, обеспечивая такие возможности, как URL-адреса, конечные точки, Search Everywhere и иконки на полях редактора. Возможности доступны после установки плагина Go и в настоящее время работают только с функциями стандартной библиотеки. Подробнее

Улучшенный анализ кода для Spring Data Mongo
Ultimate

Теперь при работе со Spring Data MongoDB IntelliJ IDEA подсвечивает запросы JSON, предлагает варианты автодополнения для операторов и полей документа, а также обеспечивает переход к окну Database от сопоставленных объектов.

Улучшенная поддержка файлов .proto

Улучшенная поддержка файлов .proto
Ultimate

Появилось новое intention-действие для файлов .proto: оно добавляет отсутствующие выражения импорта для неразрешенных ссылок на сообщения. После добавления отсутствующих выражений импорта IDE предлагает варианты автодополнения для ссылок на сообщения.

Поддержка gRPC reflection

Поддержка gRPC reflection
Ultimate

IntelliJ IDEA Ultimate позволяет выполнять запросы и пользоваться автодополнением для имен сервисов и методов прямо из работающего инстанса сервера. The project does not need to contain .proto files, but the server should support gRPC reflection.

Усовершенствования в поддержке Thymeleaf

Усовершенствования в поддержке Thymeleaf
Ultimate

В новой версии IntelliJ IDEA Ultimate улучшена поддержка Thymeleaf: меньше ложных срабатываний инспекций, более высокая производительность IDE при редактировании шаблонов Thymeleaf, а также отрегулированные уровни инспекций и подсветки для корректной отправки уведомлений.

Автодополнение в конфигурационных файлах Helidon
Ultimate

В IntelliJ IDEA Ultimate улучшена поддержка фреймворка Helidon. Теперь IDE предлагает автодополнение для ключей конфигурации в файлах properties и .yaml, а также поддерживает действия Go to Declaration и Quick Doc.

Системы сборки проектов

Обновленный индикатор выполнения для Gradle

Обновленный индикатор выполнения для Gradle

Мы добавили индикатор выполнения процессов Gradle, таких как, например, скачивание зависимостей и импорт артефактов. Он позволяет следить за тем, что происходит с файлами, и примерно понимать, когда процесс завершится.

Поддержка отдельных тестовых модулей в плагине компилятора Maven

Поддержка отдельных тестовых модулей в плагине компилятора Maven

Мы добавили экспериментальную функциональность в плагин компилятора Maven. Теперь можно отдельно установить уровни языка для исходных наборов производственных и тестовых данных. Чтобы включить этот параметр, перейдите в меню Preferences/Settings | Build, Execution, Deployment | Build Tools | Maven | Importing.

VCS

Информация об авторе кода во встроенных подсказках

Информация об авторе кода во встроенных подсказках

Мы обновили функцию Code Vision, и теперь IntelliJ IDEA может сразу показывать информацию об авторе кода, опираясь на историю системы контроля версий. Встроенные подсказки Code Author включены по умолчанию в меню Preferences / Settings | Editor | General | Inlay Hints | Code Vision.

Обновленное действие Annotate with Git Blame

Действие Annotate with Git Blame

Чтобы анализировать внесенные изменения было проще, мы улучшили работу действия Annotate with Git Blame. При наведении курсора на аннотацию IDE подсвечивает различия между строками прямо в редакторе, а при нажатии на аннотацию открывает Git-лог.

Обновленная панель Commit Details в окне Git

Обновленная панель Commit Details в окне Git

На панели Commit Details теперь содержится информация о подписях GPG и статусе сборки. Раньше эти данные можно было посмотреть только в Git-логе.

Новый интерфейс <i>Git File History</i>, независимый от индексирования

Новый интерфейс Git File History, независимый от индексирования

Новый интерфейс окна Git File History теперь не зависит от процесса индексирования: данные отображаются, даже если индексирование лога выключено.

Предлагаемые изменения в комментариях к пул-реквестам

Предлагаемые изменения в комментариях к пул-реквестам

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

Выбор инструментов сравнения и слияния в зависимости от типа файла

Выбор инструментов сравнения и слияния в зависимости от типа файла

IntelliJ IDEA 2022.1 позволяет указать разные внешние инструменты для просмотра различий и слияния изменений в зависимости от типа файла. Их можно настроить в меню Settings / Preferences | Tools | Diff & Merge | External Diff Tools.

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

Единая конфигурация профилировщика на основе Async Profiler
Ultimate

Добавлена новая конфигурация профилировщика: IntelliJ Profiler. Она объединяет возможности Async Profiler и Java Flight Recorder. Тем самым мы приблизились к своей цели — созданию универсального профилировщика для всех платформ.

Отладчик

Действие Reset Frame

Действие Reset Frame

В представлении Frames в окне Debugger с панели инструментов убрано действие Drop Frame. Вместо него появился внутристрочный значок Reset Frame.

Названия вкладок

Названия вкладок

Названия вкладок в окне Debugger по умолчанию теперь скрыты — так в окне больше свободного пространства. Чтобы отобразить их и поменять местоположение, используйте опцию Show Tab Labels в меню Layout Settings.

Тестирование

Улучшения редактора объектов страницы

В плагине Selenium UI Testing существенно улучшен редактор объектов страницы. Мы оптимизировали работу и обновили интерфейс, уменьшив количество отвлекающих элементов. Элементы веб-страницы можно мгновенно добавить в код, не выходя из редактора, а затем продолжить работу. Кроме того, при добавлении нового элемента страницы в код можно выбрать тип селектора.

Новый мастер Page Object

В мастере Page Object при создании нового класса объекта страницы можно выбрать язык и фреймворк автоматизации тестирования. Мы обеспечили доступ к мастеру из любого места в коде, где в качестве зависимости указана библиотека Selenium. Если вы хотите попробовать автоматическую генерацию объектов страниц с различными фреймворками и пользовательскими шаблонами, не создавая новый файл, рекомендуем воспользоваться режимом песочницы: Tools | Open Selenium Page Object Playground.

Kubernetes

Редактирование ресурсов в кластере

Редактирование ресурсов в кластере
Ultimate

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

Изменение пути к kubectl

Изменение пути к kubectl
Ultimate

При необходимости вы можете указать путь к kubectl вручную. Для этого перейдите в Settings / Preferences | Build, Execution, Deployment | Kubernetes | Path to kubectl executable.

Перенаправление портов в окне Services

Перенаправление портов в окне Services
Ultimate

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

Действие Describe Resource в окне Services

Действие Describe Resource в окне Services
Ultimate

Для всех ресурсов в окне Services доступно новое действие Describe Resource. Его можно вызвать из контекстного меню или использовать значок на панели инструментов.

Поддержка функции Events в кластере
Ultimate

События кластера теперь показываются в отдельном узле в окне Services. Чтобы посмотреть события для конкретного пода, вызовите для него действие Describe Resource и посмотрите в результатах раздел Events.

Поддержка werf
Ultimate

Мы добавили базовую поддержку файлов werf.yaml и соответствующих шаблонов Helm, включая автодополнение кода, инспекции, быстрые исправления, рефакторинги и переименования для .Values.werf.image.*, а также валидацию некоторых полей, таких как boolean и int.

Поддержка импорта дочерних значений для Helm

Поддержка импорта дочерних значений для Helm
Ultimate

Новая версия IntelliJ IDEA Ultimate поддерживает импорт дочерних значений с помощью настроек import-values для автодополнения и навигации по встроенным объектам в шаблонах.

Docker

Обновленное окно Services

Обновленное окно Services

Готовя версию 2022.1, мы значительно переработали интерфейс Docker в окне Services. Изменения коснулись настроек контейнеров, образов, сетей и томов.

Поддержка Docker Compose в Run Targets

Добавлена поддержка Docker Compose в Run targets. Например, для запуска приложения Spring Boot в группе контейнеров Compose перейдите к конфигурации запуска и создайте цель Compose с помощью Manage targets. После этого можно запустить приложение.

Поддержка Docker Registry V2

Поддержка Docker Registry V2

Добавлена поддержка Docker Registry HTTP API V2, который используется с Docker 1.6 и более поздними версиями. Он позволяет создавать простые и защищенные паролем реестры Docker V2, а также выполнять стандартные действия: просматривать, отправлять и извлекать образы.

Удаленная разработка

Дополнительные настройки удаленных серверов
Ultimate

Добавлен виджет Backend Control Center для удаленной разработки. Он показывает загрузку ЦП и памяти, объем дискового пространства и другие параметры, необходимые для отслеживания состояния бэкенда.

Новая настройка безопасности позволяет использовать переадресацию ключа SSH для аутентификации доступа к Git-репозиториям с удаленной машины. Другой вариант — использовать вспомогательное приложение SSH-агента.

Теперь можно указать путь скачивания и точное местоположение бэкенда IDE на удаленной машине.

Новые возможности локального тонкого клиента

Новые возможности локального тонкого клиента
Ultimate

Новая версия JetBrains Client поддерживает больше редакторов файлов: теперь вы можете работать не только с текстовыми документами, но и с изображениями в формате PNG, UML-диаграммами, файлами Jupyter Notebook и ресурсами разметки Android.

В меню на полях редактора добавлено действие Run with coverage и окно Profiler. В контекстное меню теперь включены окна Maven и Gradle, а также добавлены удобные пункты подменю.

Кроме того, мы улучшили функционал отладчика и добавили много действий для удобного анализа кода при удаленной разработке.

Инструменты для работы с базами данных

Копирование нескольких объектов

Копирование нескольких объектов
Ultimate

Теперь можно выбрать сразу несколько таблиц и скопировать их в другую схему. Выберите таблицы, которые нужно скопировать, и нажмите F5, чтобы открыть диалог экспорта. При экспорте отдельной таблицы можно настроить соответствие столбцов, а также изменить DDL новой таблицы.

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

MongoDB: редактирование полей в результатах

MongoDB: редактирование полей в результатах
Ultimate

Теперь редактировать результаты в коллекциях MongoDB так же просто, как в реляционных базах данных. Кроме того, можно редактировать наборы результатов, полученные с помощью .find(). Это сработает, даже если после .find() были выполнены методы курсора, меняющие результат, например sort() или limit().

Отмена выполняемых запросов

Отмена выполняемых запросов
Ultimate

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

Отмена соединения без деактивации источника данных

Отмена соединения без деактивации источника данных
Ultimate

Теперь можно отменить создание соединения, не деактивируя источник данных. Если нажать кнопку Cancel во время создания соединения, процесс будет остановлен, и появится сообщение Connection canceled. Подробнее

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

Улучшенная поддержка Next.js

Улучшенная поддержка Next.js
Ultimate

Благодаря встроенной поддержке React все основные функции IDE уже должны были работать в проектах Next.js. Мы добавили поддержку страниц — одной из наиболее важных вещей, специфичных для Next. js. IDE разрешает пути, использованные в свойстве href компонентов Link вашего кода, а также в теге form и других тегах. Автодополнение, навигация и рефакторинги тоже работают.

Поддержка Volta

Поддержка Volta
Ultimate

Мы добавили интеграцию с Volta, менеджером JavaScript-инструментов, IntelliJ IDEA 2022.1 автоматически распознает Yarn и npm, установленные с помощью Volta.

Scala

Расширенная поддержка Scala 3

Расширенная поддержка Scala 3

В новой версии появилось автодополнение методов extension. Кроме того, редактор предлагает автоматически импортировать методы extension и инстансы given. Новые инспекции для модификатора infix и аннотации @targetName помогут соблюсти стиль кода. Мы значительно повысили производительность инструмента считывания .tasty, и теперь скорость индексации библиотек Scala 3 увеличилась до двух раз.

Упрощенное создание Scala-проектов

Упрощенное создание Scala-проектов

Настроить новый Scala-проект стало проще. В обновленном мастере New Project можно на одном шаге выбрать сразу JDK проекта, нужную систему сборки и версию Scala.

Экспорты псевдонимов

Экспорты псевдонимов

Большинство объектов в Scala — псевдонимы, в том числе String, Seq, List, Set и Map. Это важно для подсветки синтаксиса, GoTo, Quick Documentation, Quick Definition, Find Usages, Optimize Imports и других функций IDE, поскольку они работают с псевдонимами, а не с самими определениями. Для удобства редактор теперь обрабатывает псевдонимы в стандартной библиотеке как прозрачные экспорты, то есть, например, List воспринимается как scala.collection.immutable.List, а не scala.List.

Инспекция Unused declaration

Инспекция Unused declaration

Раньше обнаружение неиспользуемых деклараций ограничивалось только привязками private. Теперь инспекция Unused declaration поддерживает публичные привязки, введенные классами, методами, переменными, параметрами и т. п.

Встроенные подсказки для диапазонов

Обновления отладчика Scala

Мы постарались переработать отладчик Scala и упростить его использование: улучшили обработку objects, параметров первичного конструктора, классов (class) значений, Array, lazy val и коллекций, а также доработали вычисление выражений.

Интеграция со Space

Мгновенная и отложенная публикация комментариев во время код-ревью

Мгновенная и отложенная публикация комментариев во время код-ревью

Теперь при ревью изменений кода в IDE можно выбрать, когда размещать комментарий.

  • Post Now — комментарий будет опубликован сразу, и автор кода, а также другие участники ревью тут же получат уведомление.
  • Save as Draft — все комментарии сохраняются и публикуются одновременно, когда вы одобряете изменения или ждете ответа.

For more details, check out this blog post.

Сочетания клавиш для код-ревью

Сочетания клавиш для код-ревью

Мы улучшили интерфейс код-ревью, выведя на экран используемые сочетания клавиш. Для перехода на новую строку при наборе комментария нажмите Enter. Ctrl+Enter — чтобы сохранить или опубликовать комментарий.