Привет, Хабр!
Представляем IntelliJ IDEA 2021.3 — последнее большое обновление в 2021 году! Новую версию можно скачать с сайта JetBrains или через Toolbox App. Кроме того, можно обновиться из самой IDE или с помощью snap-пакета, если вы являетесь пользователем Ubuntu.
Вас ждет много новых функции и улучшений, чтобы работать с IntelliJ IDEA стало еще удобнее. В том, что касается качества, мы уделили особое внимание вашим комментариям в баг-трекере. Если у вас возникнут любые проблемы с этой версией, пожалуйста, сообщайте нам об этом.
Как всегда, подробную информацию обо всех новых возможностях вы найдете на странице «Что нового». В этом посте, мы хотим кратко рассказать вам о главных функциях и улучшениях, вошедших в IntelliJ IDEA 2021.3.
Главное
В этом релизе мы представляем возможности удаленной разработки (бета). Теперь вы можете подключаться к удаленному компьютеру, на котором запущен бэкенд IDE, и работать над размещенным там проектом, как если бы он находился на локальной машине. Чтобы воспользоваться этой функцией можно с начального экрана IntelliJ IDEA или скачав JetBrains Gateway через Toolbox App.
Добавлен новый, более быстрый способ диагностики и устранения проблем в работе IDE: действие Repair IDE... в меню File.
Действие Smart Step Into теперь работает с кодом Kotlin. Оно позволяет выполнить отладку выражения с цепочкой вызовов методов и лямбд, подсвечивая те методы и лямбды, в которые можно зайти.
Отладчик умеет находить inline-функции Kotlin и показывать их вызовы на панели трассировки стека.
Новая инспекция Constant conditions позволяет IntelliJ IDEA сообщать о нетривиальных условиях и значениях, которые должны всегда являться истинными, ложными или нулевыми. Она работает так же, как аналогичная инспекция для Java.
Редактор
Размер шрифта можно изменить во всех вкладках одновременно с помощью сочетания ⌘+колесико мыши в macOS и Ctrl+колесико мыши в Windows и Linux.
В новой версии удобно вставлять таблицы в файлы Markdown.
Предварительный просмотр теперь доступен для большинства intention-действий и быстрых исправлений в Kotlin. Если предпросмотр не поддерживается, отображается HTML-описание.
Работать со вкладками редактора стало проще. Чтобы получить доступ ко всем действиям на вкладках, просто нажмите на три точки в правом верхнем углу панели вкладок.
Взаимодействие с IDE
При нажатии клавиши F3 в macOS или F11 в Windows и Linux отмеченные файлы, папки и классы отобразятся в новом окне Bookmarks. Подробнее можно узнать из этой статьи.
Мы добавили возможность разделять окно Run, используя вкладки. Благодаря этому можно одновременно запускать несколько конфигураций и видеть все результаты.
При поиске действий через Search Everywhere в IntelliJ IDEA используется машинное обучение для сортировки результатов.
Переработанный узел Empty Project в окне мастера создания проекта позволяет создать простой проект для работы с отдельными файлами разных типов и добавить в него классы Java и Kotlin.
Новый узел Multi-Module Project позволяет с нуля создать проект со сложной структурой.
Новая версия IntelliJ IDEA по умолчанию использует методы более высокого уровня в качестве объекта поиска, когда вы ищете использования реализации методов с помощью сочетаний клавиш ⌥ F7 в macOS или Alt+F7 в Windows и Linux.
В диалоге Show Usages теперь доступен предпросмотр исходного кода для найденных использований, а также можно изменить область поиска и посмотреть тип искомого элемента кода и количество найденных использований.
Режим специальных возможностей
Когда активен инструмент чтения с экрана, IDE больше не показывает всплывающее окно со списком окон инструментов и всплывающее окно быстрого просмотра документации, которые появлялись по наведению мыши.
Кроме того, мы устранили проблему с вызовом диалога Go to Declaration.
Поддержка режима специальных возможностей на macOS также была улучшена. Мы устранили ряд проблем с фокусом VoiceOver и дали инструментам чтения с экрана возможность находить пункты списка в мастере New Project при создании проекта.
Мы убрали некоторые подсказки со звуком, чтобы снизить количество отвлекающих факторов.
Java
В IntelliJ IDEA добавлена новая инспекция Non-safe string passed to a safe method. Она помогает предотвратить передачу небезопасных данных безопасным методам в проектах, использующих аннотации org.checkerframework.checker.tainting.qual. В числе проблем, которые находит эта инспекция, вставки SQL-кода и слабые места XSS.
Мы добавили две инспекции, которые помогут упростить код. Первая предлагает заменить collect(toList()) на .toList(). Ее можно использовать с Java 16 и более поздними версиями. Вторая предлагает заменить collection.addAll(List.of("x")) на collection.add(x), а map.putAll(Map.of("a", "b")) — на map.put("a", "b").
При вводе локальной переменной в Java больше не открывается всплывающее окно с настройками, закрывающее код, над которым вы работаете. Теперь открыть настройки можно с помощью значка шестеренки рядом с переменной или сочетанием клавиш⌥+⇧ +O в macOS или Alt+Shift+O в Windows.
При вызове рефакторинга Introduce parameter IDE спрашивает, где именно нужно заменить найденные вхождения. Когда вы выберете нужное, появится значок шестеренки. Нажав на него, можно будет настроить и другие параметры рефакторинга.
В диалоге Run/Debug Configurations можно задать classpath для отдельных конфигураций, выбрав Modify options | Modify classpath.
Kotlin
Новый рефакторинг позволяет извлекать константы в Kotlin.
Инспекцию Possibly blocking call in non-blocking context теперь можно настроить, она охватывает больше случаев и предлагает быстрое исправление.
Новые подсказки в редакторе с помощью математических знаков объясняют, что значат слова и символы в диапазонах.
В интерфейсе мастера создания проектов теперь есть подсказки для всех полей. Кроме того, мы удалили некоторые редко используемые шаблоны и добавили новый для создания приложений Compose Web, а также упростили настройку проекта.
JavaScript
Обновить npm-пакеты до новой версии можно прямо из редактора.
Улучшена работа автодополнения HTML-кода. Теперь при вводе имени тега или аббревиатуры и при вызове автодополнения IntelliJ IDEA сразу же показывает подходящие варианты.
Scala
Большое внимание при подготовке этого релиза мы уделили поддержке Scala 3. Мы добавили подсветку, навигацию и автодополнение для маркеров end, ключевых слов given, using и export, для мягких ключевых слов и «тихого» синтаксиса. Кроме того, инструмент чтения TASTy теперь может обрабатывать package objects, а также вариантность и связи в более высоких типах.
Перекрестно скомпилированные проекты Scala 3/Scala 2 можно открывать как проекты Scala 2.
Теперь плагин Scala поддерживает анализ потоков данных, что упрощает поиск ошибок в коде.
Для параметров компилятора Scala теперь работает автодополнение, и по каждому из них доступен быстрый просмотр документации.
Для диапазонов в Scala можно использовать встроенные подсказки.
SSH
Для конфигурации SSH можно указать прокси-сервер HTTP или SOCKS (Preferences/Settings | Tools | SSH Configurations).
Профилировщик
В версию IntelliJ IDEA Ultimate для Windows встроена поддержка Async Profiler 2.0.
Можно сравнить снэпшоты, чтобы проверить, дали ли изменения в программе ожидаемый эффект или привели к ухудшению.
Инструменты сборки
Конфигурации Maven были существенно переработаны. Все основные параметры теперь собраны в одном окне, а к дополнительным настройкам можно перейти по ссылке Modify options.
Можно сохранить настройки Maven для каждого проекта в файле .mvn/maven.config. Для этого перейдите в Preferences/ Settings | Build, Execution, Deployment | Maven и выберите Use settings from .mvn/maven.config.
Управление версиями
Функцию Checkout and Rebase onto Current можно использовать для удаленных веток.
Мы улучшили структуру настроек в меню Preferences/Settings | Version Control и упростили доступ к некоторым важным конфигурациям.
Разницу между коммитами теперь можно посмотреть в отдельном окне Changes слева от редактора.
Новое действие Push all up to here позволяет делать push коммитов, в которых вы уверены (остальные продолжат храниться локально).
Новая настройка Align Changes Highlighting упрощает восприятие информации на экране Diff: строки без изменений отображаются друг напротив друга. В результате вы четко видите, какой код был добавлен или удален.
Терминал
Новая функция поддержки API ConPTY для Windows решает ряд проблем, связанных со старой реализацией, и обеспечивает поддержку 24-разрядных цветов в терминале.
В терминале появилась поддержка опережающего ввода: IDE предсказывает, какие символы вы собираетесь вводить, и показывает их в светло-сером цвете.
Отладчик
Теперь поле Evaluate доступно прямо в окне Debug, и это самый удобный способ вычисления выражений.
Фреймворки и технологии
HTTP-клиент IntelliJ IDEA обеспечивает базовую поддержку gRPC-запросов, включая автодополнение кода и возможность создания gRPC-запросов прямо в HTTP-клиенте.
При тестировании приложений, выполняющих потоковую передачу данных в IntelliJ IDEA, больше не нужно ждать окончания потока: HTTP-клиент отображает результаты в реальном времени.
HTTP-клиент находит изображения в ответах и показывает их превью в консоли ответа.
В HTTP-клиенте можно настроить перенаправление вывода в заданный файл или директорию с помощью операторов >> и >>!.
Идентификаторы запросов можно добавлять либо в виде комментариев с использованием @name, либо в виде текста в первом разделителе (###).
Поддержан новый язык шаблонов Qute для проектов на базе Quarkus.
IntelliJ IDEA может находить спецификации OpenAPI, сохраненные в нескольких файлах и связанные с помощью $ref, и обеспечивает автодополнение.
Если добавить в зависимости проекта org.jetbrains:annotations:23.0.0, можно добавлять к классам и методам аннотации @Blocking и @NonBlocking. В результате IDE сможет находить блокирующие вызовы в неблокирующих контекстах, например, в корутинах Kotlin или в реактивном коде Project Reactor, RxJava и SmallRye Mutiny.
Улучшено обнаружение блокирующего кода в Spring и Java EE.
Диалог Run/Debug Configurations для проектов Spring Boot был переработан, и теперь все основные настройки находятся в одном окне, а к дополнительным параметрам можно перейти по ссылке Modify Options.
IntelliJ IDEA предлагает автодополнение кода в дополнительных файлах конфигурации (файлы properties или .yaml), если для ссылки на другой файл используется ключ spring.config.import.
В проектах Spring Boot поддерживается автодополнение кода и поиск использований ссылок на application.yaml в @Value, @Scheduled и Environment.getProperty().
Автодополнение методов запросов теперь работает и для запросов, объявленных как @NamedQuery в проектах Spring Data JPA. К определению @NamedQuery можно перейти щелкнув по иконке на полях редактора.
Теперь все инспекции CDI можно использовать в файлах Kotlin. Также доступны иконки CDI на полях редактора. С их помощью можно быстро перейти к точкам внедрения зависимости и кандидатам, фабрикам bean-компонентов и событиям.
Мы ускорили все процессы для диаграмм классов UML как в Java, так и в Kotlin. Среди других важных изменений — новая сетка, подсветка членов класса и всплывающее окно быстрого просмотра документации.
Интеграция со Space
Теперь вы можете создавать merge-реквесты и код-ревью для проектов в Space.
IntelliJ IDEA отмечает все непроверенные файлы синими точками, чтобы вы не пропустили важные изменения во время код-ревью.
Инструменты для работы с базами данных
Мы добавили возможность выбрать режим Aggregate для просмотра диапазона ячеек. Благодаря этому управлять данными стало удобнее и можно не отправлять лишние запросы.
В новой версии полностью поддерживается рабочий процесс создания источника данных DDL на основе реального. В настройках конфигурации данных появилась новая вкладка DDL mappings, на ней можно соотнести виртуальные источники данных с реальными.
Новое окно сравнения Database diff можно открыть из контекстного меню. Его интерфейс был улучшен, и оно четко отображает результат синхронизации в правой панели.
Мы ввели три уровня интроспекции баз данных Oracle, с разной скоростью выполнения. Чтобы изменить уровень интроспекции, воспользуйтесь контекстным меню.
Kubernetes
Значительно улучшено форматирование шаблонов Helm.
Стало гораздо проще работать с кодом, содержащим вставки шаблонов Go: мы добавили подсветку для блочных элементов Helm if, else, range, with и define.
Новая версия IntelliJ IDEA поддерживает подсветку вложенного кода на разных языках в ресурсах ConfigMap для ключей с расширениями .yaml, .json, .properties и т. п.
В окне Services появилась кнопка для повторения последней команды Helm.
Docker
В меню Preferences/Settings | Build, Execution, Deployment с помощью переключателя Minikube можно подключиться к Docker из Minikube.
Все доступные репозитории образов отображаются в окне Services в отдельных узлах. Кроме того, добавлена поддержка GitLab (registry.gitlab.com) и JetBrains Space (<username>.registry.jetbrains.space). Подробнее об изменениях в реестрах Docker читайте в этой статье.
Теперь подключиться к Docker можно быстрее: достаточно дважды щелкнуть по нужному узлу или нажать ⌘+Enter в macOS или Ctrl+Enter в Windows и Linux. Действие Start container вызывается этим же сочетанием клавиш.
При щелчке правой кнопкой на узлах Networks, Volumes, Containers или Images можно выбрать новое действие Clean up, и IDE удалит неиспользуемые объекты.
Мы добавили поддержку Compose V2. Благодаря этому команды Docker Compose можно вводить в форме docker compose, а не docker-compose (с дефисом).
Новая вкладка Layers в окне Services позволяет отслеживать содержимое слоев, размер файлов и команды, которые были использованы при создании образа.
В окне Services можно щелкнуть правой кнопкой на контейнере и выбрать Image | Save as a new Image, чтобы сохранить на сервере предварительно настроенный локальный контейнер и использовать его позднее.
В новой версии появилась поддержка Podman — еще одного способа управления подами, контейнерами и образами. Прежде чем использовать Podman в IDE, нужно настроить подключение.
Тестирование
Одно из важнейших обновлений в Selenium UI Testing плагине - это возможность не только создавать новые Page Object классы, но и редактировать существующие с помощью продвинутого визуального редактора со встроенным браузером.
Для тех кто предпочитает управлять тестами, чеклистами и даже тест ранами прямо в проекте при помощи специальных Markdown файлов (Local TMS), теперь появилась возможность составлять иерархию тест-ранов. При этом каждый тест-ран будет агрегировать в себе информацию со всех дочерних тест-ранов.
Также мы добавили поддержку форматирование в окне предпросмотра. Описания тест-кейсов и шагов всегда писались на Markdown, но теперь форматирование можно просматривать и менять прямо в окне предпросмотра TMS.
Другие возможности
Добавлена поддержка Android Studio Arctic Fox 2020.3.1.
Появилась поддержка Groovy 4, включая полнофункциональный анализ кода, инспекции и intention-действия. Поддерживаются также дополнительные возможности, например switch-выражения и sealed-типы.
Спасибо, что помогаете нам улучшать IntelliJ IDEA своим участием в программе раннего доступа и отзывами о новой функциональности. Делитесь впечатлениями о версии 2021.3 в комментариях к посту и сообщайте о любых ошибках в баг-трекере.
Программируйте с удовольствием!