Привет, Хабр! Недавно мы запустили IntelliJ IDEA 2018.1 – первое большое обновление в этом году. В нем вас ждет множество важных улучшений: поддержка частичных коммитов Git, отображение внешних аннотаций в коде, функциональность, добавленная из Android Studio 3.0, и многое другое. Ниже мы расскажем об этом подробнее, а попробовать новую версию можно здесь.

image

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


Теперь автодополнение поддерживает приведение типов в цепочках вызовов Stream API. Автодополнение кода предлагает не только вариант дополнения, соответствующий имеющемуся вызову filter(String.class::isInstance), но также и вариант с автоматическим приведением типа.

image

В новом релизе также было улучшено постфиксное автодополнение кода. Теперь IDE позволяет создавать свои собственные шаблоны Java, а также изменять и переименовывать предопределенные шаблоны Java, в разделе настроек Preferences | Editor | General | Postfix Completion.

image

image

Улучшенный анализ порядка выполнения


Мы улучшили анализ порядка выполнения кода: теперь он способен определять более широкий спектр проблем в коде. Прежде всего, IDE теперь отслеживает отношения между переменными, такие как «больше чем» и «меньше чем». При сравнении переменных во всех возможных ветвях кода IDE определяет условия, которые всегда являются истинными (или ложными).

image

Также IDE теперь обнаруживает незавершенные цепочки Stream API.

image

IDE показывает предупреждение при попытке присвоить переменной значение, которое она уже содержит. Это может помочь в обнаружении и удалении избыточного кода.

image

Также IDE предупреждает об изменении неизменяемых (immutable) коллекций.

image

Подробнее узнать об улучшениях в анализе порядка выполнения можно в нашем блоге.

Как и всегда, в релизе 2018.1 присутствует целый ряд новых инспекций и быстрых исправлений. Теперь IntelliJ IDEA определяет циклы while с идемпотентным телом и предупреждает о них, так как в большинстве случаев это указывает на ошибку в коде, которая может стать причиной зависаний программы.

image

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

image

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

image

Теперь содержимое массивов можно сортировать в алфавитном порядке.

image

Если в коде присутствует конструктор копирования, копирующий не все поля класса, будет показано уведомление. Обратите внимание, что IDE не учитывает поля с модификатором типа transient как обязательные для копирования.

image

Новая IntelliJ IDEA теперь предупреждает вас об очевидно избыточных вызовах close() и предоставляет быстрое исправление (quick-fix) для их удаления.

image

Новая версия включает в себя инспекции и быстрые исправления, предназначенные специально для Java 9. Для сервисов, загружаемых при помощи ServiceLoader, IDE проверяет наличие объявления в файле module-info.java и в случае его отсутствия предлагает быстрое исправление.

image

При наличии в module-info.java упоминания отсутствующего класса IDE теперь предлагает создать его. То же самое относится и к отсутствующим экспортируемым пакетам. (IDE создает пакет с классом в соответствующей директории, так как экспортировать пустые пакеты в Java 9 нельзя.)

image

Теперь, если возможные проблемы в выбранной области видимости решаются различными способами, рекомендуемые быстрые исправления можно сгруппировать по типу. Для этого нажмите кнопку Fix partially в окне инструментов Inspection Results.

image

Поддержка аннотаций Tag для JUnit 5


Новая IntelliJ IDEA 2018.1 теперь поддерживает аннотации Tag для JUnit 5 — их можно включать в область теста, а также в помеченные классы и методы. В диалоге Run/Debug Configuration выберите вариант Tags (JUnit 5) из раскрывающегося списка Test kind. Для фильтрации тестов по идентификатору используйте поле UniqueId.

image

Генерация кода


При создании тестового класса IntelliJ IDEA по умолчанию добавляет «Test» в конец названия класса. Теперь можно настроить шаблон тестового класса так, чтобы «Test» добавлялось в начало его названия. Настроить это можно в Preferences | Editor | Code Style | Java | Code Generation.

Отладчик JVM


Новое действие Throw Exception позволяет генерировать исключение из определенного места в программе без изменения кода. Действие доступно из меню Run | Throw Exception или же из контекстного меню фрейма во время сессии отладки.

image

Вывод трассировки стека для точек прерывания


Новая IntelliJ IDEA 2018.1 позволяет выводить в консоль трассировку стека для точек прерывания. Для этого нужно включить настройку Stacktrace в диалоговом окне Breakpoints. IDE также позволяет видеть в журнале консоли трассировки стека для нескольких точек прерывания одновременно.

image

Теперь вы также можете скопировать трассировку стека для текущего потока посредством нового действия Copy Stack, доступного из контекстного меню фрейма.

image

Компилятор 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 показывался только значок «@» на полях возле строки кода с внешней аннотацией, но теперь внешние аннотации показываются непосредственно в коде.

image

IntelliJ IDEA теперь позволяет вам видеть автоматически выведенные аннотации NotNull и @Nullable прямо в исходном коде (а не только в виде значка на полях рядом с соответствующей строкой, как раньше). Для этого установите флажок Show inferred annotations inline в Preferences | Editor | General | Appearance.

image

Если с вашим кодом что-то не так, новая IntelliJ IDEA 2018.1 поможет вам быстро обнаружить проблемы. IDE теперь подсвечивает свернутые участки кода, содержащие ошибки или предупреждения, и окрашивает их цветом, соответствующим статусу валидации.

image

Также свернутые участки кода подсвечиваются при поиске по текущему файлу, если они содержат совпадения.

image

Когда вы перемещаете курсор на идентификатор и IDE подсвечивает его вхождения, теперь вы можете использовать сочетания «Alt + Прокрутка вниз» и «Alt + Прокрутка вверх» для перехода к следующему или предыдущему вхождению, соответственно.

image

Конфигурация проектов


Для конфигураций 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.

image

Улучшенная замена


В IntelliJ IDEA 2018.1 можно выполнять предварительный просмотр результатов замены по регулярному выражению в окне Replace in Path.

image

Улучшенный структурный поиск


Мы улучшили структурный поиск (Structural Search), чтобы находить вызовы методов с аннотациями было проще. В диалоге Structural Search можно создать собственный шаблон поиска или выбрать один из существующих. В приведенном ниже примере при структурном поиске будут найдены все вызовы методов, помеченных как @Deprecated.

image

image

Groovy


В контекстном меню Refactor | Convert to @CompileStatic доступно новое действие по рефакторингу для файлов и модулей Groovy.?
Действие Convert to @CompileStatic добавляет аннотации к каждому классу Groovy в области действия аннотации @CompileStatic.

image

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

Теперь вы можете создавать иконки приложений при помощи обновленного инструмента Image Asset Studio. Щелкните правой кнопкой папку res в проекте Android и выберите New | Image Asset в контекстном меню. В окне Asset Studio выберите тип иконки Launcher Icons (Adaptive and Legacy).

image

Теперь IDE поддерживает сборку приложений Instant Apps — облегченных приложений Android, запускающихся без установки. Прежде чем приступить к сборке приложений Instant Apps, убедитесь, что у вас установлен Instant Apps Development SDK. Чтобы просмотреть список установленных инструментов SDK, откройте Preferences | Appearance & Behavior | System Settings | Android SDK и перейдите на вкладку SDK.

image

image

Новое окно инструментов Device File Explorer показывает структуру файлов и директорий на вашем устройстве или в эмуляторе Android. Используйте окно Device File Explorer для просмотра, копирования и удаления файлов на устройстве Android. Открыть его можно из меню View | Tool Windows | Device File Explorer.

image

В новую IntelliJ IDEA 2018.1 также включен Android Profiler — новый набор инструментов профилирования, который в реальном времени предоставляет данные об использовании вашим приложением процессора, памяти и сети.

image

Для получения более подробной информации ознакомьтесь с заметками к релизу Android Studio.

Контроль версий


Одно из главных нововведений релиза — поддержка частичных коммитов Git (git add -p). Теперь IntelliJ IDEA позволяет ассоциировать фрагменты кода со списком изменений. Создайте список изменений, поместите туда все необходимые фрагменты кода и выполните коммит. Теперь IDE будет включать в коммит только выбранные изменения из файла и пропускать все остальные.

Чтобы добавить требуемые фрагменты кода в коммит, используйте флажки на полях раздела Diff в диалоговом окне Commit Changes.

image

Для перемещения фрагментов кода между списками изменений откройте контекстное меню раздела Diff в диалоговом окне Commit Changes, затем нажмите Move to another changelist.

image

В качестве альтернативного варианта IDE позволяет добавлять фрагменты кода из редактора кликом по маркеру изменения на полях.

Новая IntelliJ IDEA 2018.1 также позволяет включать и выключать группирование локальных изменений. Для этого перейдите на вкладку Local Changes в окне инструментов Version Control и найдите новую иконку Group by. С ее помощью можно группировать локальные изменения по директории, модулю или репозиторию. Можно выбрать как один вариант группирования, так и все три сразу.

image

Ряд улучшений получила вкладка Log, доступная при работе с Git и Mercurial VCS. Переработан дизайн раздела Commit Details во вкладке Log. Теперь можно быстро перейти к коммиту в Log, кликнув по соответствующему хэшу коммита в разделе Commit Details.

image

Повышена производительность отображения вкладки History for revision, являющейся частью интеграции с Git. Вкладка также получила обновленный интерфейс.

image

Из всплывающего меню Git Branches во время выполнения процесса перемещения (rebase) теперь доступны действия Abort Rebase, Continue Rebase и Skip Commit.

image

Добавлено новое предопределенное сочетание клавиш для выполнения действия 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...

image

Также удалена библиотека 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, как и любой другой файл переопределения, можно сразу же после основного файла конфигурации.

image

Для файлов 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 или в комментариях ниже.

Программируйте с удовольствием!

Комментарии (20)


  1. vladimir_dolzhenko
    13.04.2018 18:08

    И по какой-то неизвестной причине 2018.1 жутко тормозит на MacOsX — и даже 2018.1.1 (пока не могу сформулировать причины / как воспроизвести, чтобы зарепортить багу, и та же эта бага IDEA-189324 или нет — пока не ясно)


    1. andreycheptsov
      13.04.2018 18:38

      Самый простой способ прислать нам CPU snapshot. Вот здесь подробнее, как репортить такие проблемы: intellij-support.jetbrains.com/hc/en-us/articles/207241235-Reporting-performance-problems


      1. vladimir_dolzhenko
        14.04.2018 15:20

        Damn! Article is closed for comments.

        Поставил yourkit, добавил агента в IDEA — агент пишет логи (т.е агент подключился) — но при этом никаких Tools / Start CPU Usage Profiling


    1. olexandr17
      13.04.2018 19:33

      сегодня обновился и тоже заметил некоторые подтормаживания.
      похоже, что во время запущенного проекта Ангулар после нажатия ctr+s


  1. maratische
    13.04.2018 19:13
    +1

    большое спасибо за автоподстановку, когда пишешь
    filter(String.class::isInstance;)
    и после ";" само перепрыгивает в
    filter(String.class::isInstance);

    ну очень не хватало


  1. baldrs
    13.04.2018 20:44

    А когда будут кастомные шаблоны postfix completion в PhpStorm?


    1. PositiveAlex
      15.04.2018 18:01

      Так вроде пост про Idea, а php — это отдельный плагин. Или нет?


      1. kalininmr
        15.04.2018 20:11

        phpstorm — отдельный продукт.
        но php плагин для idea тоже есть.
        idea в линейке, какбы, самый навороченный.


  1. Pro-invader
    13.04.2018 23:03

    Восхищен тем, что такие мегасложные проги становятся еще лучше. Отличный инструмент, удовольствие от использования.


    1. nikitasius
      14.04.2018 22:50

      И до сих пор!
      В 2005м была 4 или 5ая версии, как время летит и размеры растут :)


      1. kalininmr
        15.04.2018 20:20

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


  1. Sirikid
    14.04.2018 01:27

    А можно настроить шрифт для "именованных параметров" и внешних аннотаций?


  1. Myxach
    14.04.2018 02:54

    Часто использую ваши редакторы кода и они очень нравятся, рад что они не стоят на месте. Только, почему IDEA иногда помечает используемые участки кода как неиспользуемые?


    1. lany
      14.04.2018 07:06

      Покажите конкретный пример


  1. merhalak
    14.04.2018 10:40
    +1

    А GWT приложения поверх томката только у меня требуют теперь ручного kill Tomcat (Ctrl-F2) при перезапуске сервера (через Shift-F10)?


    Собирался добраться до багтрекера, но как то не добрался.


    1. olegchir
      14.04.2018 14:24

      А операционная система какая? Почему спрашиваю — когда-то давно при старте Идеи всегда выдавался ворнинг на проблемы с киллом под линуксом, в ворнинге была ссылка на тикет, я проделал инструкции оттуда и все починилось. Вроде бы это была проблема линукса, а не идеи


  1. Maccimo
    14.04.2018 16:43
    -2

    Вывод трассировки стека для точек прерывания

    Перевод устоявшихся терминов — не тот случай, когда стоит изобретать велосипед.
    Breakpoint это «точка останова», wikipedia в помощь.


  1. chemtech
    14.04.2018 18:11

    Про Kubernetes ничего не написали
    www.jetbrains.com/idea/whatsnew/#v2018-1-kubernetes


  1. bustEXZ
    15.04.2018 17:52

    Никто под awesome-wm не сидит? У меня с последних версий 2017 и 2018 все окна работают плохо, их позиции на экране прыгают, в основном все окна, контекстные меню и его подпункты открываются слева вверху в углу. Кто нибудь встречал такое или я один единственный?


  1. kalininmr
    15.04.2018 20:27

    А курсор мышачий под линуксом наконец починили?
    порой залипает в одной форме, притом по разному.
    особенно неудобно когда в виде I.