IntelliJ IDEA готовится к внедрению новых возможностей Java 13 Preview. В IDE поддерживаются обновленные Switch-выражения и их новый синтаксис: теперь, если вам нужно вернуть значение из многострочного блока в Java 13, вместо break вы можете использовать ключевое слово yield. Мы также добавили поддержку текстовых блоков, что позволяет вам встраивать в свой исходный код (например, HTML или SQL) более крупные многострочные текстовые блоки. Эта функциональность позволяет вам перемещать данные между двумя форматами, либо экранируя значения (при вставке в строковый тип), либо опуская символы экранирования (при вставке в текстовый блок).
Добавлен новый интеншен, который вы можете запустить для преобразования метода с несколькими операторами return в метод с единой точкой выхода, а также подготовки его к рефакторингу Inline Method («встраивание метода»). В одном методе может присутствовать несколько точек выхода, если указано несколько операторов return. При встраивании подобного метода с помощью IntelliJ IDEA он может быть модифицирован таким образом, чтобы содержать только одну точку выхода в виде одного оператора return. Такие методы более просты в понимании — их выполнение идет по одному пути, и вам не нужно специально искать выход.
Инспекция «Constant conditions & exceptions» дополнена действием «Find Cause». Помимо уведомления о возможных или существующих проблемах инспекция также перенаправляет вас к потенциально проблемному блоку кода. Вам больше не нужно искать необходимую строку, просматривая файл.
Мы объединили инспекцию для Java «Duplicated code fragment» с инструментом для других языков «Locate duplicates». В результате появилась новая мощная инспекция «Duplicated code fragment», сочетающая в себе их лучшие свойства. Инспекция работает в реальном времени, подстраивается под ваш код и умеет работать с другими языками, помимо Java.
Окно автодополнения кода в IntelliJ IDEA 2019.2 стало еще более удобным. Теперь механизм автодополнения распознает самые частые опечатки и предлагает варианты их исправления. Например, если вы случайно напишите слово «retru», IDE предложит заменить его на «return».
Структурный поиск — это полезная функция, которая находит в проекте определенные фрагменты кода. IntelliJ IDEA подсвечивает в редакторе строки, которые соответствуют поисковому запросу, по мере того как вы набираете текст. Более того, в диалоговом окне Structural Search параметры фильтра отображаются прямо в области редактирования. Теперь вам не нужно перезапускать поиск каждый раз, когда вы меняете поисковый запрос.
Теперь вы можете анализировать производительность своего приложения непосредственно в IDE, поскольку на платформах Windows, macOS и Linux IntelliJ IDEA по умолчанию интегрирована с Java Flight Recorder.
Пользователям macOS и Linux также доступен Async Profiler. Этот инструмент может стать вашим ежедневным помощником, поскольку он показывает подробную информацию о том, как распределяется память и процессорное время в приложении.
Теперь все, что нуждается в вашем контроле, можно найти в одном окне. Новая панель инструментов Services предоставляет быстрый доступ к самым полезным инструментам: RunDashboard, Database Console, Docker и окнам Application Servers. Панель также является единым центром, из которого осуществляется управление подключениями, конфигурациями запуска и отладки, серверами приложений, консолями баз данных и многим другим. При работе с базами данных в инструментальном окне отображается таймер запросов, показывающий продолжительность работы каждого подключения, выполняющего запрос.
В IntelliJ IDEA 2019.2 вы можете просматривать файловую систему запущенного Docker-контейнера (окно Services -> узел Docker -> вкладка Files).
В этом релизе интерфейс стал более производительным и отзывчивым во время обновления файловой системы, а также мы устранили большинство задержек, вызванных обработкой изменений в файловой системе. Мы приложили много усилий, чтобы ускорить запуск IDE, поэтому вы почувствуете разницу с первых секунд работы.
Теперь вы можете выбирать отдельную конфигурацию стиля кода для каждой директории. Хотите попробовать? Нужно только разместить файл EditorConfig в корневой директории модуля или пакета.
IDE теперь может управлять всеми настройками стиля кода, используя файл EditorConfig. Все изменения отображаются в окне предпросмотра, поэтому вам больше не придется экспериментировать с настройками вслепую.
IntelliJ IDEA теперь по умолчанию подсвечивает синтаксис более чем 20 различных языков программирования благодаря интеграции с редактором TextMate. Чтобы добавить подсветку для дополнительных языков, скачайте пакет TextMate для нужного языка и импортируйте его в IDE.
Теперь вы можете выбрать, куда переходит курсор: в конец текущего слова или в начало следующего слова. Чтобы выбрать нужный режим, измените параметр Caret Movement в разделе Settings/Preferences | Editor | General.
Еще одна функциональность, позволяющая ускорить ввод текста, теперь включена по умолчанию: клавиша Tab перемещает курсор за пределы закрывающих скобок или кавычек. Эта функциональность работает только при наборе текста.
Чтобы отключить ее, перейдите в раздел Settings/Preferences | Editor | General | Smart Keys и снимите флажок «Jump outside closing bracket/quote with Tab when typing».
Эта крайне удобная (хотя, по сути, не новая) функциональность теперь включена по умолчанию: когда вы вводите фигурную скобку или кавычку, IntelliJ IDEA автоматически заключает выбранный код в фигурные скобки или кавычки.
Если вы предпочитаете не использовать эту функциональность, перейдите в раздел Settings/Preferences | Editor | General | Smart Keys и снимите флажок «Surround selection on typing quote or brace».
Изменился стандартный набор сочетаний клавиш для macOS — с Mac OS X на macOS 10.5+. Мы также переименовали наборы горячих клавиш: набор для Mac OS X 10.5 теперь называется Default for macOS, а устаревший (Mac OS X) — IntelliJ IDEA Classic.
Теперь вы можете легко открывать в IntelliJ IDEA файлы размером более 25 МБ и выполнять по ним поиск без утомительного ожидания. Это небольшое изменение особенно порадует тех, кто работает с логами.
Исправления, предложенные инспекциями кода, теперь можно применять еще быстрее. Всплывающее окно инспекции не только описывает проблему, но и сразу же показывает вам наиболее подходящее решение. Нажмите Alt+Shift+Enter, если исправление подходит, или используйте сочетание Alt+Enter, чтобы выбрать другой вариант из списка.
У диалогового окна New Class обновился внешний вид. Кроме того, окно показывает, какие типы классов можно создать в этом контексте.
В версии IDE для Windows 10 теперь используется современный безрамочный дизайн.
Новая опция в Project View позволяет отслеживать изменения в файлах проекта: в дереве можно включить показ даты и времени последнего изменения и размера файлов. Чтобы включить эту функциональность, установите флажок View | Appearance | Descriptions in Tree Views.
Вкладки редактора и отладчика теперь выглядят одинаково в темах Light и Darcula. В светлой теме высота вкладок совпадает с высотой окна инструментов. Чтобы сделать интерфейс визуально легче, мы убрали белую линию под вкладками.
Мы продолжаем удалять малоиспользуемые иконки с панелей инструментов и визуально разгружать интерфейс: например, панель в окне Find Usages стала более компактной. Некоторые иконки были сгруппированы, другие полностью удалены.
В этой версии добавлена долгожданная диаграмма зависимостей Gradle. Просто кликните по иконке Show Dependencies на панели инструментов Gradle или нажмите Alt+Shift+Ctrl+U/Alt+Shift+Cmd+U. Выделите узлы на диаграмме, чтобы изучить их соседей, или кликните на узлы, чтобы просмотреть, как они связаны с корневым узлом.
Начиная с версии 2019.2 редактировать файлы build.gradle будет еще проще. IntelliJ IDEA теперь поддерживает синтаксис объявления заданий и различные нотации для отображения зависимостей, а также предлагает возможность автодополнения кода внутри блоков зависимостей и замыканий конфигурации зависимостей.
Дерево состояния и консоль вывода информации об операциях Gradle теперь отображаются бок о бок, чтобы помочь вам контролировать процесс синхронизации/сборки. Это позволяет вам получать от Gradle более детальную и контекстуально значимую информацию.
IntelliJ IDEA теперь показывает информацию о результатах импорта в окне Build вместе с информацией о ходе сборки. Благодаря этому, следить за ходом работы, находить ошибки и ориентироваться в проекте стало проще, а кроме того, работа Maven и Gradle в IntelliJ IDEA стала более упорядоченной.
Автодополнение зависимостей в pom.xml теперь включено и работает по умолчанию. Раньше эта опция начинала работать только после запуска индексации репозитория Maven.
В этом выпуске реализована нативная обработка игнорируемых файлов Git. Теперь обработка игнорируемых файлов доступна по умолчанию для всех поддерживаемых систем контроля версий.
Больше не нужно вручную добавлять файлы в список .gitignore, используя раздел настроек. Все стало гораздо проще: добавить файл в список игнорируемых файлов можно либо из дерева проекта, либо со вкладки Local Changes в инструментальном окне VCS. Плагин .ignore, который использовался для поддержки игнорирования в Git и HG, теперь обеспечивает только расширенную функциональность VCS-игнорирования, поскольку основная функциональность уже является частью платформы.
IntelliJ IDEA 2019.2 вносит существенные изменения в проекты, использующие Git или Mercurial. Для коммита файлов не нужно открывать отдельное диалоговое окно — теперь вы можете выполнять коммит из вкладки Local Changes в окне Version Control. Здесь вы можете просматривать измененные файлы и при необходимости вносить изменения. Диалог коммита не блокирует остальную среду IDE.
Чтобы опробовать эту функциональность, установите флажок «Commit from the Local Changes without shown a dialog» в разделе Settings/Preferences | Version Control | Commit Dialog.
Если вы выполняете коммит, не включив в него какие-либо файлы, которые обычно включали ранее, IntelliJ IDEA 2019.2 напомнит вам о «забытых» файлах.
IntelliJ IDEA предлагает вам добавлять в систему контроля версий файлы, скопированные в проект извне, а также файлы, созданные в консоли или во время выполнения кода. В IDE также предусмотрены настройки, позволяющие добавлять такие файлы в систему контроля версий автоматически.
Теперь вы можете выбрать, какие столбцы хотите видеть во вкладке Log. Нажмите на значок с изображением глаза, выберите команду Show Columns, а затем выберите столбцы, которые вы хотите отображать: «автор», «дата» или «хэш коммита».
Теперь для отмены операций merge и cherry-pick в Git больше не нужно переключаться в терминал. В ходе выполнения операции во всплывающем окне Branches отображается опция Abort Merge или Abort Cherry-pick.
С легкостью отслеживайте изменения в проекте. Теперь, когда вы выполняете над выбранной директорией в панели обзора проекта действие Git | Show History, во вкладке Log показываются изменения, затрагивающие эту директорию.
Таким же образом можно увидеть изменения, сделанные сразу в нескольких папках. Выберите интересующие вас папки правой кнопкой мыши и нажмите Git | Show History.
Раньше, когда вы выполняли действие Update Project или Pull, во вкладке Update Info окна Version Control отображался список измененных файлов в древовидной форме. В версии 2019.2 информация об обновлении показывается в виде списка коммитов, полученных в ходе обновления. Вкладка Update Info теперь имеет тот же формат, что и вкладка Log.
Действие «Compare with Current» во всплывающем окне Branches разделено на два отдельных действия: «Compare with Current» и «Show Diff with Working Tree». Действие «Compare with Current» теперь показывает различия между списками коммитов, тогда как «Show Diff with Working Tree» показывает различия между файлами.
В режиме «Collapse Unchanged Fragments» в окне Diff теперь отображается название метода, к которому относится текущий фрагмент измененного кода. Таким образом у вас есть возможность не только видеть изменения, но и понимать их контекст.
Плагин Kotlin в IntelliJ IDEA обновлен до версии 1.3.41.
В IntelliJ IDEA 2019.2 доступен более широкий набор возможностей помощи при написании кода Kotlin, где используется JPA. Новый скрипт Generate Kotlin Entities позволяет генерировать для выбранных таблиц entity-классы Kotlin. Скрипт легко настраивается — перейдите в директорию Scripts и попробуйте поэкспериментировать со скриптом, настроив его под конкретную задачу. Кроме того, теперь вы можете перейти к столбцу или таблице, которым соответствует класс, при помощи действия «Go to Declaration» (Cmd+B/Ctrl+B) в IDE.
Когда вы останавливаете выполнение кода в точке останова, расположенной в функции с модификатором suspend или в лямбда-функции, в разделе «Async stack trace» теперь показывается состояние переменных на момент последней приостановки. Можно просматривать всю трассировку стека suspend-функций, начиная с последней точки приостанова в текущей корутине, и изучать сохраненные значения переменных. Это позволит вам отследить цепочку вызовов, которая привела вас к текущей точке выполнения.
Наши пользователи знают, что функция Scratch files в Kotlin позволяет экспериментировать с кодом. Теперь вам доступен интерактивный режим, в реальном времени показывающий результаты по истечении определенного периода ожидания; повторно запускать скрипт не требуется.
Как часто вы проверяете список TODO в проекте? Теперь IntelliJ IDEA корректно подсвечивает многострочные TODO-комментарии к коду Kotlin и отображает их в виде списка в окне TODO.
Если вы используете внешние аннотации допустимости значения null для Java, то IDE может предупреждать вас о неправильном использовании аннотированных Java-методов из Kotlin. Обратите внимание, что данная функциональность реализована исключительно в IDE; компилятор Kotlin скомпилирует такой код без ошибок, в то время как IDE покажет дополнительное предупреждение.
Мы расширили синтаксис Groovy 3.0 и нашу поддержку вложенных блоков кода. Кроме того, стрелки и фигурные скобки в выражениях замыкания теперь по умолчанию отображаются жирным шрифтом, что помогает понимать структуру кода и отличать блоки кода от замыканий.
Также доступны быстрые исправления, с помощью которых можно явным образом указать типы всех параметров в заголовках Groovy-методов, где они не указаны.
Теперь, вместо того чтобы подчеркивать ошибки несоответствия типа красной волнистой линией, которая может растянуться на несколько строк, IntelliJ IDEA отображает подсказку с типом выражения и подсвечивает в ней только подтип, который не соответствует ожидаемому.
Подсказки о несоответствии типа стали более подробными и показываются с выравниванием по вертикали, а также демонстрируют сравнение кода. Алгоритм учитывает синтаксический сахар, подтипы, вариантность и другие нюансы.
Подсказки аннотаций типов теперь поддерживают динамическое сворачивание, всплывающие подсказки, навигацию и подсветку парных скобок. Также подсказки типов теперь отображаются только тогда, когда в них действительно есть необходимость.
В предыдущих версиях для оборачивания выражения в блок приходилось использовать интеншены. Теперь IntelliJ IDEA может добавлять или удалять закрывающие фигурные скобки автоматически во время ввода.
В IntelliJ IDEA для обозначения избыточного кода, такого как неиспользуемые импорты или недостижимый код, всегда использовался серый цвет (в зависимости от цветовой схемы). Однако в предыдущих версиях некоторые другие виды избыточного кода подсвечивались как «общие предупреждения и ошибки», что приводило к засорению кода и затрудняло обнаружение реальных ошибок. Поэтому теперь мы используем серый цвет для обозначения любых видов избыточного кода, благодаря чему подсветка стала менее навязчивой.
Теперь поддерживается дополнение блоков case целиком (ранее поддерживалось только дополнение паттернов внутри блоков case). Дополнение работает не только для операторов match, но и для функций высшего порядка.
В многострочные строковые литералы с отступами теперь можно добавлять фрагменты кода на других языках (language injections).
IntelliJ IDEA теперь поддерживает протокол BSP (Build Server Protocol, протокол сервера сборки), стандартизирующий коммуникации между инструментами сборки (серверами) и средами разработки (клиентами). Поддержка BSP долгое время была экспериментальной, однако теперь получила полноценную реализацию в IDE.
Новый интеншен «Propagate to destructuring» (Alt+Enter) позволяет заменять избыточные переменные еще одной деструктуризацией, когда это возможно. Чтобы полностью убрать деструктуризацию, используйте интеншен «Replace destructuring with property or index access». Также IDE теперь предупреждает вас, если логическое выражение содержит лишние части, и предлагает упростить его.
Теперь, когда вы переименовываете идентификатор в файле JavaScript или TypeScript, IDE группирует динамические вхождения отдельно от остальных вхождений и по умолчанию исключает их из рефакторинга. Это позволяет проводить рефакторинг с большей точностью и дает вам возможность лучше контролировать переименование с помощью окна Refactoring Preview.
Используете Vuetify или BootstrapVue в своем приложении Vue.js? Мы перешли на новый принцип работы с данными библиотеками в IDE. Автодополнение кода предлагает более релевантные результаты для компонентов и их свойств, входящих в эти и некоторые другие библиотеки Vue.
IntelliJ IDEA Ultimate теперь поставляется с плагином Node.JS.
Теперь вы можете находить нужные вам данные, даже если не знаете их точного расположения. Кликните правой кнопкой мыши на источнике данных или их группе, где вы хотите выполнить поиск. Затем выберите Full-text Search или нажмите Ctrl+Alt+Shift+F / Cmd+Alt+Shift+F.
Будут показаны только те строки, которые содержат нужные вам данные. Если вам не удается найти данные из-за большого количества столбцов, используйте текстовый поиск в редакторе данных (Ctrl/Cmd+F).
Найти нужный объект в окне GoTo бывает непросто, особенно если похожих объектов много. В IntelliJ IDEA 2019.2 можно выбрать в качестве области поиска конкретный источник данных или их группу. Та же функциональность доступна и в окне Find in Path. Это крайне полезно при поиске исходного кода в DDL других объектов.
При использовании Step Into на строчке кода, содержащей вызовы нескольких методов, вы можете выбрать метод, ссылку на метод или лямбда-функцию.
Новая версия предлагает многофункциональную поддержку редактирования скриптов командных оболочек, в том числе автодополнение слов и путей, быстрый доступ к документации и даже переименование идентификаторов в тексте. Для скриптов командных оболочек можно также создавать конфигурации запуска, но это далеко не все. Мы интегрировали в IntelliJ IDEA ряд внешних инструментов, чтобы сделать поддержку скриптов командной оболочки еще более продвинутой. Теперь вы можете находить и исправлять ошибки в скриптах при помощи Shellcheck, улучшать их разметку при помощи Shfmt, а также вызывать Explainshell нажатием Alt+Enter для получения полного описания нужных вам команд.
Теперь в HTTP-клиент можно вставить строку запроса cURL, и IDE автоматически преобразует ее в полный запрос.
Представьте, что вы сделали запрос на аутентификацию в сервисе, а в последующих запросах собираетесь обратиться к конечным точкам, требующим специальных разрешений. Раньше это было невозможно, поскольку файлы cookie, полученные в результате первого запроса, не сохранились бы. Но теперь IDE сохраняет все полученные файлы cookie и передает их при выполнении последующих запросов.
В предыдущих версиях терминал иногда разрывал ссылки при переносе строк, а также неправильно переносил некоторые строки. Теперь, если запущенная команда выводит длинную строку, терминал мягко переносит ее на следующую строку, сохраняя работоспособность всех ссылок. При нажатии на ссылку с переносом она немедленно откроется в браузере.
Если вы запускаете инструмент merge IntelliJ IDEA прямо из терминала (например, из терминала операционной системы), вы заметите, что коды ответа стали понятнее. Теперь вы сможете вписать IDE практически в любой рабочий процесс. Также поддерживается параметр командной строки --wait, позволяющий редактировать файлы из терминала в режиме монопольного доступа.
Теперь IDE отображает подробную информацию о плагинах непосредственно на странице Plugins в диалоге Settings/Preferences, поэтому вам больше не нужно открывать каждый плагин по отдельности. Мы убрали вкладку Updates, и теперь кнопка «Update» располагается рядом с названием плагина во вкладке Installed. В меню, открывающееся при нажатии на иконку с шестеренкой, также добавлены две новые команды, позволяющие включить или выключить все скачанные плагины сразу. Больше не нужно кликать мышкой по каждому плагину, а сэкономленное время можно потратить продуктивно.
Новая версия IntelliJ IDEA 2019.2 с плагином Kubernetes поддерживает редактирование файлов Kustomize с автодополнением ключей и путей, а также многочисленные инспекции для файлов ресурсов Kustomize.
С помощью рефакторинга Rename теперь можно переименовывать файлы и директории, в которых хранятся ресурсы Kustomize. Сочетание клавиш Ctrl+B/Cmd+B позволяет перейти по пути, объявленному в файле ресурсов Kustomize, к связанным с ним пакетам или файлам в окне Projects.
Теперь у вас есть возможность загружать спецификации определений пользовательских ресурсов (CRD) из внешних источников, используя URL-адреса. Для того чтобы добавить спецификации, перейдите в раздел Settings/Preferences | Languages & Frameworks | Kubernetes и добавьте URL-адреса спецификаций CRD (ранее можно было добавлять CRD из локальных файлов).