Привет!
Мы рады сообщить о выходе крупного обновления IDE – IntelliJ IDEA 2017.2. Поскольку далеко не все следят за новостями в нашем официальном блоге (а также потому, что многим удобнее будет прочитать об этом на русском), в этом посте я расскажу что ждать от новой версии IDE. Кто спешит попробовать обновление самостоятельно, качайте с сайта JetBrains, либо из Toolbox App. Все остальные, добро пожаловать под кат.
Java
Автодополнение остается одной из самых востребованных функций IDE и поэтому продолжает улучшаться от релиза к релизу. В этот раз, улучшения коснулись функции Smart Completion.
Во-первых, IDE научилась подсказывать выражения использующие Builder паттерн:
Во-вторых, подсказки содержащие цепочки вызовов, ранее доступные по второму вызову Smart Completion, теперь показываются при первом вызове, а кроме того сортируются на основе их популярности проекте:
Последнее улучшение пока доступно только после компиляции проекта компилятором IDE (иначе говоря, функция пока недоступна, если компиляция делегируется Gradle).
Анализ потока выполнения кода (control flow analysis) также стал умнее и теперь находит еще большее множество потенциальных ошибок в коде, незаметных с первого взгляда.
Во-первых, IDE замечает условия, противоречащие или повторяющие друг друга. Напрямую такой код не является причиной ошибки, однако часто он свидетельствует о ней косвенно.
Кроме того, IDE теперь научилась понимать контракт многих методов, и использовать это для нахождения логических проблем в коде. Например, если метод Collection#isEmpty() возвращает true, это означает, что итерация по этой коллекции не будет выполняться, а вызов метода List#get(int index > 0) приведет к ошибке.
Новые инспекции включают: Replace with Set.of, Add Thread#onSpinWait() (обе требуют Java 9), а также Extract set from comparison chain.
Последняя может быть очень полезна, т.к. она помогает избавить от громоздких конструкций и сделать код гораздо читабельнее:
Java 9 продолжает медленно но неумолимо двигаться вперед. Поэтому в обновлении мы добавили диаграммы модулей, которые, надеемся, сделают работу с модулями еще удобнее:
Окно Run для Spring Boot теперь отображают информацию о состоянии запущенных приложений, полученную с помощью Endpoints: Beans, Health и Mappings.
Отладчик теперь позволяет удобно фильтровать массивы и коллекции в окне Variables, Evaluate Expression, Watches, Inspect и других.
Kotlin 1.1.3
Кроме поддержки более свежей версии языка, IDE получила подсказки имен параметров методов (Parameter Hints, знакомые по Java и Groovy), подсказки выведенных типов (Type Hints), семантическую подсветку (также знакомую ранее по Java и другим языкам), а также подсветку TODO элементов.
Подсказки выведенных типов – принципиально новая функция, делающая код более читаемым.
Groovy 2.5.0
Поддержка Groovy 2.5.0 главным образом включает поддержку новых аннотаций: groovy.transform.builder.Builder#includeSuperProperties, groovy.transform.AutoImplement, и groovy.lang.Delegate для методов.
Контроль версий
Окно инструментов Log для Git предоставляет две новые функции: Revert Commit (откат изменений), а также Reword Commit. Последняя позволяет изменить описание неотправленного изменения.
Кроме этого, IDE получила возможность автоматического форматирования описаний изменений согласно настройкам (Version Control | Commit Dialog): blank line between the subject and the body, limit body line, и limit subject line. При редактировании описания изменения в Commit диалоге стали доступны инспекция и функция Reformat:
Пользовательский интерфейс
Область редактора внутри попапа Find in Path получила левую панель с элементами навигации и индикаторами локальных изменений. Попап отображает прогресс поиска. Результаты поиска с одних и тех же строк объединяются в один результат.
Элементы интерфейса на Window 10 стали выглядеть нативно.
В случае нескольких мониторов с высоким разрешением (HiDPI), теперь IDE правильно определяет разрешение: в зависимости от того, на котором мониторе элемент отображается (ранее всегда использовалось разрешение главного монитора).
Размер шрифтов теперь также автоматически корректируется в зависимости от разрешения.
JavaScript и TypeScript
В TypeScript-коде, как и в Java, теперь показываются имена параметров. Также стало доступно действие Expression Type (ранее знакомое по Java):
Действие Rearrange Code, знакомое тем, кто работал с Java-кодом в IntelliJ IDEA, стало доступно для JavaScript и TypeScript. Оно позволяет упорядочить код внутри классов.
С помощью нового Move Symbol рефакторинга можно безопасно переносить классы, методы и переменные из одного ES6-модуля в другой. IDE автоматически обновит все импорты и экспорты.
В новой версии мы улучшили поддержку Angular Material, — библиотеки UI-компонентов для Angular. Теперь IDE понимает и подсказывает специальные атрибуты из Angular Material.
При тестировании JavaScript-приложений с Mocha теперь можно узнать, насколько хорошо код покрыт тестами. А при работе с Karma теперь можно запускать каждый тест отдельно.
Автодополнение и навигация в JavaScript-коде теперь учитывает конфигурацию проекта (например, aliases), описанную в webpack.config.js.
Производительность
Любой модуль теперь можно указать как “незагруженный” (Unloaded). В этом случае IDE исключит его из индексации и компиляции.
Эту функцию рекомендуется использовать только для исключения модулей, от которых не зависят модули, с которыми вы планируете работать. Если вы выполняете рефакторинг, поиск или другую операцию, на которую потенциально может повлиять незагруженный модуль, IDE сообщит об этом:
Кроме модулей, теперь также стало возможно исключить файлы из индексации по выражению. Это может быть полезно, если вы хотите исключить файлы определенного типа, в именах которых повторяются определенные паттерны (например, *_min.js).
Процесс индексации теперь можно приостанавливать. Это может быть полезно, когда нужно срочно высвободить ресурсы CPU.
Вкратце, это все важные изменения. Подробнее об изменениях можно узнать на странице What’s New. Там же можно скачать обновление.
Буду рад ответить на любые вопросы.
Программируйте с удовольствием!
Автор: JetBrains