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

Теперь можно управлять пул-реквестами GitHub прямо из IntelliJ IDEA, просматривать полный список проблем с текущим файлом в специальном окне и быстро навигироваться по ошибкам и предупреждениям с помощью нового виджета. Если внесенные изменения привели к ошибкам в других файлах, IDE об этом сообщит. IntelliJ IDEA 2020.2 поддерживает Jakarta EE и предоставляет новые возможности для работы с Quarkus, Micronaut и OpenAPI.

Java

Поддержка Java 15

Поддержка Java 15

Java 15 выйдет только в сентябре, но IntelliJ IDEA 2020.2 уже готова к этому. Мы улучшили поддержку записей (Records), и она вышла на второй этап preview. Кроме того, мы добавили базовую поддержку запечатанных классов (sealed classes). Ну и конечно, IntelliJ IDEA полностью поддерживает текстовые блоки.

Мастер создания проектов Jakarta EE

Сообщение о проблемах в связанных файлах

Если при изменении сигнатуры класса, метода или поля во внешние файлы закралась ошибка, IDE сообщит вам об этом. Нажмите на подсказку, чтобы открыть окно со списком всех связанных проблем, возникших во внешних файлах.

Поддержка Scala 3

Возможность создавать несколько инспекций в Structural Search and Replace

IntelliJ IDEA позволяет находить и при необходимости заменять блоки кода, соответствующие заданному шаблону. Теперь можно создать несколько таких шаблонов и использовать их в качестве инспекций. Для этих инспекции вы можете указать уровень серьезности и добавить описание, а также включать их по отдельности.

Поддержка Scala 3

Выявление причин исключений во время выполнения

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

Поддержка Scala 3

Улучшенное автодополнение методов Stream API

Теперь IntelliJ IDEA еще лучше поддерживает Stream API. Вместо того, чтобы каждый раз вводить stream(), а затем указывать нужную операцию, теперь можно сразу вводить имя метода, а IntelliJ IDEA автоматически подставит stream(). Это работает для любых операций с потоками.

Поддержка Scala 3

Варианты применения Introduce Variable

В IntelliJ IDEA 2020.2 рефакторинг Introduce Variable работает более гибко. Теперь можно выбрать разные варианты замены для разных случаев (раньше можно было заменить либо одно, либо все вхождения). IDE подсвечивает вхождения, которые будут заменены новой переменной, при наведении курсора на каждый из вариантов.

Шаблоны для Java собраны вместе

Шаблоны для Java собраны вместе

Больше не придется долго искать шаблоны для Java. В настройках Live Templates появился узел, который включает в себя все группы Java-шаблонов: plain, surround, other, output и iterations. Кроме того, есть отдельный узел для Groovy.

Редактор

Окно Problems

Новое окно Problems

В новом окне Problems вы увидите список ошибок и предупреждений для текущего файла с описаниями проблем. Кликните правой кнопкой мыши по ошибке, чтобы перейти к проблемной строке, и исправьте ее с помощью Alt+Enter.

Виджет с инспекциями

Виджет с инспекциями

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

Превью результатов intention-действий

Превью результатов intention-действий

Теперь можно заранее посмотреть, как будет выглядеть код после применения intention-действия. Нажмите Alt+Enter, чтобы выбрать доступное действие, а затем Alt+Space на macOS или Ctrl+Shift+I на Windows и Linux, чтобы посмотреть превью.

Усовершенствованная проверка орфографии

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

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

Расширенная поддержка пул-реквестов GitHub

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

Подробнее

Обновленные диалоги для работы с Git

Мы обновили дизайн диалогов Merge, Pull и Rebase — взаимодействовать с ними стало удобнее. Теперь четко видно, какие Git-команды будут выполняться. Кроме того, добавлены новые параметры, например –rebase в диалоге Pull и –no-verify в диалоге Merge.

Удобное сравнение веток

Удобное сравнение веток

Теперь при сравнении двух веток, IntelliJ IDEA открывает списки их коммитов в одном представлении в редакторе. В отличие от окна VCS, в новом представлении достаточно места для полной информации о том, какие коммиты есть в каждой ветке и какие файлы затронуты изменениями.

Объединение локальных коммитов на вкладке Log

Объединение локальных коммитов на вкладке Log

Теперь можно выбрать несколько коммитов из локальной ветки и объединить их в один. Откройте вкладку Log в окне Git, выберите локальные коммиты и действие Squash Commits. Если вы решите изменить комментарий к коммиту, все изменения в этих коммитах будут помещены в один коммит вместе с обновленным комментарием. Кроме того, теперь можно удалять коммиты из Git-лога.

Поддержка Git в WSL 2

IntelliJ IDEA 2020.2 поддерживает Git, установленный в WSL2, для работы над проектами, расположенными в файловых системах Linux или Windows. Теперь при открытии проекта из WSL IDE автоматически переключится на Git в WSL и вы сможете использовать всю связанную функциональность.

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

Поддержка Jakarta EE 9 Ultimate

Мы подготовились к сентябрьскому релизу Jakarta EE 9 и уже поддерживаем все технологии Jakarta EE, включая CDI, JPA, Batch, Bean Validation, JSF, JAX-RS, WebSocket, Servlets, JSP, JSON-P, JSON-B, Security, EJB и JTA.

Мастер создания проектов Jakarta EE

Мастер создания проектов для Java Enterprise Ultimate

Теперь можно создавать проекты Java EE 8 и Jakarta EE 9 с помощью мастера New Project. Новый проект Jakarta EE настраивается всего за несколько шагов: выберите версию Java, инструмент сборки, расширения и другие параметры.

Поддержка файлов конфигурации Quarkus: YAML и .properties Ultimate

Для упрощения работы с файлами конфигурации .properties и YAML в IntelliJ IDEA теперь работает автодополнение и подсветка синтаксиса, а неиспользуемый код окрашивается в серый цвет. Кроме того, прямо из файлов конфигурации можно перейти к настроенным bean-компонентам и наоборот.

Улучшенная поддержка Quarkus CDI Ultimate

Теперь в IntelliJ IDEA доступна удобная навигация по bean-компонентам и обновленные инспекции, которые идеально работают с упрощенным синтаксисом Quarkus. Кроме того, IDE поддерживает аннотации @DefaultBean, @AlternativePriority и вставки по квалификатору (без использования @Inject).

Поддержка интерфейса Swagger

Поддержка интерфейса Swagger Ultimate

Благодаря интеграции с интерфейсом Swagger теперь доступен предпросмотр OpenAPI в редакторе IntelliJ IDEA. Это значительно упрощает тестирование.

Мастер создания проектов Jakarta EE

Просмотр различий Swagger Ultimate

IDE теперь может показывать структурные различия между спецификациями OpenAPI. Понимая особенности Swagger/OpenAPI, IntelliJ IDEA 2020.2 сравнивает структуру файлов JSON или YAML и предлагает посмотреть на обнаруженные различия. Для этого выберите опцию Compare Open API Specifications в контекстном меню или вызовите действие через Search Everywhere.

Мастер создания проектов Jakarta EE

Создание проектов Micronaut Ultimate

Еще одно полезное обновление мастера New Project: теперь в нем можно создавать проекты Micronaut. Быстрая пошаговая настройка позволяет приступить к работе над проектом в кратчайшее время.

Поддержка очереди сообщений для Micronaut и Amazon SQS API Ultimate

Если в вашем приложении Micronaut используется асинхронная обработка данных через RabbitMQ или Kafka, это обновление для вас. Теперь работает автодополнение для имен и поиск использований, а также можно навигироваться по очередям и темам с помощью значков на поле редактора. Такой же набор функций поддерживается для Amazon SQS API.

Генерация HTTP-запросов JAX-RS и MicroProfile в REST-клиенте

Генерация HTTP-запросов JAX-RS и MicroProfile Ultimate

Для упрощения создания и тестирования HTTP-запросов IntelliJ IDEA автоматически сгенерирует HTTP-запросы JAX-RS и MicroProfile, а затем откроет их во встроенном REST-клиенте. Вы также можете использовать intention-действия для генерации HTTP-запросов по любому URL-адресу в проектах Spring, JAX-RS, Retrofit, OkHttp и Micronaut.

Автодополнение URL-адресов в тестах REST Assured

Автодополнение URL-адресов в тестах REST Assured Ultimate

В тестах REST Assured теперь работает автодополнение URL-адресов и навигация к соответствующим ресурсам.

Интеграция с Selenoid в Selenium-плагине Ultimate

Selenium-плагин теперь поддерживает интеграцию с Selenoid и предоставляет простой способ запуска нового тестового окружения прямо из файла browsers.json. При запуске Selenoid-контейнера автоматически извлекаются все необходимые образы.

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

Просмотр памяти с HPROF

Просмотр памяти с HPROF Ultimate

Благодаря улучшенной механике просмотра, вам будет проще проанализировать динамическую память, понять, какие части кода используют большие объемы памяти, и обнаружить причины утечек. HPROF отображает рассчитанные сохраненные размеры объектов, кратчайшие пути к корням сборщика мусора, доминаторное дерево объектов (сохраненные объекты) и входящие ссылки.

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

Ускоренное индексирование с плагином Shared Indexes

Теперь можно ускорить индексирование, загружая индексы с другого компьютера, не создавая их локально. Используйте готовые индексы для JDK или создавайте свои и переносите их в нужную IDE. Просто установите плагин Shared Indexes. Подробнее

Подсветка и автодополнение во время индексирования

Новые возможности во время индексирования

Продолжайте писать код, пока IntelliJ IDEA 2020.2 индексирует проект. Теперь во время индексирования работает автодополнение для Java и PHP.

Терминал

Вызов функциональности IDE из терминала

Вызов функциональности IDE из терминала

Теперь можно воспользоваться функциями IDE прямо из терминала. Вы можете выполнять команды, подсвеченные в терминале, в соответствующем графическом интерфейсе IDE с помощью сочетания клавиш Ctrl+Enter/Cmd+Enter. Чтобы запустить выделенные команды в режиме отладки, используйте Ctrl + Shift + Enter / Cmd + Shift + Enter.

Подробнее об этой возможности читайте в нашем блоге.

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

Поддержка Maven Wrapper

IntelliJ IDEA 2020.2 теперь поддерживает Maven Wrapper, который автоматически устанавливает необходимую для вашего проекта версию Maven. Если Maven Wrapper установлен и настроен, IDE использует его автоматически и импортирует изменения, когда необходимо.

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

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

Удобное отображение результатов сборки

Теперь вывод встроенного инструмента сборки отображается в окне Build, а не в окне Messages.

Расширенная поддержка файлов build.gradle

IntelliJ IDEA 2020.2 поддерживает автодополнение и навигацию для имен проектов в файлах build.gradle.

JavaScript и TypeScript

Новые действия и инспекции

Новые intention-действия Ultimate

Например, можно быстро преобразовать цикл for с числовым индексом в перебирающий метод forEach. Кроме того, стало проще читать документирующие комментарии в файлах JavaScript и TypeScript: мы сделали рендеринг прямо в редакторе — теперь все выглядит четко и аккуратно.

Поддержка Vuex и Composition API

Prettier в качестве форматера по умолчанию Ultimate

В новой версии легко форматировать код с помощью Prettier. Просто отметьте галочкой опцию On code reformat в настройках, и IntelliJ IDEA будет использовать Prettier вместо встроенного форматера. По умолчанию это работает только для файлов .js, .ts, .jsx и .tsx, но вы можете добавить и другие типы файлов.

Шаблоны для Java собраны вместе

Поддержка Nuxt.js Ultimate

Работать с проектами Vue.js стало удобнее: мы добавили поддержку Nuxt.js и специальные настройки стиля кода.

Базы данных

Редактор больших значений

Редактор больших значений Ultimate

В этой версии мы добавли несколько полезных инструментов для случаев, когда в ячейке содержится очень большое значение. Теперь можно просматривать и редактировать длинные значения на отдельной панели, которая поддерживает режим переноса строк (переключается на правой панели инструментов).

Новое отображение логических ячеек

Новое отображение логических ячеек Ultimate

Просматривать и редактировать ячейки с типом boolean стало гораздо удобнее. Для ввода нужного значения (false, true, default, null, generated или computed) достаточно ввести первую букву: f, t, d, n, g или c. Если напечатать что-то другое, откроется выпадающий список.

Предпросмотр запроса при редактировании

Предпросмотр запроса при редактировании Ultimate

Теперь результаты запросов к базе данных можно просматривать в редакторе. Для этого нажмите кнопку DML на панели инструментов.

Поддержка Scala 3

Поддержка Google BigQuery Ultimate

Мы добавили начальную поддержку диалекта Google BigQuery. IDE обеспечивает подсветку и автодополнение запросов.

Scala

Автоматический импорт Implicits

Автоматический импорт Implicits

Раньше, несмотря на возможность просмотра implicits (даже отсутствующих) через View | Show Implicit Hints, импортировать их было непросто.

Новое действие Auto-import for implicits работает так же, как автоматический импорт неразрешенных ссылок. Автоматическое всплывающее окно даст знать об этой возможности, но вы можете его отключить и вызывать действие Import… через Alt+Enter (подробнее).

Автоматический импорт Implicits

Расстановка скобок на основе отступов

Scala-разработчикам часто приходится удалять и добавлять фигурные скобки. Чтобы упростить эту задачу, сначала мы добавили специальное intention-действие, но его нужно было вызывать вручную. Затем мы поддержали автоматическое добавление и удаление необязательных скобок.

В новой версии стало удобнее: фигурные скобки автоматически добавляются и удаляются на лету в зависимости от отступов. Это позволяет активно использовать отступы, сохраняя при этом скобки, даже в Scala 2. Просто не думайте о скобках — IDE все сделает за вас.

Улучшенная поддержка компаньонов

В Scala класс или типаж компаньона и объект-компаньон имеют особые отношения. Это уже давно было отражено на панели Project, но в остальном IntelliJ IDEA обращалась с компаньонами как с любыми другими классами или объектами.

Теперь в редакторе появились навигационные значки для компаньонов (настраивается в меню Settings | General | Editor | Gutter Icons). Вы также можете перейти к компаньону, вызвав действие Go To на ключевых словах class, trait или object. Кроме того, для членов объектов-компаньонов работает автодополнение и их можно импортировать автоматически.

Рендеринг Scaladoc в редакторе

Рендеринг Scaladoc в редакторе

Комментарии Scaladoc легко редактировать, но не всегда удобно читать из-за обилия звездочек, тегов и макросов. Мы сделали рендеринг Scaladoc прямо в редакторе — теперь все выглядит четко и аккуратно (новый режим отображения включается в меню Editor | General | Appearance).

Мы также улучшили рендеринг Scaladoc во всплывающем окне Quick Documentation: абзацы, списки и макросы теперь отображаются корректно.

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

Автодополнение не только стало быстрее и точнее — мы добавили две абсолютно новые возможности. Во-первых, теперь можно сразу подставить и имя метода, и его аргументы, если в текущей области доступа присутствуют соответствующие значения.

Во-вторых, теперь вы можете применить статическую функцию к аргументу, используя точечную запись, которая может использоваться в сочетании с алгебраическими типами данных. Эта функциональность является частью Hoogle Completion — нашей попытки переосмыслить Hoogle в языке, который не использует систему типов Хиндли-Милнера (пока еще мы работаем над этим).

Docker

Безопасное подключение к Docker

Безопасное подключение к Docker

IntelliJ IDEA 2020.2 обеспечивает безопасное подключение к Docker на Windows, благодаря поддержке TLS-соединений с демоном Docker.

Kubernetes

Несколько конфигурационных файлов

Несколько файлов конфигурации Ultimate

В настройках Preferences/Settings | Build, Execution, Deployment | Kubernetes теперь можно указать кастомный файл kubeconfig. Также это можно сделать, нажав Show Settings… в окне Services при выборе корневого элемента Kubernetes. Вы можете указать файл kubeconfig как для всех проектов, так и для одного. Другими словами, у каждого из ваших проектов может быть свой файл kubeconfig.

Поддержка объектов ConfigMap и Secret

Поддержка объектов ConfigMap и Secret Ultimate

Теперь работает автодополнение для объектов ConfigMaps/Secrets из текущего проекта и из кластера. В списке предлагаемых вариантов объекты из кластера выделены синим. Вы можете перейти от использования ConfigMap/Secret к соответствующему ресурсу ConfigMap/Secret в проекте или кластере. То же самое касается ключей ConfigMap/Secret.

Другие возможности

  • IntelliJ IDEA 2020.2 включает в себя все нововведения из Android Studio 4.0. Подробнее
  • Если вы используете программу чтения с экрана, IDE это заметит и автоматически включит функции специальных возможностей.
  • IntelliJ IDEA 2020.2 позволяет использовать эмодзи Unicode в Linux. 🚀
  • Чтобы избежать проблем с производительностью и рендерингом, мы предлагаем новую интеграцию с JCEF для запуска плагинов IntelliJ Platform.