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

Темы интерфейса

Кастомизация тем интерфейса

У нас отличные новости: в IntelliJ IDEA 2019.1 появилась поддержка пользовательских тем интерфейса. Теперь вы легко можете создавать темы самостоятельно! Подробнее

Чтобы вас вдохновить, мы подготовили несколько совершенно новых тем. Добавьте цвета в свою IDE: загрузите одну из новых тем и выберите ее в меню Appearance. Подробнее

Java

Поддержка Switch Expressions из Java 12 (Preview)

В IntelliJ IDEA 2019.1 появилась поддержка функции Switch Expressions из Java 12 Preview (JEP 325).

Мы подготовили для вас ряд новых инспекций и быстрых исправлений, которые упростят знакомство с Java 12. IDE обнаруживает операторы switch, которые можно заменить на улучшенные операторы или выражения, и предоставляет быстрое исправление для выполнения такого преобразования. IntelliJ IDEA также увидит дубликаты ветвей в switch и предложит автоматически их объединить. И это лишь некоторые из новых возможностей.

Подробнее

Улучшенный рефакторинг Extract Variable

Рефакторинг Extract Variable теперь сохраняет семантику даже лучше, чем раньше. IDE теперь умеет извлекать переменную даже из инициализатора поля, а рефакторинг Extract Variable сможет автоматически преобразовать тернарный оператор в if, если условие будет важным. Условие считается важным, если оно имеет проверку на null или проверку instanceof.

Более точная подсветка условий в тернарных выражениях

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

Благодаря этой новой функции подсветка стала более точной и в случае switch-выражений.

Улучшенный анализ математических операций

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

Вывод чистоты конструкторов из источников

IntelliJ IDEA 2019.1 лучше поддерживает аннотации @Contract. IDE теперь может автоматически определять «чистоту» конструкторов из источников.

Переход из трассировки стека к точному месту ошибки на строке

Когда вы кликаете по трассировке стека Java, IDE попытается определить точное место на строке, в которое нужно переместить курсор. Раньше это привело бы вас только к первому столбцу соответствующей строки.

Обнаружение одинаковых веток switch

IDE научилась находить дубликаты веток switch, их можно объединить с помощью быстрого исправления.

Gradle

Делегирование сборки и запуска можно настроить отдельно для каждого Gradle-проекта

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

В новых Gradle-проектах действия сборки и запуска делегируются Gradle по умолчанию.

IDE правильно выбирает, какую тестовую задачу Gradle запускать из редактора

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

Когда сборка делегируется Gradle, работает функция HotSwap

Теперь, когда сборка делегируется Gradle, запускается функция HotSwap и сборка проекта перезагружает классы.

HotSwap также работает, когда сборка делегируется Maven.

Maven

Результаты сборки отображаются в окне Build

Теперь все результаты сборки Maven можно удобно просмотреть в окне инструмента Build. Больше нет необходимости смотреть их в окнах Run и Messages. Кроме того, результаты сборки можно посмотреть еще и в виде лога.

Улучшенные диаграммы Maven

Для диаграмм Maven были добавлены новые опции. Можно легко обнаружить конфликты и дублированные зависимости с помощью действия «Show Conflicts/Duplicates». Чтобы просмотреть все пути к узлу, выберите «Show Paths: Root -> Selection».

Если вам нужно просмотреть зависимости определенного узла, выберите «Show Neighbors of Selected Nodes». Кроме того, теперь можно отключить рамки на диаграмме.

Система контроля версий

Действия Fixup и Squash доступны на вкладке VCS Log

Действия Fixup и Squash теперь доступны в контекстном меню на вкладке VCS Log, так что вы можете быстро создавать коммиты с сообщениями fixup! и squash!

Действие cherry-pick для отдельных файлов в списке коммитов VCS

В IntelliJ IDEA 2019.1 в контекстном меню списка коммитов VCS появилось действие cherry-pick для выбранных файлов. Вызовите контекстное меню и выберите опцию «Apply Selected Changes».

Просмотр входящих и исходящих коммитов

Во всплывающем окне Branches можно видеть наличие входящих и исходящих коммитов для отдельных веток. Для этого включите опцию «Mark Branches that have incoming/outgoing commits in the Branches popup» в разделе «Preferences/Settings | Version Control | Git».

Восстановление удаленных отложенных файлов

Теперь можно просмотреть все недавно удаленные файлы и восстановить любые отложенные. Используйте новый раздел «Recently Deleted» во вкладке Shelf в инструментальном окне VCS.

Новый флажок «Uncheck all» для частичных коммитов в Git

Теперь, выполняя частичный коммит, можно снять выделение со всех фрагментов кода одним действием: используйте новый флажок «Uncheck all» на панели Diff диалогового окна Commit Changes.

Инициалы вместо полных имен в аннотациях VCS

В аннотациях VCS теперь можно включить отображение инициалов вместо полного имени автора. Кликните правой кнопкой мыши на вкладке аннотаций и выберите View | Names | Initials в контекстном меню.

Diff

Перетаскивание файла в окно Diff

Чтобы скопировать текст в пустое окно Diff, можно просто перетащить в него файл.

Возможность менять местами сравниваемые файлы

Теперь можно поменять местами сравниваемые файлы при использовании действий «Compare two files», «Compare with clipboard» и «Blank Diff». Новая опция Swap Sides позволяет выбрать, какой файл будет отображаться слева, а какой — справа.

Опция работает и при сравнении директорий.

Просмотр различий по символам

Теперь в инструменте просмотра diff-ов можно просматривать различия не только по словам, но и по символам. Это особенно полезно, если в исходном коде есть строки, которые содержат символы из разных алфавитов, например иероглифы.

Всплывающее окно Recent Locations

В IntelliJ IDEA 2019.1 появилось новое всплывающее окно «Recent Locations». В нем отображаются фрагменты кода, которые вы недавно редактировали или просматривали. Элементы списка отсортированы в хронологическом порядке: те места в коде, к которым вы обращались позднее всего, находятся в верхней части списка. Сочетание клавиш для вызова всплывающего окна «Recent Locations»: Cmd-Shift-E / Ctrl-Shift-E.

Отладчик JVM

Поддержка «synchronized», «assert» и оператора «switch» в вычислителе выражений

Вычислитель выражений отладчика теперь поддерживает операторы «synchronized», выражения «assert» и операторы «switch».

Выход из текущего блока

Теперь во время отладки Java-проекта можно выйти из текущего блока, используя действие Step Out. Новое действие вы найдете в меню Run.

Выполнение отладки до указателя мыши

Если во время отладки вы предпочитаете пользоваться мышью, теперь действие «Run to cursor» можно активировать кликом по номеру строки.

Scala

Подсветка for-генераторов

В IntelliJ IDEA 2019.1 мы расшили поддержку for-генераторов: для них теперь доступны подсветка ошибок, неявные подсказки и действия GoTo / Quick Definition / Quick Documentation.

Действие Find Usages для неявных определений

Действие Find Usages можно вызывать для неявных определений, методов apply/unapply, методов for-генераторов и типов Single Abstract Method (SAM).

Декомпиляция в Java

Теперь, даже если у .class-файлов Scala нет исходников, их можно декомпилировать в Java.

Выбор версии Scalafmt

В версии 2018.2 мы добавили поддержку инструмента форматирования Scalafmt, а в этом релизе расширили ее возможности. IntelliJ IDEA не только позволяет использовать любую версию Scalafmt, но и поможет ее скачать.

Отдельный плагин для HOCON

Мы вынесли поддержку HOCON в отдельный репозиторий и плагин, который можно устанавливать и удалять по требованию.

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

В этом релизе мы значительно улучшили подсветку ошибок по нескольким направлениям:

  • Частичное объединение, а также объединение переменных типа в общем.
  • Подсветка конструкторов, вызовы приватных конструкторов.
  • Плагин для компилятора Better-monadic-for: функциональность `implicit0`.
  • Kind-projector: полиморфные лямбды на уровне значений.
  • Simulacrum: конструкторы типов с большей арностью.

Groovy

Поддержка Java-синтаксиса лямбда-выражений из Groovy 3.0

IntelliJ IDEA 2019.1 поддерживает экспериментальную функциональность Groovy 3.0 — Java-синтаксис лямбда-выражений. IDE предоставляет поддержку редактирования кода для таких выражений, в том числе автодополнение, подсветку синтаксиса и вывод типов. Интеншены и инспекции для Groovy корректно работают внутри тела лямбды. Также можно использовать возможности форматирования и отладки.

Kotlin

Встроенный Kotlin-плагин был обновлен до версии 1.3.21

Шаблон Live Template для создания метода «main» без параметров

Начиная с Kotlin 1.3 вы можете использовать функцию main без параметров. Соответственно, в новой версии IntelliJ IDEA можно создать метод main без параметров, используя шаблон «main».

Обратите внимание, что теперь сокращение «main» по умолчанию создает новую версию метода «main». Если вам нужно передать аргументы, используйте сокращение «maina».

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

Интеншен «Convert concatenation to template» позволяет удалить ненужные вызовы .toString() для каждого параметра.

Преобразование SAM в виде лямбды в анонимный объект

Для того чтобы преобразовать конструкцию, использующую лямбду с SAM, в анонимный объект, появился новый интеншен.

Новый интеншен для корутин

При работе с корутинами IDE предложит добавить суффикс «Async» к функции, возвращающей «Deferred».

JavaScript и TypeScript

Новые интеншены для деструктуризации в JavaScript и TypeScript

В IntelliJ IDEA 2019.1 появился целый набор рефакторингов и интеншенов, которые помогут вам использовать деструктуризацию в коде на JavaScript и TypeScript.

Замена функции, возвращающей Promise, на асинхронную функцию с async/await

Вы можете автоматически заменить функцию, которая возвращает Promise с вызовами .then() и .catch(), на асинхронную функцию с async/await. Просто нажмите Alt-Enter на имени функции и выберите действие Convert to async function. Это действие доступно для TypeScript, JavaScript и Flow.

Обновленная документация для CSS и HTML

Во всплывающем окне документации для CSS и HTML (F1 / Ctrl-Q) теперь отображаются описания с сайта MDN, в том числе информация о поддержке свойств, тегов и атрибутов в разных версиях браузера.

Усовершенствованная консоль отладчика JavaScript

Интерактивная консоль отладчика в инструментальном окне Debug для JavaScript и Node.js теперь отображает объекты в виде дерева, а также позволяет менять оформление сообщений с помощью CSS и группировать их, используя методы console.group() и console.groupEnd(). Кроме того, сообщения можно отфильтровать по типу.

Docker

Отладка внутри Docker-контейнера

Теперь можно подключить отладчик к Java-приложению, запущенному внутри Docker-контейнера. IDE позволяет производить отладку внутри контейнеров, построенных на основе Dockerfile или созданных с помощью Docker Сompose (docker-compose.yml).

Kubernetes

Поддержка внешних ресурсов

В IntelliJ IDEA 2019.1 добавлена возможность загружать спецификации ресурсов из внешних источников. На данный момент это можно делать только из локальных файлов. Чтобы добавить спецификации, перейдите в раздел настроек Preferences/Settings | Languages & Frameworks | Kubernetes и добавьте путь к спецификации ресурса.

Рефакторинг Rename для чартов в файлах ресурсов Helm

В новой версии можно применять рефакторинг Rename для чартов в шаблонных файлах ресурсов Helm. Обратите внимание: для того чтобы включить эту функциональность, необходимо установить плагин Go template.

Редактор

Экспорт настроек стиля кода в JSON-файл

Теперь можно экспортировать в JSON-файл все настройки стиля кода, даже если они соответствуют настройкам по умолчанию. Перейдите в Preferences/Settings | Editor | Code Style и выберите опцию «Export | IntelliJ IDEA code style JSON» в раскрывающемся меню.

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

Теперь можно включить мягкий перенос строк для конкретного типа файла: используйте поле «Soft-wrap files» в меню Preferences/Settings | Editor | General.

Назначение сочетания клавиш Ctrl+Y в Windows

При первом использовании сочетания клавиш Ctrl+Y в Windows вам будет предложено назначить на него действие «Delete Line» или «Redo» в диалоге Keymap Configuration.

Раскладка Sublime Text

Мы продолжаем добавлять в IntelliJ IDEA наборы сочетаний клавиш, к которым привыкли пользователи разных инструментов, и в версии 2019.1 появились сочетания клавиш Sublime Text. Чтобы начать использовать сочетания клавиш из Sublime Text, перейдите в Preferences/Settings | Keymap и выберите Sublime Text в раскрывающемся списке — только и всего! Теперь вы сможете использовать сочетания клавиш из Sublime Text в IntelliJ IDEA.

Плагин сочетаний клавиш VS Code

Теперь можно использовать стандартные сочетания клавиш VS Code — для этого есть отдельный плагин! Установите его и выберите сочетания клавиш VS Code в разделе Preferences/Settings | Keymap.

Поддержка Java-синтаксиса лямбда-выражений из Groovy 3.0

IntelliJ IDEA 2019.1 поддерживает экспериментальную функциональность Groovy 3.0 — Java-синтаксис лямбда-выражений. IDE предоставляет поддержку редактирования кода для таких выражений, в том числе автодополнение, подсветку синтаксиса и вывод типов. Интеншены и инспекции для Groovy корректно работают внутри тела лямбды. Также можно использовать возможности форматирования и отладки.

Spring Cloud Stream

Поддержка редактирования кода для Spring Cloud Stream

В IntelliJ IDEA появилась многофункциональная поддержка редактирования кода для проектов Spring Cloud Stream: подсветка синтаксиса, инспекции, быстрые исправления и автодополнение кода (включая автодополнение имен привязок для значений и ссылок в файлах application.properties и application.yml).

Переключение между связанными producers и сonsumers

Переключаться между обработчиками связанных сообщений consumers и producers можно по значку в поле редактора. Обратите внимание, что consumers и producers должны быть связаны в файлах application.properties или application.yml через конфигурационный ключ spring.cloud.stream.bindings.

Thymeleaf

Улучшенная поддержка Thymeleaf

Теперь можно переходить к фрагментам шаблона, указанным в атрибутах «th: replace» и «th: include». Для таких фрагментов доступно автодополнение кода и рефакторинг Rename.

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

Поддержка баз данных Greenplum, Vertica и Apache Hive

IntelliJ IDEA поддерживает новые базы данных:

  • Greenplum — аналитическая СУБД на основе PostgreSQL.
  • Vertica — колоночная база для хранения больших объемов данных.
  • Apache Hive — хранилище данных на основе платформы Hadoop, позволяющее запрашивать и анализировать данные.

Обновленный диалог соединения

Мы обновили внешний вид диалогового окна соединения и добавили несколько важных настроек. В поле «Startup script» можно вписать SQL-запрос, который будет выполняться при каждом создании подключения. Кроме того, можно установить время ожидания в секундах, по истечении которого IDE будет автоматически разрывать соединение, или задать интервал отправки запросов для поддержания соединения в рабочем состоянии.