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

JetBrains Meta Programming System MPS 2019.2 – нові функції в підсистемах

JetBrains Meta Programming System MPS 2019.2 - нові функції в підсистемах

У Meta Programming System MPS 2019.2 JetBrains підготував багато нових функцій у різних підсистемах та виправив ряд помилок.

Перераховані типи даних

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

Також удосконалили аспекти мови SModel, що стосуються роботи з властивостями перерахованих типів. Тепер при читанні та запису властивостей використовуються типізовані екземпляри членів, що перераховуються, замість вихідних елементарних значень, що допомагає розробникам писати код із меншою кількістю помилок.

У мову SModel було додано оператор Enum Switch для множинного вибору членів перерахування. Його також можна використовувати як вираз для обчислення різних значень залежно від того, який член переліку відповідає вимогам.

Індивідуальне налаштування повідомлень про помилки

Вже досить давно JetBrains отримував прохання реалізувати можливість налаштування в MPS деяких повідомлень про помилки. Завдяки запиту, що надійшов від одного з комерційних клієнтів, JetBrains зміг присвоїти цій функціональності максимальний пріоритет. Тепер можна настроювати всі повідомлення про помилки щодо перевірки обмежень. У наступних версіях JetBrains збирається зробити ці можливості з налаштування доступними і для інших видів помилок.

У цій версії JetBrains додав новий аспект мови під назвою "feedback". Цей аспект можна використовувати для налаштування тексту повідомлень про помилки, пов'язані з перевіркою структури, обмеженнями властивостей та областей видимості.

Зверніть увагу: ви можете задати свій feedback, розширивши набір мов зворотного зв'язку. Наприклад, можна описати feedback, який буде підсвічувати ребра або вершини в редакторі діаграм.

Щоб отримувати повідомлення про помилки для обмежень canBe*, що настроюються, використовуйте мову обмежень на основі правил.

Мова обмежень на основі правил

JetBrains створив мову обмежень на основі правил, яка в майбутньому замінить доступне зараз обмеження canBe* зі стандартної мови обмежень MPS. В даний час мова обмежень на основі правил є експериментальною функціональністю, тому, найімовірніше, сильно зміниться наступних релізах.

На даний момент попередній варіант обмежень залишається пріоритетним, тому щоб ввести обмеження на основі правил, старі обмеження canBe* потрібно повністю видалити. Нова мова визначення обмежень більш декларативна, вона вимагає вказувати набір ізольованих обмежень (правил) замість одного умовного блоку.

У версії 2019.2 це дозволяє отримувати індивідуальне повідомлення про помилку для кожного правила окремо.

У меню Git тепер є нова дія, що дозволяє відобразити історію змін до VCS для конкретного кореня. Дія доступна з контекстного меню редактора

Зверніть увагу, що збирання даних про історію кореня, як і будь-яка інша дія VCS, пов'язана з історією, займає багато часу. У рядку стану є індикатор виконання, який допоможе оцінити тимчасові витрати

Пошук з даних

Тепер доступний повнотекстовий пошук за значеннями властивостей. Дія Edit–>Find–>Find Text in Project action (Ctrl+Alt+Shift+F) дозволяє знаходити вузли з властивостями, значення яких зустрічається вказаний текст.

Перевірка на конкретні помилки

Один із найпоширеніших сценаріїв використання мови для написання тестів — це перевірка вузлів на наявність повідомлень про помилки та попередження. У деяких випадках підсистема тестування MPS не розрізняла різні види помилок, що зачіпають один і той самий вузол. Це могло призводити до плутанини: навіть якщо користувач явно вказував очікуваний тип помилки в анотації тесту, інші помилки та попередження, що стосуються відповідного вузол, не генерували помилок тестування.

Майте на увазі, що при переході на нову версію деякі тести можуть не пройти, оскільки тепер вони будуть придушувати лише ті попередження та помилки, які користувач вказує в інструкції до перевірки.

Шаблони для визначення правил перевірки

Якщо ви визначили правило перевірки для концепту, воно буде викликатись для кожного вузла, що є екземпляром цього концепту.

Тепер замість перевизначення кожного правила, успадкованого від батьківського концепту, ви можете явно вказати список правил, які необхідно перевизначити. Ми настійно рекомендуємо переглянути всі ваші правила перевірки, що використовують функцію overrides, і вказати, які правила слід перевизначати.

Раніше можна було визначити правило перевірки для концепту за допомогою мови шаблонів. Ця можливість служила для обмеження умов застосування правила (в порівнянні з правилами, визначеними виключно для концепту), а також для зручного іменування властивостей, дочірніх і онукових елементів, і т.д. Для обох цілей підійде застосування мови шаблонів усередині тіла правила, зокрема використання оператора match у верхній частині блоку do

Java 11 як середовище виконання

MPS тепер запускатиметься в JDK 11. Це вплине на механізм завантаження моделей-заглушок. Більшості вашого проекту міграція не буде потрібна, за винятком рідкісних випадків використання деяких класів і полів, які були перепаковані в JDK 11.

При використанні плагіна для IntelliJ IDEA модулі з MPS Facet тепер повинні бути асоційовані з JDK версії 11. Інакше генерація коду завершиться невдало.

API-фасад для перевірки відповідності типів

Тепер запити перевірки відповідності типів можна виконувати тільки за допомогою нового API-фасаду.

Новий API: див. ним класи.

Застарілий API: ієрархія пакетів jetbrains.mps.typesystem.* тепер є застарілою. Використовувати класи цієї ієрархії не рекомендується, за винятком коду, автоматично згенерованого з вмісту аспекту typesystem.

Заплановані зміни в майбутніх релізах

Ось попередній план змін, які стосуються підтримки систем типів:

  • Аспект, який відповідає за реалізацію системи типів, і мову, що використовується в ньому, будуть оголошені застарілими. Згодом мову та її підтримку в середовищі виконання будуть винесені в окремий плагін.
  • Буде доданий новий аспект, який фактично замінить частину аспекту типусистеми, що не відноситься до системи типів. Для отримання правил перевірки зі старого аспекту typesystem буде надана міграція.
  • Буде реалізований новий фреймворк перевірки відповідності типів з підтримкою сторони середовища виконання, внаслідок чого застарілі механізми буде переписано з нуля.

Складання у фоні

JetBrains підвищив чуйність інтерфейсу під час фонового складання. Якщо процес складання був відправлений у фоновий режим один раз, він завжди буде проводитися у фоні при наступних виконаннях. Дія зберігається в меню Preferences->Project Settings->Perform in background.

BaseLanguage

Однією з головних цілей даного релізу були поліпшення BaseLanguage. JetBrains виправив ряд проблем, що стосуються мови BaseLanguage, починаючи з помилок і закінчуючи проблемами, що впливають на зручність використання.

Перевірка орфографії в коментарях BL

Тепер доступна перевірка орфографії для однорядкових коментарів, тексту Javadoc та рядкових літералів.

Новий зразок проекту

JetBrains врахував побажання спільноти та додав новий зразок проекту з генерацією XML.

Локальна конфігурація Git

Тепер налаштування merge-драйвера є не глобальними, а локальними (окремими для кожного Git-репозиторія), завдяки чому кожна встановлена ​​копія MPS може мати свій merge-драйвер.

Інші новини