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

Интерактивные подсказки в отладчике, больше возможностей Java 15, поддержка Git-стейджинга и многое другое — представляем новые возможности IntelliJ IDEA 2020.3

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

Обновленный начальный экран

Обновленный начальный экран

Начальный экран IntelliJ IDEA выглядит по-новому. Теперь там есть четыре вкладки: Projects для управления проектами, Customize для настройки интерфейса IDE, Plugins для установки плагинов и Learn IntelliJ IDEA для быстрого доступа к справке и обучающим материалам.

Ресурсы для обучения

Ресурсы для обучения

Откройте страницу Learn IntelliJ IDEA прямо с начального экрана. Там вы найдете практические уроки и ссылки на полезные ресурсы. Нажмите Start Learning, чтобы последовательно изучить различные функции IDE. Следуйте инструкциям в окне Learn, чтобы проверить свои знания на реальных примерах кода.

Синхронизация темы IDE c системными настройками

Синхронизация темы IDE c системными настройками

Цветовую схему IntelliJ IDEA теперь можно синхронизировать с темой вашей операционной системы. Для этого выберите опцию Sync with OS в меню Settings / Preferences | Appearance & Behavior | Appearance. Нажмите на значок шестеренки рядом с Sync with OS, чтобы выбрать предпочтительную тему.

Режим чтения

Режим чтения

Файлы, доступные только для чтения, и файлы из внешних библиотек теперь по умолчанию открываются в удобном виде: комментарии выглядят как форматированный текст, а в коде включены лигатуры, чтобы его было проще читать. Настроить режим чтения можно в меню Settings / Preferences | Editor | Reader Mode.

Улучшения режима LightEdit

Улучшения режима LightEdit

Мы улучшили взаимодействие с IDE в режиме LightEdit. Чтобы открыть файл в режиме LightEdit из командной строки, введите -e (--edit), а затем имя файла, который нужно открыть, или просто -e без имени файла — тогда откроется предыдущий сеанс. Из строки состояния в окне LightEdit теперь можно перейти ко всем функциям IDE. Подробнее

Расширенная проверка правописания

Расширенная проверка правописания

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

Поиск коммитов через Search Everywhere

Обновленный диалог Search Everywhere

В диалоге Search Everywhere появилась вкладка Git. Теперь там можно искать хэши и сообщения коммита, теги и ветки. А еще в строке поиска работает простой калькулятор.

Быстрый предпросмотр файлов

Быстрый предпросмотр файлов

Теперь по клику на файл его содержимое можно увидеть во вкладке предпросмотра. При открытии вкладки имя файла будет указано курсивом. Если вы начинаете редактировать файл, вкладка превращается в обычную. Если один раз кликнуть по другому файлу, он откроется в той же вкладке вместо предыдущего. Чтобы включить эту функцию, нажмите на значок шестеренки на панели Project и выберите опцию Enable Preview Tab.

Поддержка эмодзи на Linux

Поддержка эмодзи на Linux

Мы добавили панель со смайлами для Linux 🥳. Чтобы ее открыть, нажмите Ctrl+Alt+;. Можно фильтровать смайлы по категориям, искать по названию, менять цвет кожи. На эмодзи-панели полностью поддерживается навигация с клавиатуры.

Обновление JDK из IDE

Обновление JDK из IDE

Во всплывающем окне IntelliJ IDEA сообщит вам о выходе обновления для JDK. Можете сразу установить его или проигнорировать оповещение.

Редактор

Обновленный рефакторинг Extract Method

Обновленный рефакторинг Extract Method

Мы упростили извлечение Java-методов. Просто нажмите ⌥⌘M на macOS или Ctrl+Alt+M на Windows и Linux или выберите Refactor / Extract / Introduce / Method… — IDE сразу же выполнит рефакторинг.

Обновленный рефакторинг Rename

Быстрый доступ к настройкам переименования

Благодаря новым параметрам переименования, которые отображаются в подсказке, теперь есть три опции: переименовать в комментариях, строках или в текстовых вхождениях. Чтобы вызвать подсказку, нажмите ⇧F6 (macOS) или Shift+F6 (Windows и Linux), а затем Tab. Вы можете изменить сочетание клавиш для действия Show Options Popup for In-place Refactoring в разделе Settings / Preferences | Keymap.

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

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

Теперь, если вы хотите разбить поле редактора горизонтально либо вертикально для работы с двумя вкладками одновременно, просто перетащите нужные вкладки в редактор. А с помощью действия Open in Right Split можно разделить редактор вертикально при открытии файла. Вы можете вызвать это действие из окна Project, Recent Files, Search Everywhere и с панели навигации.

Закрепленные вкладки

Закрепленные вкладки

Закрепленные вкладки теперь обозначаются значком булавки. Кликните по нему, чтобы открепить вкладку. Вы также можете закреплять и откреплять вкладки, перетаскивая их на другие закрепленные и незакрепленные файлы. Если у вас часто бывает открыто много вкладок, можете собрать все закрепленные вкладки в отдельный ряд: выберите опцию Show pinned tabs in a separate row в меню Settings / Preferences | Editor | General | Editor Tabs.

Улучшения поддержки Markdown

Улучшения в Markdown-редакторе

Мы улучшили интерфейс Markdown-редактора. Чтобы настроить формат Markdown, перейдите в Settings / Preferences | Editor | Code Style | Markdown. Нажмите ⌘+Alt+L на macOS или Ctrl+Alt+L на Windows или Linux, чтобы применить форматирование. Кнопка Auto-Scroll Preview в правом верхнем углу редактора синхронизирует прокрутку редактора и панели предварительного просмотра. We’ve also added support for Mermaid.js.

Файлы, по умолчанию открываемые в IDE

IntelliJ IDEA в качестве стандартного приложения для открытия файлов

Теперь вы можете выбрать IntelliJ IDEA в качестве приложения по умолчанию для открытия файлов. Нажмите на кнопку Associate file types with IntelliJ IDEA в разделе Preferences | Settings / Editor / File Types. В появившемся диалоге выберите расширения файлов, которые вы хотите открывать в IDE. Если вы используете macOS, потребуется перезагрузить компьютер, чтобы применить эти изменения.

Генерация нескольких файлов из шаблона

Генерация нескольких файлов из шаблона

В разделе Preferences / Settings | Editor | File and Code Templates, теперь можно добавить шаблон, который создает сразу несколько файлов. Сначала нажмите +, чтобы создать шаблон. Затем, чтобы добавить в него еще один файл, кликните на значок Create Child Template File рядом с плюсом. В поле File name вы можете ввести паттерн для создания имени файла и пути с использованием переменных, перечисленных в разделе Description.

Отладчик

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

Интерактивные подсказки

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

Inline watches в отладчике

Отслеживание значений переменных

Мы добавили новый тип watch expressions, которые связаны с определенным контекстом и отображаются прямо в редакторе. Чтобы создать такое выражение, выберите Add as Inline Watch во всплывающей подсказке, Add Inline Watch в контекстном меню или нажмите на переменную в редакторе правой кнопкой мыши. Вы можете управлять inline watches в новом узле Inline Watches на вкладке Variables в окне Debug.

Отображение ссылочных объектов в отладчике

Профилирование памяти в Java-отладчике

Базовые возможности профилирования теперь доступны во время работы отладчика. Новые функции профилирования вызываются через контекстное меню в окне Debug. Первая, Show referring objects, находит кратчайший путь от объекта к корням сборщика мусора. Вторая, Calculate retained size, вычисляет общее количество памяти, которое освободится при удалении объекта.

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

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

Теперь на каждый сеанс отладки для задачи Gradle открывается только одна вкладка. В ней отображаются фреймы, переменные, а также вывод консоли. Элементы управления отладчиком теперь работают правильно. Если вы хотите вернуться к предыдущей логике отладки, снимите галочку напротив опции Reuse Gradle debug session for forked processes в разделе Edit configurations….

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

Присоединение профилировщика к процессу

Обновленное окно Profiler Ultimate

Теперь в окне Profiler можно присоединить профилировщик к работающему приложению. В списке запущенных Java-процессов нажмите Enter для вызова действия Attach Profiler to a Process и выберите интегрированный инструмент, который хотите использовать. В области Recent Snapshot можно быстро получить доступ к любым снэпшотам, созданным ранее.

Поиск по флейм-графу

Поиск по флейм-графу Ultimate

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

Быстрый доступ к файлам .jfr и .hprof

Быстрый доступ к файлам .jfr и .hprof Ultimate

Открыть любой файл .jfr или .hprof теперь можно несколькими способами: перетащить его в редактор, использовать меню File | Open или дважды кликнуть по файлу на панели Project.

Поддержка локальных конфигураций Maven и Tomcat Ultimate

Теперь можно профилировать локальные конфигурации запуска Maven и Tomcat так же, как любые другие конфигурации запуска. Кликните правой кнопкой мыши по элементу, который вы хотите профилировать, и выберите одну из опций: CPU, Allocation или Java Flight Recorder.

Интеграция с системами контроля версий

Поддержка Git-стейджинга

Поддержка Git-стейджинга

В новой версии появилась поддержка Git-стейджинга. Чтобы ее включить, перейдите в Settings / Preferences | Version Control | Git и отметьте галочкой опцию Enable staging area. Нажмите на значок «+», чтобы добавить файлы в новый узел Staged в окне Commit. Вы также можете добавлять файлы на стейджинг через поле редактора или вкладку Diff. Подробнее

Обновленное меню VCS

Обновленное меню VCS

Меню VCS теперь называется по имени системы контроля версий, которую вы используете. Еще мы убрали из него все действия, кроме самых актуальных. Если у вас в проекте используется только Git, меню VCS будет выглядеть, как на картинке выше.

Улучшенные ветки

Улучшенные ветки

Теперь IDE автоматически исправляет недопустимые символы в именах веток. А в контекстном меню текущей ветки отображаются связанные действия. Для удаленных ветвей мы переименовали действия Merge into Current и Rebase Current onto Selected в Pull into Current Using Merge и Pull into Current Using Rebase соответственно.

Конфигурации запуска

Обновленные конфигурации запуска

Обновленные конфигурации Run/Debug

Мы изменили интерфейс конфигураций запуска/отладки, сделав его более понятным, и разместили наиболее часто используемые настройки на одном экране. Обязательные поля содержат метки и расположены в том же порядке, что и в командной строке. Если нужно настроить другие параметры, нажмите Modify options.

Возможность поделиться конфигурацией запуска

Возможность поделиться конфигурацией запуска

IntelliJ IDEA 2020.3 позволяет сохранять шаблоны конфигурации запуска в виде XML-файлов и делиться ими с коллегами через Git или другую систему контроля версий. Перейдите в Edit Configurations…, разверните узел Templates, выберите шаблон конфигурации, отметьте галочкой опцию Store as project file и укажите, куда следует сохранить шаблон.

Совместное редактирование кода

Code With Me EAP

IntelliJ IDEA 2020.3 поддерживает Code With Me (EAP) — наш новый сервис для парного программирования и совместной разработки. С его помощью вы и ваша команда можете совместно работать над проектами прямо из своих IDE. Чтобы попробовать Code With Me, установите плагин (Preferences / Settings | Plugins | Marketplace). Подробнее о Code With Me

Java

Преобразование записей в классы

Преобразование записей

Мы добавили новое действие для преобразования записей (records) в классы и наоборот. Это может быть полезно, если вы хотите откатить назад вашу кодовую базу. Читайте в нашем блоге, как и когда использовать записи.

Поддержка запечатанных классов

Полная поддержка запечатанных классов

In this release, we’ve added completion, code insight, and refactorings for sealed classes. Когда вы используете модификатор sealed, вы объявляете класс как sealed class и можете указать, какие другие классы он может расширять и каким классам следует запретить это делать. Подклассы могут быть final, non-sealed или sealed. Примеры того, как это можно использовать, вы найдете в нашем блоге.

Автодополнение на основе машинного обучения

Сортировка вариантов автодополнения на основе машинного обучения

Варианты автодополнения стали более контекстно-зависимыми благодаря технологии машинного обучения, которая помогает их сортировать и показывает в первую очередь самые актуальные. Чтобы оценить работу нового механизма сортировки, отметьте галочкой опцию Mark position changes in the completion popup в меню Settings / Preferences | Editor | General | Code Completion.

Поддержка шебанга

Поддержка шебанга (#!)

Если в ваших файлах используется механизм шебанг, IntelliJ IDEA автоматически определит это и откроет их как надо. Для файлов с шебангом (#!) также работает подсветка и анализ кода.

Инспекция для удаления комментариев

Новые инспекции

Мы добавили несколько инспекций, которые помогут вам улучшить код. Пожалуй, главная из них — это Commented out code. Она позволяет удалять комментарии и раскомментировать строки. О других новых инспекциях читайте в нашем блоге.

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

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

Если вы создаете класс с нуля, после объявления public автодополнение теперь предлагает варианты: класс, интерфейс, перечисление или запись. Если вы используете методы String.toUpperCase или String.toLowerCase, IntelliJ IDEA предложит использовать Locale.ROOT. А если вы собираетесь вызвать String.getBytes(), IDE предложит использовать кодировку UTF_8.

Kotlin

Новые виды рефакторингов Inline

Теперь возможно межъязыковое преобразование, то есть вы можете встраивать в Kotlin элементы из Java. Также можно использовать inline-рефакторинг для scope-функций also, let, run, with и apply. Мы улучшили встраивание лямбда-выражений: IDE более тщательно анализирует их синтаксис и правильно форматирует.

Структурный поиск и замена

Структурный поиск и замена

Мы добавили поддержку структурного поиска и замены (SSR) для Kotlin. Вы можете находить и заменять фрагменты кода с учетом синтаксиса и семантики исходного кода. Фильтры для переменных помогут ограничить область поиска.

Новая инфраструктура

Даты выхода обновлений плагина Kotlin IDE теперь синхронизированы с выпуском новых версий IntelliJ IDEA. Кроме того, мы переместили Kotlin-плагин в новый репозиторий, объединенный с кодовой базой IntelliJ IDEA, чтобы минимизировать время применения платформенных изменений.

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

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

Обновленное окно Endpoints Ultimate

В этой версии мы значительно улучшили окно Endpoints, которое показывает как клиентские, так и серверные API для протоколов HTTP и WebSocket. Теперь конечные точки сгруппированы по модулям и можно сделать список более компактным. Работает полнофункциональный поиск с фильтрами, автодополнением и возможностью искать по нескольким параметрам. Можно прочитать документацию для каждой конечной точки в отдельной вкладке. Если у конечных точек есть связанные URL-адреса, вы можете посмотреть представление Open API и получить доступ к специальному HTTP-клиенту.

Преобразование cURL

Преобразование в cURL Ultimate

Экспортировать HTTP-запрос в cURL теперь можно из редактора HTTP-запросов: нажмите Alt+Enter и выберите опцию Convert to cURL and copy to clipboard.

Улучшенное автодополнение URL-адресов

Улучшенное автодополнение URL-адресов Ultimate

Автодополнение URL-адресов стало более информативным: отображаются иконки фреймворков, HTTP-методы и расположение исходных классов или файлов, в которых объявлена конечная точка. Устаревшие URL-адреса перечеркнуты.

Действия для URL

Действия для URL Ultimate

Теперь есть быстрый доступ к некоторым действиям для URL: просто нажмите на значок глобуса рядом с URL-адресом. Пока что это работает для Spring MVC, WebFlux, Feign Client, JAX-RS, Micronaut и Retrofit.

Автодополнение Spring Security

Улучшения в поддержке Spring Ultimate

Теперь анализ кода работает для Spring MVC Functional Routing, RestOperations, Spring WebTestClient и Spring Reactive WebClient. Мы также отображаем объявленные с ними конечные точки. А еще добавили автодополнение и навигацию для проектов Kotlin Spring Security.

Преобразование HTTP-запросов

Преобразование HTTP-запросов Ultimate

Если вы все еще используете HTTP-запросы в старом формате HTTP-клиента, можете легко преобразовать их в новый формат, кликнув Convert request to the new format наверху открытого запроса. Это также можно сделать в редакторе HTTP-запросов или через контекстное меню в окне Project.

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

Расширенная поддержка Swagger Ultimate

IDE значительно лучше понимает код в различных случаях, в том числе когда вы хотите сослаться на внешние определения с помощью ключевого слова $ref. Еще одно важное обновление — поддержка Swagger Hub, чтобы вы могли открывать в окне Endpoints как общедоступные, так и частные спецификации из Swagger Hub. Кроме того, интерфейс Swagger теперь синхронизируется с темой Darcula.

Конфигурации Quarkus

Конфигурации запуска Quarkus и Micronaut Ultimate

Новые проекты Quarkus и Micronaut включают в себя автоматически созданные конфигурации запуска, а значит, вы можете сразу запускать и отлаживать свое приложение. Если вы решите поменять конфигурацию Quarkus в Edit Configurations, в разделе Environment вы увидите настройки, применимые только к Gradle или Maven, в зависимости от того, какой фреймворк используется для сборки в вашем проекте.

Автодополнение @Query

Micronaut Data: автодополнение аннотаций @Query Ultimate

В IntelliJ IDEA 2020.3 работает автодополнение для предопределенных методов, которые вы используете при создании интерфейсов репозитория. Мы также добавили поддержку аннотации Micronaut @Query, которая помогает при создании пользовательских запросов. С ее помощью можно использовать язык JPQL для фрагментов кода.

Scala

Параллельная компиляция

Параллельная компиляция

Сервер компиляции Scala теперь компилирует независимые модули параллельно. Мы скорректировали стандартные параметры виртуальной машины для поддержки до 4 потоков компиляции, что может значительно ускорить процесс. Если на вашем компьютере много ядер процессора и оперативной памяти, можете поменять значения по умолчанию, чтобы выполнять компиляцию еще быстрее.

Диаграммы компиляции

Диаграммы компиляции

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

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

Scala-плагин теперь может комбинировать префиксы пакетов IntelliJ IDEA с цепочками предложений пакетов и относительными импортами Scala. Сами по себе эти понятия довольно специфичны, а их комбинация, как ни странно, обеспечивает интуитивно понятную и согласованную систему (подробнее). Больше не придется мучаться с цепочками пустых директорий или повторять один и тот же префикс пакета снова и снова. Вы сможете легко поддерживать порядок в своих директориях и пакетах.

Поддержка MUnit

Scala-плагин уже поддерживает JUnit, ScalaTest, uTest и Specs2. Пришло время пополнить этот список — мы добавили поддержку MUnit со всей привычной функциональностью.

Улучшения для Scala 3

Улучшения для Scala 3

Scala-плагин уже довольно давно поддерживает возможности еще не вышедшей Scala 3, и мы стараемся не отставать от изменений в языке. Particularly, the Scala plugin now understands the new syntax for main methods. Написать Hello World теперь проще некуда!

JavaScript

Объединенное окно TypeScript и Problems

Объединение окон Problems и TypeScript Ultimate

Мы интегрировали TypeScript language service с окном Problems и убрали окно TypeScript. Это значит, что вы можете просматривать все ошибки в одном месте. Действия, которые ранее были доступны в окне TypeScript, теперь можно найти в отдельном виджете для строки состояния.

Быстрое создание React-компонентов

Быстрое создание React-компонентов Ultimate

Реализовали не все React-компоненты? Просто поставьте курсор на нужный компонент, нажмите Alt+Enter и выберите опцию Create class/function component — IntelliJ IDEA создаст необходимую конструкцию кода за вас.

Узнайте, что нового в WebStorm — там вы найдете подробную информацию об улучшениях для JavaScript, вошедших в IntelliJ IDEA 2020.3.

Kubernetes

Kubernetes: загрузка логов

Загрузка логов Ultimate

Теперь вы можете загружать логи на свой компьютер: просто нажмите Download Log на боковой панели окна Services. По умолчанию поды сохраняются в Scratches и Consoles | Kubernetes Files | <context> | <namespace> | pods, но вы можете поменять настройки в разделе Pod Logs (Settings / Preferences | Build, Execution, Deployment | Kubernetes).

Kubernetes: Run Shell

Действия Open Console и Run Shell Ultimate

На боковой панели в окне Services есть два новых действия: Open Console для подключения контейнеров, включающих консоли, и Run Shell, чтобы запускать Shell для под-контейнеров. Для быстрого перехода к настройкам Pod Shell нажмите на значок гаечного ключа.

Улучшенное автодополнение URL-адресов

Загрузка CRD-схем из Kubernetes Ultimate

Теперь можно автоматически загружать CRD-схемы из активного кластера. Для этого перейдите в меню Preferences / Settings | Languages & Frameworks | Kubernetes и отметьте галочкой опцию Use API schema from an active cluster.

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

SQL для MongoDB

SQL для MongoDB Ultimate

Теперь можно использовать SQL для запросов к MongoDB. IntelliJ IDEA 2020.3 supports SELECT queries with clauses such as JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET, and all available MongoDB functions except map, reduce, filter, and let. Подробнее об SQL для MongoDB читайте в нашем блоге.

Поддержка Couchbase и новые форматы экспорта Ultimate

IntelliJ IDEA теперь поддерживает сервис Couchbase Query. Еще мы добавили два новых формата экспорта. One-Row скопирует выделенные значения в одну строку через запятую, а SQL-Insert-Multirow сгенерирует один INSERT для нескольких строк.

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

Есть еще несколько нововведений, которые пригодятся в повседневной работе:

  • The upcoming Maven 3.7.0 will feature new POMs with a simplified structure. IntelliJ IDEA 2020.3 уже их поддерживает.
  • Плагин для Lombok теперь встроен в IDE.
  • IntelliJ IDEA может загружать общие индексы для популярных библиотек Maven прямо с серверов JetBrains. Если вы пишете плагин с помощью IntelliJ Platform SDK, общие индексы загрузятся автоматически.
  • B преддверии выхода macOS Big Sur мы обновили интерфейс, чтобы он лучше сочетался с новой операционной системой.
  • В меню Preferences/Settings | Keymap добавлена новая схема сочетаний клавиш, полностью совместимая с системными шорткатами macOS.
  • Патчи по умолчанию создаются в Git-формате.