MPS 2019.2: Aufzählung von Datentypen, Anpassung von Fehlermeldungen, Übergang zu JDK 11 und vieles mehr

In MPS 2019.2 haben wir viele neue Funktionen in verschiedenen Subsystemen für Sie vorbereitet und eine Reihe von Fehlern behoben .

Bild

Laden Sie MPS 2019.2 herunter

Aufgezählte Datentypen


Mit einer neuen Methode zum Deklarieren von Aufzählungsdatentypen können Sie eine Liste von Optionen in kompakter Form definieren, indem Sie für jede Option einen benannten Wert angeben. Bei Bedarf können Sie konfigurieren, wie einige Werte angezeigt werden, oder den Standardwert auswählen, der verwendet wird, wenn für die Eigenschaft kein expliziter Wert festgelegt wurde.

Bild

Wir haben auch Aspekte der SModel-Sprache in Bezug auf die Arbeit mit Eigenschaften von Aufzählungstypen verbessert. Beim Lesen und Schreiben von Eigenschaften werden jetzt typisierte Instanzen von Aufzählungselementen anstelle der ursprünglichen Elementarwerte verwendet, wodurch Entwickler Code mit weniger Fehlern schreiben können.

Bild

Darüber hinaus haben wir alle Vorgänge, die mit Aufzählungstypen ausgeführt werden, überarbeitet.

Bild

Der SModel-Sprache wurde eine Enum-Switch-Anweisung für die Mehrfachauswahl von Enumerationsmitgliedern hinzugefügt. Es kann auch als Ausdruck verwendet werden, um verschiedene Werte zu berechnen, je nachdem, welches Mitglied der Aufzählung die Anforderungen erfüllt.

Bild

Anpassen von Fehlermeldungen


Wir haben seit einiger Zeit Anfragen erhalten, die Möglichkeit zu implementieren, einige Fehlermeldungen in MPS zu konfigurieren. Auf Wunsch eines unserer gewerblichen Kunden konnten wir dieser Funktionalität höchste Priorität einräumen. Jetzt können Sie alle Fehlermeldungen konfigurieren, die sich auf das Überprüfen von Einschränkungen beziehen. In zukünftigen Versionen werden wir diese Anpassungsoptionen für andere Arten von Fehlern verfügbar machen.

In dieser Version haben wir einen neuen Aspekt der Sprache hinzugefügt: Feedback. Mit diesem Aspekt können Sie den Text von Fehlermeldungen anpassen, die sich auf die Überprüfung der Struktur, der Eigenschafteneinschränkungen und des Bereichs beziehen.

Bild

Beispielsweise definiert ShowMessage den Text, der in der QuickInfo angezeigt wird, wenn Sie den Mauszeiger über einen Problemknoten bewegen.

Bild

Bitte beachten Sie: Sie können Ihr Feedback einstellen, indem Sie die angebotenen Rückmeldungssprachen erweitern. Sie können beispielsweise Feedback beschreiben, mit dem Kanten oder Scheitelpunkte im Diagrammeditor hervorgehoben werden.

Verwenden Sie die regelbasierte Einschränkungssprache, um benutzerdefinierte Fehlermeldungen für canBe * -Einschränkungen zu erhalten.

Bild

Regelbasierte Constraint-Sprache


Wir haben eine regelbasierte Einschränkungssprache erstellt, die in Zukunft die derzeit verfügbare canBe * -Einschränkung von der Standard-MPS-Einschränkungssprache ablöst. Derzeit handelt es sich bei der regelbasierten Einschränkungssprache um eine experimentelle Funktionalität, sodass sich in zukünftigen Versionen wahrscheinlich viele Änderungen ergeben werden.

Bild

Derzeit hat die vorherige Version der Einschränkungen weiterhin Priorität. Um daher Einschränkungen auf der Grundlage von Regeln einzuführen, müssen die alten canBe * -Beschränkungen vollständig entfernt werden. Die neue Sprache zum Definieren von Bedingungen ist aussagekräftiger: Sie erfordert die Angabe einer Reihe von isolierten Bedingungen (Regeln) anstelle eines einzelnen bedingten Blocks.

In Version 2019.2 können Sie auf diese Weise für jede Regel einzeln eine eigene Fehlermeldung erhalten.

Bild

Wurzelgeschichte


Es gibt jetzt eine neue Aktion im Git-Menü, mit der Sie den Änderungsverlauf in VCS für ein bestimmtes Stammverzeichnis anzeigen können. Die Aktion ist über das Kontextmenü des Editors verfügbar:

Bild

Beachten Sie, dass das Sammeln von Stammverlaufsdaten wie bei jeder anderen VCS-Aktion im Zusammenhang mit dem Verlauf sehr zeitaufwändig ist. In der Statusleiste befindet sich eine Fortschrittsanzeige, mit deren Hilfe Sie die aufgewendete Zeit beurteilen können.

Das Dialogfeld ähnelt dem Dialogfeld "Auswahlverlauf" in IntelliJ IDEA:

Bild

In einem Dialogfeld wird eine Liste der Revisionen der Modelldatei angezeigt, in der der entsprechende Stamm geändert wurde.

Datensuche


Eine Volltextsuche nach Eigenschaftswert ist jetzt verfügbar. Mit der Aktion Bearbeiten–> Suchen–> Text in Projekt suchen (Strg + Alt + Umschalt + F) können Sie Knoten mit Eigenschaften suchen, deren Werte den angegebenen Text enthalten.

Bild

Überprüfen Sie, ob bestimmte Fehler vorliegen


Ein häufiger Anwendungsfall für das Schreiben einer Testsprache ist das Überprüfen der Knoten auf Fehlermeldungen und Warnungen. In einigen Fällen unterschied das MPS-Testsubsystem nicht zwischen verschiedenen Fehlertypen, die denselben Knoten betrafen. Dies kann zu Verwirrung führen: Selbst wenn der Benutzer den erwarteten Fehlertyp in der Testanmerkung explizit angibt, haben andere Fehler und Warnungen, die den entsprechenden Knoten betreffen, keine Testfehler generiert.

Beachten Sie, dass beim Upgrade auf eine neue Version einige Tests möglicherweise fehlschlagen, da sie jetzt nur Warnungen und Fehler unterdrücken, die der Benutzer in der Scananmerkung angibt.

Bild

Vorlagen in Definitionen von Validierungsregeln


Wenn Sie eine Validierungsregel für ein Konzept definieren, wird diese für jeden Knoten aufgerufen, der eine Instanz dieses Konzepts ist.

Anstatt jetzt jede vom übergeordneten Konzept geerbte Regel zu überschreiben, können Sie explizit eine Liste von Regeln angeben, die neu definiert werden müssen. Es wird dringend empfohlen, alle Validierungsregeln zu überprüfen, die die Überschreibungsfunktion verwenden, und anzugeben, welche Regeln neu definiert werden sollten.

Bisher konnten Sie eine Validierungsregel für ein Konzept mithilfe einer Vorlagensprache definieren. Diese Funktion diente dazu, die Bedingungen für die Anwendbarkeit der Regel (im Vergleich zu Regeln, die ausschließlich für das Konzept definiert wurden) einzuschränken sowie Eigenschaften, Kinder und Enkelkinder usw. bequem zu benennen. Für beide Zwecke ist die Verwendung der Vorlagensprache innerhalb des Regelkörpers geeignet, insbesondere die Verwendung des Übereinstimmungsoperators am oberen Rand des do-Blocks:

Bild

In Zukunft ist nicht geplant, Validierungsregeln mit Vorlagen in den Kopfzeilen zu unterstützen. Daher empfehlen wir, dass Sie solche Fälle finden und die Vorlagen mit einer speziellen Aktion in den Hauptteil der Regel verschieben.

Java 11 als Laufzeit


MPS wird jetzt in JDK 11 ausgeführt. Dies wirkt sich auf den Lademechanismus von Stub-Modellen aus. Der größte Teil Ihres Projekts muss nicht migriert werden, außer in den seltenen Fällen, in denen einige Klassen und Felder in JDK 11 neu gepackt wurden.

Wenn Sie das Plugin für IntelliJ IDEA verwenden, sollten jetzt Module mit MPS Facet mit JDK Version 11 verknüpft werden. Andernfalls schlägt die Codegenerierung fehl.

Geben Sie Facade API Facade ein


Die Typprüfung kann jetzt nur mit der neuen Fassaden-API durchgeführt werden.

Neue API: Siehe jetbrains.mps.typechecking.TypecheckingFacade und verwandte Klassen.

Veraltete API: jetbrains.mps.typesystem. * Die Pakethierarchie ist jetzt veraltet. Die Verwendung von Klassen aus dieser Hierarchie wird nicht empfohlen, mit Ausnahme von Code, der automatisch aus dem Inhalt des Typsystemaspekts generiert wird.

Geplante Änderungen in zukünftigen Versionen


Hier ein vorläufiger Überblick über Änderungen, die sich auf die Typsystemunterstützung auswirken:

  • Der Aspekt, der für die Implementierung des Typsystems und der darin verwendeten Sprache verantwortlich ist, wird nicht mehr unterstützt. Im Laufe der Zeit werden die Sprache und ihre Unterstützung in der Laufzeit in ein separates Plugin verschoben.
  • Ein neuer Aspekt wird hinzugefügt, der den Nicht-Typ-System-Teil des Typ-System-Aspekts effektiv ersetzt. Die Migration wird bereitgestellt, um Validierungsregeln aus dem alten Typsystemaspekt zu extrahieren.
  • Ein neues Framework für die Typprüfung wird mit Unterstützung der Laufzeit implementiert, wodurch veraltete Mechanismen von Grund auf neu geschrieben werden.

Montage im Hintergrund


Wir haben die Reaktionsfähigkeit der Benutzeroberfläche während der Hintergrunderstellung erhöht. Wenn der Erstellungsprozess einmal an den Hintergrund gesendet wurde, wird er bei nachfolgenden Ausführungen immer im Hintergrund ausgeführt. Die Aktion wird im Menü Einstellungen-> Projekteinstellungen-> Im Hintergrund ausführen gespeichert.

Basissprache


Eines der Hauptziele dieser Version war die Verbesserung von BaseLanguage. Wir haben eine Reihe von Problemen behoben, die sich auf die BaseLanguage-Sprachen auswirken, von Fehlern bis hin zu Problemen, die sich auf die Benutzerfreundlichkeit auswirken.

Rechtschreibprüfung in BL-Kommentaren


Die Rechtschreibprüfung ist jetzt für einzeilige Kommentare, Javadoc-Text und Zeichenfolgenliterale verfügbar.

Neues Beispielprojekt


Wir haben die Wünsche der Community berücksichtigt und ein neues Beispielprojekt mit XML-Generierung hinzugefügt.

Lokale Git-Konfiguration


Jetzt sind die Einstellungen des Zusammenführungstreibers nicht global, sondern lokal (für jedes Git-Repository separat), sodass jede installierte MPS-Kopie einen eigenen Zusammenführungstreiber haben kann.

Sie können diese Version hier herunterladen. Wir hoffen, es gefällt Ihnen. Bitte melden Sie uns Probleme in unserem Tracker .

Ihr JetBrains MPS-Team
Der Antrieb zur Entwicklung

Source: https://habr.com/ru/post/de476806/


All Articles