Это – обзор нового в IntelliJ IDEA 2019.1. Ссылки в заголовках ведут на соотвествующие разделы на сайте, где всё описано детально, но на английском.
Интерфейс
Сделали новые темы интерфейса и возможность создавать их самостоятельно.
Java
- Появилась поддержка функции Switch Expressions из Java 12 Preview: JEP 325. Подробнее здесь.
- Рефакторинг Extract Variable сохраняет семантику лучше, чем раньше.
- В тернарных выражениях IDE подсвечивает только то условие, в котором обнаружено нарушение допустимости значения null.
- IDE отслеживает значения операций умножения, вычисления остатка и сдвига вправо.
- Появилась возможность настроить имена переменных для автоматически генерируемых блоков try/catch.
- IDE теперь автоматически выводит чистоту конструкторов из источников.
- Можно перейти из трассировки стэка к точному месту ошибки на строке.
- IDE научилась находить дубликаты веток switch, их можно объединить с помощью быстрого исправления.
- Можно перемещать switch-выражения и catch-блоки вверх/вниз с помощью действия Move Statement Up/Down.
- Появилась возможность импортировать и экспортировать шаблоны Structural Search в буфер обмена и из него.
Gradle
- В новых Gradle-проектах действия сборки и запуска делегируются Gradle по умолчанию.
- Делегирование сборки и запуска можно настроить отдельно для каждого Gradle-проекта.
- Когда сборка делегируется Gradle, работает функция HotSwap.
- Встроенная версия Gradle обновилась до 4.10.3.
- С помощью инструмента запуска тестов Gradle теперь можно запускать параметризованные тесты JUnit.
- IDE правильно выбирает, какую тестовую задачу Gradle запускать из редактора.
- В окне Gradle можно просмотреть структуру многомодульного проекта без необходимости запускать команду gradle projects.
- Когда сборка делегируется Maven, работает функция HotSwap.
- Теперь IntelliJ IDEA работает только с Maven 3.3.9. Maven 2 больше не поддерживается.
- Все выходные данные сборки Maven теперь отображаются в одном месте — в окне инструментов Build.
- Диаграммы Maven показывают конфликтующие зависимости и дубликаты. Кроме того, можно отдельно просмотреть соседей выбранного узла или пути к ним, а также отключить рамки на диаграмме.
Системы контроля версий
- Действия Fixup и Squash теперь есть в контекстном меню на вкладке VCS Log, так что вы можете
быстро создавать коммиты с сообщениями fixup! и squash! - Можно черипикнуть файлы из VCS-лога в контектсном меню.
- В окне Branches теперь можно увидеть наличие входящих и исходящих коммитов для отдельных веток, если включена опция Mark Branches that have incoming/outgoing commits in the Branches popup.
- Новый узел Recently Deleted на вкладке Shelf показывает все недавно удаленные отложенные файлы и дает возможность их восстановить.
- Для аннотаций VCS есть режим, в котором отображаются только инициалы автора.
- Выполняя частичный коммит можно выделить все фрагменты кода и снять с них выделение одним действием: используйте новый флажок Uncheck all на панели Diff диалогового окна Commit Changes.
- На панели Project файлы и папки, игнорируемые с использованием Git ignore, выделяются оливковым цветом.
Diff Viewer
- Чтобы скопировать текст в пустое окно Diff, можно перетащить в него файл.
- Теперь в Diff Viewer можно просматривать различия не только по словам, но и по символам.
- Новая опция Swap Sides позволяет выбрать, какой файл в Diff Viewer будет отображаться слева, а какой — справа.
Recent Locations
В новом всплывающем окне Recent Locations (Cmd-Shift-E / Ctrl-Shift-E) можно просмотреть все места в коде, которые вы недавно посещали или редактировали.
Отладчик JVM
- Вычислитель выражений отладчика теперь поддерживает операторы synchronized, выражения assert и операторы switch.
- Во время отладки Java-проекта можно выйти из текущего блока, используя новое действие Step Out of the block.
- Теперь вы можете вызывать действие перехода к курсору с помощью мыши — кликните по нужному номеру строки в режиме отладки.
Редактор
- Работает экспорт настроек стиля кода в JSON-файл. Экспортированные настройки можно использовать для интеграции с внешними инструментами.
- Теперь можно включить soft-wraps для конкретного типа файла.
- При первом использовании сочетания клавиш Ctrl+Y в Windows вы можете назначить его для действия Delete Line или Redo в диалоге Keymap Configuration.
- Добавили раскладку Sublime Text.
- Раскладка VSCode сделана в виде плагина VSCode Text keymap.
Scala
- Подсветка ошибок, неявные подсказки и действия GoTo / Quick Definition / Quick Documentation теперь работают в for-генераторах.
- Действие Find Usages можно вызывать для неявных определений, методов apply/unapply, методов for-генераторов и типов Single Abstract Method (SAM).
- Можно декомпилировать скомпилированные Scala-файлы в Java.
- Появилась возможность выбрать версию форматтера Scalafmt.
- Сделали плагин для формата HOCON.
- Улучшена подсветка ошибок: частичное объединение, подсветка конструкторов, плагин для компилятора better-monadic-for (функция implicit0), kind-projector (полиморфные лямбды на уровне значений), simulacrum (конструкторы типов с большей арностью) и другое.
Groovy
- Поддержка Java-синтаксиса лямбда-выражений из Groovy 3.0.
- Intention actions и инспекции для Groovy работают внутри тела лямбды.
- Отладка Java-лямбд.
Kotlin
- Встроенный Kotlin- плагин обновился до версии 1.3.21.
- Можно создать метод main без параметров с помощью live templates.
- IDE предлагает добавить суффикс Async к функции, возвращающей Deferred.
- Еще один intention поможет преобразовать SAM в виде лямбды в анонимный объект.
- Усовершенствованы преобразования строк.
JavaScript и Typescript
- Новые рефакторинги и intention actions для деструктурирования JavaScript и TypeScript.
- Новое действие для замены функции, возвращающей Promise, на асинхронную функцию с async/await.
- Обновленная документация для CSS и HTML.
- Усовершенствованная консоль в отладчике JavaScript и Node.js.
Docker
Теперь можно отлаживать Java-приложения, запущенные внутри Docker-контейнера.
Плагин Kubernetes
- Добавлена возможность загружать спецификации ресурсов из внешних источников.
- Рефакторинг Rename для чартов можно применять в файлах ресурсов Helm.
Spring Cloud Stream
- Поддержали редактирование проектов в Spring Cloud Stream: подсветка синтаксиса, автодополнение кода, инспекции и быстрые исправления.
- Автодополнение имен привязок работает для значений и ссылок в файлах application.properties и application.yml.
- Переключаться между обработчиками связанных сообщений consumers и producers можно по значку в поле редактора.
Другое
- В IntelliJ IDEA 2019.1 попали все нововведения Android Studio 3.3. Подробнее.
- Ранний доступ к новому JetBrains Runtime 11. Пока что IntelliJ IDEA доступна как с JetBrains Runtime 8, так и с JetBrains Runtime 11.
- Поддержали баз данных Greenplum, Vertica и Apache Hive. В следующем апдейте появится Snowflake.
- Новые настройки keep-alive и auto-disconnect для источников данных.
- Поддержали фреймворк Eclipse Concierge OSGi.
- Появилась возможность поиска настроек плагинов. Даже если плагин установлен вручную, настройки будут отображаться в результатах поиска.
Список важных улучшений получился довольно большим, но в работе над всеми этими классными фичами мы не забывали о качестве и стабильности — продолжаем исправлять ошибки, избавляться от проблем с производительностью и делать IDE еще удобнее.
Полный список можно найти в release notes. Мы благодарим всех, кто голосует за задачи в трекере, отправляет предложения по улучшению, делится мыслями в Твиттере и в комментариях на Хабре. Ваши отзывы помогают нам делать IntelliJ IDEA лучше, продолжайте в том же духе!
JetBrains
Автор: Максим Соболевский