+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

IntelliJ IDEA 2017.3. Реліз. Що нового?

Приведення типів для ланцюжків виклику в Smart Completion
У попередньому релізі (IntelliJ IDEA 2017.2) ланцюжки викликів (method call chains) стали відображатися при першому виклику < em>Smart Completion (до цього вони були доступні лише за другим викликом). У цьому релізі ці ланцюжки також враховують автоматичне приведення типів залежно від контексту:
Аналіз потоку виконання коду
Кілька років тому IntelliJ IDEA навчилася автоматично виводити інструкції Nullable та NotNull для параметрів та методів класів бібліотек, що повертаються. Цей висновок робився з урахуванням аналізу потоку виконання всередині методів. У версії 2017.3 виведення анотацій для параметрів працює не тільки для методів класів бібліотек, а й для private або final методів класів усередині проекту.
У разі виведення анотації у подібному методі IDE пропонує quick-fix для явної декларації анотації:
Також IDE навчилася виявляти потенційні проблеми з Nullability всередині викликів методів Stream API. У разі виявлення потенційної проблеми IDE повідомляє про це і там, де це можливо, пропонує автоматично внести зміни до коду, щоб уникнути помилки при виконанні:
Трансформація циклу for у ланцюжок викликів Stream API
Цикли for, результатом яких є додавання рядків до StringBuilder, тепер можна автоматично трансформувати в ланцюжок викликів Stream API, які використовують Stream. collect та Collectors.joining:
Інверсія логіки boolean методів за допомогою quick-fix
Invert Boolean рефакторинг тепер доступний як quick-fix для методів (раніше quick-fix був доступний тільки в batch mode, а також для змінних, констант та полів класу):
Окремі виклики методів на колекціях та ланцюжки викликів Stream API
Там, де це має сенс, тепер IDE пропонує замінити окремі виклики sort та toArray на колекціях на відповідні методи на ланцюжку викликів Stream API:
Виявлення ключів, що повторюються в ініціалізації Map і Set
Якщо ви випадково два або більше разів вказали значення для одного і того ж ключа або намагаєтеся додати один і той самий елемент у Set, тепер IDE попередить про можливу помилку:
Виявлення надлишкових декларацій винятків
Виявлення надлишкових декларацій винятків раніше працювало тільки для final та private методів. Тепер виявлення працює для будь-яких методів:
Ця конкретна інспекція може бути відключена для так званих точок входу, наприклад для тестів.
Міграція deprecated методів
Коли для застарілого (deprecated) методу вказана явна альтернатива, IDE пропонує quick-fix для автозаміни:
Міграція з JUnit 4 на JUnit 5
Якщо в модулі присутні обидві бібліотеки JUnit 4 та JUnit 5, IDE пропонує quick-fix для автоматичної міграції з JUnit 4 на JUnit 5:
Run Dashboard для будь-яких типів Run Configuration
Run Dashboard раніше був доступний лише для Spring Boot програм, а тепер може використовуватися для будь-яких типів Run Configuration. Для цього необхідно відкрити діалог Edit Run Configurations, вибрати пункт Defaults та до списку Run Dashboard Types додати відповідні типи конфігурацій:
Run Dashboard пропонує зручний інтерфейс запуску та керування кількох Run Configurations:
Відладчик для JVM
У цьому релізі більше уваги було приділено обліку та оптимізації витрат обчислювальних ресурсів (overhead), які Debugger вносить у процес, що запускається через обробку точок зупинки (breakpoints) та відображення значень (за допомогою Data Renderers) у вкладках Variables, Watches, Evaluate Expression, Inspect та інших місцях.
Для обліку цих витрат ресурсів у вікно інструментів Debug додано нову вкладку Overhead >. Ця вкладка відображає кумулятивну кількість викликів Breakpoints та Data Renderers (з огляду на опцію Enable 'toString()' object view, який використовується за замовчуванням, якщо не вказано конкретний Data Renderer):
Крім цього будь-який Data Renderer може бути позначений як On -demand. Це означатиме, що значення буде пораховано та відображено лише за необхідності (на кліку):
Позначити Data Renderer як On-demand можна в налаштуваннях Java Type Renderers:
Або вибравши Mute Renderers у контекстному меню на конкретному значенні:
Також ми оптимізували витрати ресурсів на розрахунок Async Stacktraces. Крім цього, Async Stacktraces не потрібно додатково налаштовувати. Тепер вони працюють відразу, “з коробки”.
Плагін Java Stream Debugger, який допомагав налагоджувати ланцюжки викликів Stream API, тепер є частиною IDE і доступний під час налагодження (кнопка Trace Current Stream Chain у вікні інструментів Debug):
Підказки та навігація для Java EE 8
Новий реліз повністю підтримує стандарт Java EE 8 і пропонує додаткові підказки, навігацію та інші приємні функції для Asynchronous CDI Events, CDI Bean Injection, PushBuilder, Disposes та < em>Produces
:
Підтримка Spring та Spring Boot
Тепер IDE вміє автоматично виявляти та конфігурувати MVC Context в налаштуваннях Spring Facet для програм Spring Boot:
Вкладка Endpoints у вікні запуску та налагодження програм Spring Boot, яка допомагає моніторити запущену програму, тепер підтримує Spring Boot 2.0 Actuator Endpoints.
Підсвічування у файлах конфігурації Spring Boot додатків тепер враховує тип значень:
У діаграмах залежностей між бінами (Spring Beans Diagram) з'явився новий цікавий режим: Neighborhood. У цьому режимі відображаються лише прямі залежності. При виборі однієї із залежностей ви побачите прямі залежності для виділеного біну тощо. Таким чином зручно навігати між залежностями:
Робота з модулями
Якщо ви позначали деякі модулі як “вивантажені” ” (unloaded) та при оновленні проекту VCS створювалися нові модулі, раніше вони автоматично позначалися як “завантажені” (loaded). Тепер у тих випадках, коли від цих модулів не залежать модулі, помічені як “завантажені”, ці модулі автоматично позначаються як “вивантажені”.
Також перед коммітом IDE тепер перевіряє, що “вивантажені” модулі компілюються без помилок.< br /> Крім того, змінився спосіб групування модулів під час відображення. Раніше для цього використовувалися групи модулів, які можна було створити у Project Structure. Тепер використовується той самий механізм, який використовується для угрупування структури пакетів (packages): ім'я модуля розбивається символом точки і утворює дерево:
Складання проекту
Раніше під час використання Gradle запуск додатків та тестів у режимі збору статистики про покриття коду (Run with Coverage) не працював, якщо була включена опція Delegate IDE build/run actions to Gradle або Gradle Test Runner. Тепер Run with Coverage працює у всіх випадках.
Процес імпорту, компіляції та складання проекту для Gradle, Android/Gradle та SBT тепер можна спостерігати в новому вікні інструментів Build:
Робота з REST-запитами
Тепер працювати з REST-запитами можна за допомогою нового інструменту на основі редактора. Для цього достатньо створити файл у проекті з роздільною здатністю .http і відкрити його в редакторі. Якщо не хочеться створювати файл у проекті, можна скористатися Scratch File:
Kotlin
Слідом за релізом Kotlin 1.2 трапився вчора, оновилася підтримка мови у IDE. Головним нововведенням оновлення є експериментальна можливість “перевикористання коду” між JVM та JavaScript:
За допомогою ключового слова expect будь-який клас чи метод тепер може бути оголошено як "загальний". Реалізація цього класу або методу для конкретної платформи може бути оголошена за допомогою ключового слова actual у модулі для відповідної платформи. IDE перевіряє, що реалізація існує для сконфігурованих платформ, і дозволяє переходити від декларації до реалізація і назад:
Докладніше про роботу «загальних модулів» (common modules) можна прочитати в цьому хабрапості або в офіційній документації (англійською ). Обов'язковою умовою роботи таких модулів є складання проекту Gradle.
Scala
Підсвічування символу під кареткою (яка включена за замовчуванням, як і та, яка доступна за натисканням Shift+Ctrl/Cmd+F7) тепер підсвічує також неявне (implicit) використання символу:
Складання та запуск програми або тестів тепер не зав'язані на індексацію і працюють навіть, якщо індексація ще не закінчилася.
У SBT проектах коли плагін помічає вираження імпорту залежності , не вказаної у SBT конфігурації але присутній у локальному Ivy Cache, IDE пропонує додати її до SBT конфігурації:
Нова версія плагіна підтримує Ammonite і пропонує підсвічування синтаксису, підказки, навігацію, і окремий тип < em>Run Configuration
:
Створення проектів Scala змінилося. Тепер замість Lightbend Activator (припинив існування в середині цього року) плагін пропонує використовувати шаблони проектів Tech Hub Project Starter.
Робота з Git та Mercurial
Тепер можна інтерактивно ребейзити (rebase) останні зміни в Git, викликавши Interactively Rebase from Here з Log:
При перемиканні між гілками IDE зберігає стан workspace: розташування вкладок редактора, вікон інструментів тощо:
Для зручності роботи змінами, що беруть участь у злитті (merge), в Log додано новий режим: Show Changes to Parents. У цьому режимі права панель у Log показує не тільки зміни у файлах з конфліктами, але й окремо неконфліктні зміни для кожної гілки, що бере участь у злитті:
Режим можна активувати в контекстному меню.
Для перегляду конфліктних змін для Git у Log IDE тепер пропонує трипанельний інтерфейс. вони були в патчі:
Синхронізація налаштувань IDE між різними комп'ютерами
Іноді буває, що IDE встановлена ​​на роботі та вдома, на стаціонарному комп'ютері та на ноутбуці тощо. Раніше доводилося налаштувати IDE на кожному комп'ютері. Деякі часи тому для автоматизації цього процесу можна було скористатися плагіном. При використанні цього плагіна налаштування зберігалися у зазначеному Git репозиторії. У IntelliJ IDEA Ultimate 2017.3 вбудований новий механізм, який не вимагає наявності Git репозиторію: всі налаштування зберігаються у захищеному вигляді на сервері JetBrains. Ще однією перевагою нового механізму є синхронізація як налаштувань, а й безпосередньо встановлених плагінів. Для використання нового механізму потрібна наявність JetBrains Account. Зміни в Docker плагіні У цьому релізі ми продовжуємо вдосконалювати плагін для Docker. З найбільш помітного:
  • Docker Deployment Run Configuration поділено на 3 окремі Run Configurations: Dockerfile (складання образу з Dockerfile та запуск контейнера на основі отриманого образу), Docker Image (запуск образу, еквівалент команди “docker run”) та Docker Compose (запуск сервісів).
  • У Docker Image Run Configuration тепер можна вказувати командний рядок безпосередньо (раніше IDE вимагала створення спеціального JSON-файлу).
  • У Dockerfile Run Configuration тепер можна лише зібрати образ і не запускати його як контейнер.
  • Зібрати образ або запустити контейнер на основі цього образу тепер можна прямо з редактора Dockerfile (на кліку на панелі зліва від редактора).
  • IDE підтримує альтернативні назви Dockerfile та docker-compose.yml файлів.
  • Вікно інструментів Docker тепер приховано за умовчанням, доки не буде додано налаштування Docker до Settings.

Прев'ю для SVG файлів
Тепер при відкритті SVG-файлу в редакторі IDE запропонує з правого боку візуальний попередній перегляд цього файлу:
Візуальні кордони в редакторі
Раніше в IDE було налаштування Right margin, яке відображалося в редакторі та враховувалося в правилах оформлення коду ( code styles). У новому релізі ця настройка була перейменована на Hard wrap at, а також до неї була додана нова опція Visual guides. З її допомогою можна вказати через кому значення відразу для кількох візуальних кордонів. Ці межі будуть також відображатися в редакторі:
Головним чином, це необхідно в тих випадках, коли правила оформлення коду посилаються на декілька таких меж (таке можливо, наприклад, для Python і PHP).
Інструменти для роботи з базами даних (DataGrip 2017.3)
  • Якщо ви працюєте з великою кількістю джерел даних (data sources), ці джерела даних тепер можна організувати до груп.
  • Для зручності роботи з числовими даними в таблиці тепер вони вирівнюються праворуч.
  • Для PostgreSQL у вікні інструментів Database відображаються Users та Roles, а також підтримуються Foreign Data Wrappers.
  • Дані в таблицю тепер можна вставляти з Excel.
  • Кілька значень таблиці можна порівнювати між собою.
  • Експорт у DDL тепер підтримує більше опцій і доступний через (Context menu | SQL Scripts | SQL Generator ).
  • Автодоповнення для JOIN стали ще трохи кмітливішими.
  • Підтримка Exasol бази даних.
  • Підсвічування для XQuery and XPath для Sql Server через Language Injection.

Підтримка JavaScript та TypeScript (WebStorm 2017.3)
  • Для Vue.js з'явилося автодоповнення коду та навігація для props, властивостей та методів, а також нова колекція шаблонів коду.
  • Нові рефакторинги Pull member up та Extract superclass для JavaScript — та TypeScript-класів.
  • Нові рефакторинги Extract type alias та Extract interface для TypeScript.
  • Оновлена ​​документація та покращене автодоповнення для стандартних методів та об'єктів JavaScript. Відкриття проектів стало швидше завдяки заздалегідь побудованим індексам для цих методів.
  • Підтримка watch mode для Jest та Mocha, звіти про покриття коду тестами для Jest та можливість легко оновити Jest-снепшоти в один клік.
  • Імпорти в JavaScript — і TypeScript-файли тепер додаються автоматично при копіюванні та вставці коду з одного файлу в інший.
  • Для налагодження клієнтських програм у WebStorm більше не потрібно встановлення додаткового розширення для Chrome. Але розширення все ще потрібне для Live Editing, який тепер вимкнено за умовчанням.

Інші новини

Найкраща ціна