Привет! Недавно мы запустили IntelliJ IDEA 2018.1 – первое большое обновление в этом году. В нем вас ждет множество важных улучшений: поддержка частичных коммитов Git, отображение внешних аннотаций в коде, функциональность, добавленная из Android Studio 3.0, и многое другое. Ниже мы расскажем об этом подробнее, а попробовать новую версию можно здесь.
Улучшения в автодополнении кода
Теперь автодополнение поддерживает приведение типов в цепочках вызовов Stream API. Автодополнение кода предлагает не только вариант дополнения, соответствующий имеющемуся вызову filter(String.class::isInstance), но также и вариант с автоматическим приведением типа.
В новом релизе также было улучшено постфиксное автодополнение кода. Теперь IDE позволяет создавать свои собственные шаблоны Java, а также изменять и переименовывать предопределенные шаблоны Java, в разделе настроек Preferences | Editor | General | Postfix Completion.
Улучшенный анализ порядка выполнения
Мы улучшили анализ порядка выполнения кода: теперь он способен определять более широкий спектр проблем в коде. Прежде всего, IDE теперь отслеживает отношения между переменными, такие как «больше чем» и «меньше чем». При сравнении переменных во всех возможных ветвях кода IDE определяет условия, которые всегда являются истинными (или ложными).
Также IDE теперь обнаруживает незавершенные цепочки Stream API.
IDE показывает предупреждение при попытке присвоить переменной значение, которое она уже содержит. Это может помочь в обнаружении и удалении избыточного кода.
Также IDE предупреждает об изменении неизменяемых (immutable) коллекций.
Подробнее узнать об улучшениях в анализе порядка выполнения можно в нашем блоге.
Как и всегда, в релизе 2018.1 присутствует целый ряд новых инспекций и быстрых исправлений. Теперь IntelliJ IDEA определяет циклы while с идемпотентным телом и предупреждает о них, так как в большинстве случаев это указывает на ошибку в коде, которая может стать причиной зависаний программы.
Также IDE теперь определяет бесконечные циклы while с условным выходом в конце или в начале. В таких случаях предлагается быстрое исправление, заменяющее условный выход на условие цикла, так как в большинстве случаев это повышает удобочитаемость кода.
Новая IntelliJ IDEA теперь предупреждает вас о бесконечных потоках без короткого замыкания, поскольку такие операции завершаются только при выбросе исключения. Такой код может привести к бесконечному циклу или переполнению памяти.
Теперь содержимое массивов можно сортировать в алфавитном порядке.
Если в коде присутствует конструктор копирования, копирующий не все поля класса, будет показано уведомление. Обратите внимание, что IDE не учитывает поля с модификатором типа transient как обязательные для копирования.
Новая IntelliJ IDEA теперь предупреждает вас об очевидно избыточных вызовах close() и предоставляет быстрое исправление (quick-fix) для их удаления.
Новая версия включает в себя инспекции и быстрые исправления, предназначенные специально для Java 9. Для сервисов, загружаемых при помощи ServiceLoader, IDE проверяет наличие объявления в файле module-info.java и в случае его отсутствия предлагает быстрое исправление.
При наличии в module-info.java упоминания отсутствующего класса IDE теперь предлагает создать его. То же самое относится и к отсутствующим экспортируемым пакетам. (IDE создает пакет с классом в соответствующей директории, так как экспортировать пустые пакеты в Java 9 нельзя.)
Теперь, если возможные проблемы в выбранной области видимости решаются различными способами, рекомендуемые быстрые исправления можно сгруппировать по типу. Для этого нажмите кнопку Fix partially в окне инструментов Inspection Results.
Поддержка аннотаций Tag для JUnit 5
Новая IntelliJ IDEA 2018.1 теперь поддерживает аннотации Tag для JUnit 5 — их можно включать в область теста, а также в помеченные классы и методы. В диалоге Run/Debug Configuration выберите вариант Tags (JUnit 5) из раскрывающегося списка Test kind. Для фильтрации тестов по идентификатору используйте поле UniqueId.
Генерация кода
При создании тестового класса IntelliJ IDEA по умолчанию добавляет «Test» в конец названия класса. Теперь можно настроить шаблон тестового класса так, чтобы «Test» добавлялось в начало его названия. Настроить это можно в Preferences | Editor | Code Style | Java | Code Generation.
Отладчик JVM
Новое действие Throw Exception позволяет генерировать исключение из определенного места в программе без изменения кода. Действие доступно из меню Run | Throw Exception или же из контекстного меню фрейма во время сессии отладки.
Вывод трассировки стека для точек прерывания
Новая IntelliJ IDEA 2018.1 позволяет выводить в консоль трассировку стека для точек прерывания. Для этого нужно включить настройку Stacktrace в диалоговом окне Breakpoints. IDE также позволяет видеть в журнале консоли трассировки стека для нескольких точек прерывания одновременно.
Теперь вы также можете скопировать трассировку стека для текущего потока посредством нового действия Copy Stack, доступного из контекстного меню фрейма.
Компилятор Java
На страницу Java Compiler в настройках (Preferences | Build, Execution, Deployment | Compiler | Java Compiler) добавлен новый флажок Use --release option for cross-compilation (Java 9 and later), который установлен по умолчанию. Если нужно использовать с Java 9 параметры --source и --target, одновременно выполняя линковку с классами Java 9, этот флажок можно снять.
Также теперь можно использовать определенную версию компилятора ECJ. В раскрывающемся меню Use Compiler выберите Eclipse и укажите путь к jar-файлу компилятора.
Редактор
В IntelliJ IDEA можно добавлять к коду внешние аннотации, даже когда прямая аннотация исходного кода невозможна (например, в случае с классами библиотек). Настроить аннотации можно в файлах annotations.xml, хранящихся за пределами исходного кода.
Раньше в IDE показывался только значок «@» на полях возле строки кода с внешней аннотацией, но теперь внешние аннотации показываются непосредственно в коде.
IntelliJ IDEA теперь позволяет вам видеть автоматически выведенные аннотации NotNull и @Nullable прямо в исходном коде (а не только в виде значка на полях рядом с соответствующей строкой, как раньше). Для этого установите флажок Show inferred annotations inline в Preferences | Editor | General | Appearance.
Если с вашим кодом что-то не так, новая IntelliJ IDEA 2018.1 поможет вам быстро обнаружить проблемы. IDE теперь подсвечивает свернутые участки кода, содержащие ошибки или предупреждения, и окрашивает их цветом, соответствующим статусу валидации.
Также свернутые участки кода подсвечиваются при поиске по текущему файлу, если они содержат совпадения.
Когда вы перемещаете курсор на идентификатор и IDE подсвечивает его вхождения, теперь вы можете использовать сочетания «Alt + Прокрутка вниз» и «Alt + Прокрутка вверх» для перехода к следующему или предыдущему вхождению, соответственно.
Конфигурация проектов
Для конфигураций Application и Spring Boot в диалоге Run/Debug Configurations добавлена новая опция Include dependencies with “Provided” scope. Функция позволяет при необходимости добавлять «provided»-зависимости в classpath. Обратите внимание, что для приложений Spring Boot опция Include dependencies with “Provided” scope включена по умолчанию.
Новый релиз также позволит изменять полные имена нескольких модулей одновременно, используя новое действие Change Module Names…, доступное из контекстного меню диалога Project Structure.
Улучшенная замена
В IntelliJ IDEA 2018.1 можно выполнять предварительный просмотр результатов замены по регулярному выражению в окне Replace in Path.
Улучшенный структурный поиск
Мы улучшили структурный поиск (Structural Search), чтобы находить вызовы методов с аннотациями было проще. В диалоге Structural Search можно создать собственный шаблон поиска или выбрать один из существующих. В приведенном ниже примере при структурном поиске будут найдены все вызовы методов, помеченных как @Deprecated.
Groovy
В контекстном меню Refactor | Convert to @CompileStatic доступно новое действие по рефакторингу для файлов и модулей Groovy.
Действие Convert to @CompileStatic добавляет аннотации к каждому классу Groovy в области действия аннотации @CompileStatic.
Android
Вот несколько долгожданных новостей для разработчиков на Android! Новая IntelliJ IDEA 2018.1 включает в себя изменения из Android Studio 3.0 и множество новых возможностей. Самые важные из них:
Прежде всего, IntelliJ IDEA теперь поддерживает последние API Android Oreo и позволяет создавать приложения Android как на Java 8, так и на Kotlin.
Также в IDE теперь есть поддержка Gradle 3.0.0 для приложений Android.
Улучшения в редакторе макетов: новое расположение и иконки кнопок на панели инструментов, обновленный вид дерева компонентов, новую панель ошибок и многое другое.
Теперь вы можете создавать иконки приложений при помощи обновленного инструмента Image Asset Studio. Щелкните правой кнопкой папку res в проекте Android и выберите New | Image Asset в контекстном меню. В окне Asset Studio выберите тип иконки Launcher Icons (Adaptive and Legacy).
Теперь IDE поддерживает сборку приложений Instant Apps — облегченных приложений Android, запускающихся без установки. Прежде чем приступить к сборке приложений Instant Apps, убедитесь, что у вас установлен Instant Apps Development SDK. Чтобы просмотреть список установленных инструментов SDK, откройте Preferences | Appearance & Behavior | System Settings | Android SDK и перейдите на вкладку SDK.
Новое окно инструментов Device File Explorer показывает структуру файлов и директорий на вашем устройстве или в эмуляторе Android. Используйте окно Device File Explorer для просмотра, копирования и удаления файлов на устройстве Android. Открыть его можно из меню View | Tool Windows | Device File Explorer.
В новую IntelliJ IDEA 2018.1 также включен Android Profiler — новый набор инструментов профилирования, который в реальном времени предоставляет данные об использовании вашим приложением процессора, памяти и сети.
Для получения более подробной информации ознакомьтесь с заметками к релизу Android Studio.
Контроль версий
Одно из главных нововведений готовящегося релиза — поддержка частичных коммитов Git (git add -p). Теперь IntelliJ IDEA позволяет ассоциировать фрагменты кода со списком изменений. Создайте список изменений, поместите туда все необходимые фрагменты кода и выполните коммит. Теперь IDE будет включать в коммит только выбранные изменения из файла и пропускать все остальные.
Чтобы добавить требуемые фрагменты кода в коммит, используйте флажки на полях раздела Diff в диалоговом окне Commit Changes.
Для перемещения фрагментов кода между списками изменений откройте контекстное меню раздела Diff в диалоговом окне Commit Changes, затем нажмите Move to another changelist.
В качестве альтернативного варианта IDE позволяет добавлять фрагменты кода из редактора кликом по маркеру изменения на полях.
Новая IntelliJ IDEA 2018.1 также позволяет включать и выключать группирование локальных изменений. Для этого перейдите на вкладку Local Changes в окне инструментов Version Control и найдите новую иконку Group by. С ее помощью можно группировать локальные изменения по директории, модулю или репозиторию. Можно выбрать как один вариант группирования, так и все три сразу.
Ряд улучшений получила вкладка Log, доступная при работе с Git и Mercurial VCS. Переработан дизайн раздела Commit Details во вкладке Log. Теперь можно быстро перейти к коммиту в Log, кликнув по соответствующему хэшу коммита в разделе Commit Details.
Повышена производительность отображения вкладки History for revision, являющейся частью интеграции с Git. Вкладка также получила обновленный интерфейс.
Из всплывающего меню Git Branches во время выполнения процесса перемещения (rebase) теперь доступны действия Abort Rebase, Continue Rebase и Skip Commit.
Добавлено новое предопределенное сочетание клавиш для выполнения действия Commit and Push… из диалогового окна Commit Changes. Используйте Alt + Cmd + K (в macOS) или Alt + Ctrl + K (в Windows или Linux).
Кроме того, диалоговые окна Clone Repository для Git и GitHub были объединены в одно. В новом диалоговом окне Clone Repository теперь доступно автодополнение названий репозиториев GitHub. Просто войдите в аккаунт GitHub, используя кнопку Log in to GitHub...
Также удалена библиотека SVNKit. Подробнее читайте в блоге.
Улучшения в Docker Compose
Усовершенствована схема работы с Docker Compose. Диалоговое окно Run/Debug Configurations для конфигурации запуска Docker Compose было улучшено для обеспечения работы важных особенностей Docker Compose, таких как поддержка нескольких файлов compose и возможность выбора службы для запуска.
Плагин Docker теперь поддерживает использование нескольких файлов Docker Compose и учитывает не только docker-compose.yml, но также и опциональный файл docker-compose.override.yml. Добавить docker-compose.override.yml, как и любой другой файл переопределения, можно сразу же после основного файла конфигурации.
Для файлов Docker Compose в обновленном диалоговом окне Run/Debug Configurations теперь можно задавать переменные окружения. Кроме того, если вы хотите использовать параметры командной строки --build, установите флажок Force build.
После выбора конфигурационных файлов в конфигурации запуска Docker Compose плагин Docker позволяет вам выбрать набор запускаемых служб.
Улучшенная поддержка Spring Boot
Добавлена поддержка инструментов разработки Spring Boot.
Новая иконка на полях позволяет открывать методы с аннотациями @RequestMapping при помощи нового REST-клиента.
Прочее
- IDE автоматически подгоняет графику под размеры окна.
- Теперь IntelliJ IDEA может автоматически импортировать конфигурацию оформления кода при импорте проектов Eclipse.
- Доступно новое действие Open in terminal, запускающее встроенный терминал по пути выбранной папки.
- Улучшена поддержка HiDPI при работе с несколькими мониторами в Windows.
JDK обновлен до версии 1.8.0_152-release-1136-b16, в которую интегрированы следующие исправления:
- Итоговое исправление проблемы при запуске IDE под 32-битными версиями Windows JRE-590.
- Исправлено расположение окон композиции IME JRE-668, JRE-669.
- Исправлена проблема с отображением интерфейса после переключения параметра DPI JRE-660.
В новой IntelliJ IDEA 2018.1 мы полностью переработали подсистему фокуса ввода. Уже исправлено множество проблем, связанных с фокусом ввода, например: всплывающее окно Search Everywhere теперь может быть в фокусе, окно инструментов Project теперь получает фокус при вызове из всплывающего окна Select In, а также многие другие проблемы. Более подробная информация — по этой ссылке. Мы считаем, что новая подсистема фокуса ввода позволит нам значительно быстрее исправлять относящиеся к фокусу ввода ошибки.
Спасибо, что присылаете нам сообщения об ошибках — так держать!
И, наконец, встроенный исполняемый файл SSH теперь совместим с новыми стандартами криптографии в GitHub. Подробности смотрите здесь.
Скачать обновление можно через Toolbox App либо с официального сайта.
Мы всегда рады вашим отзывам — пишите нам в баг-трекере, в Twitter или в комментариях ниже.
Программируйте с удовольствием!
Автор: advertka