MPS 2018.3: Generierungspläne, Verbesserungen in der Assembler- und Verpackungssprache sowie in der Editor-Sprache, aktualisierte Oberfläche

Hallo Habr! Wir haben kürzlich MPS 2018.3 veröffentlicht . In dieser Version gibt es viele neue Funktionen, mit denen die Arbeit an Projekten noch effektiver wird. Wir haben die Generierungspläne und die Editorbeschreibungssprache verbessert, der Assembler- und Verpackungssprache neue Konstruktionen hinzugefügt, die Schnittstellenelemente für eine bequeme Navigation in der Vererbungshierarchie aktualisiert und viele andere Änderungen für die produktive Arbeit vorgenommen.


Bild

Basissprache


Symbole zum Navigieren in überdefinierten / implementierten Konzepten


In den Bereichen Konzepte und Schnittstellenkonzepte sind Symbole für neu definierte / implementierte Konzepte erschienen, die die Navigation zu untergeordneten Konzepten vereinfachen.


Bild

Benutzerdefinierte Pakete für BaseLanguage-Klassen


In früheren Versionen von MPS wurde das Java-Paket der generierten Klassen eindeutig durch den Namen des Modells bestimmt, in dem sich die Quellelemente befanden. Die neue Version für BaseLanguage-Klassifizierer fügt die packageName-Eigenschaft hinzu, mit der Sie den Namen des endgültigen Java-Pakets neu definieren können. Die Eigenschaft packageName ist nur für BL-Klassifizierer der obersten Ebene sinnvoll, wie dies bei Java-Klassifizierern der Fall ist.


Bild

Neue Generatorfunktionen für BaseLanguage-Erweiterungen


Für BaseLanguage werden häufig Erweiterungen erstellt. Bei einigen Erweiterungen kann es jedoch schwierig sein, einen geeigneten Generator zu schreiben. Wir haben BaseLanguage um mehrere neue Konzepte erweitert, um das Schreiben von Generatoren für Erweiterungen zu vereinfachen.


Generieren von Lvalue-Ausdrücken


Ein lvalue-Ausdruck ist eine Variable, in die Sie einen Wert lesen oder schreiben können. In einigen Fällen ist das Generieren eines Lvalue-Ausdrucks schwierig, da dies vom Kontext abhängen kann, in dem er verwendet wird. Ein neues generic lvalue-expression , der generic lvalue-expression vereinfacht den Generator und macht ihn kontextunabhängig.


Bild

Konvertieren Sie Lvalue-Ausdrücke in Links


Einige Ausdrücke enthalten andere Lvalue-Ausdrücke für komplexere Operationen mit Variablen (z. B. plus Zuweisung oder Inkrementieren und Abrufen von Ausdrücken). Das Einführen von Konstruktionen mit einer solchen Semantik war schwierig, da es für sie nicht einfach war, den richtigen Generator zu schreiben.


In der neuen Version können Sie jeden Lvalue-Ausdruck mit @byRef . Der BaseLanguage-Generator konvertiert den umschlossenen Ausdruck in einen Ausdruck vom Typ Reference<T> , der die Methoden get und set für die umschlossene Variable bereitstellt.


Bild

Lesen Sie mehr über neue Konzepte in diesem Artikel .


Unterstützung für Standardmethoden


In der neuen Version von MPS können Sie Standardmethoden in BaseLanguage-Schnittstellen erstellen. Das Standardschlüsselwort wird vom DefaultModifier-Konzept implementiert, einer Erweiterung des Modifier-Konzepts. DefaultModifier ist in der Sprache jetbrains.mps.baseLanguage.jdk8 enthalten. Um eine Standardmethode in der Schnittstelle zu erstellen, importieren Sie die Sprache jdk8.


Bild

Generator


Generatorsprache (Modelltransformationssprache)


Wir haben das Makro $ INCLUDE $ entfernt und seine Verwendung durch $ CALL $ ersetzt. Durch eine geeignete Migration können Sie Ihre Projekte aktualisieren. Das Makro $ INCLUDE $ unterstützt keine Vorlagen mit Argumenten, und das Vorhandensein von zwei ähnlichen Funktionsmakros erschwert die Sprache.


Makro $ WEAVE $ und Webregeln haben nun gelernt, Muster mit Argumenten aufzurufen. Darüber hinaus haben wir einen unangenehmen, wenn auch nicht sehr auffälligen Fehler behoben, der bei der Verwendung kompilierter und interpretierter Vorlagen auftritt. Das „Einführen“ (Weben) einer externen Vorlage aus dem interpretierten Code führte immer zur Interpretation, aber jetzt funktioniert die kompilierte Vorlage (natürlich, vorausgesetzt, die Verwendung kompilierter Vorlagen ist in den Generatoreigenschaften enthalten). In ähnlicher Weise funktioniert das „Weben“ der interpretierten externen Vorlage aus der kompilierten.


QueriesGenerated, eine Reihe kompilierter Modellabfragen für ein Modell mit Vorlagen, stützte sich beim Ausführen von Code immer auf eine Namenskonvention und eine Java-Reflection-Engine. Sie können dies in Stapelspuren sehen, wenn in der Modellabfrage des Generators ein Fehler aufgetreten ist. Wir haben diesen Mechanismus endlich losgeworden.


UI / UX-Elemente


MacBook Touchbar-Unterstützung


Besitzer von Macbooks mit einer Touchbar können jetzt damit in MPS arbeiten: Rufen Sie beispielsweise Aktionen auf, um eine Anwendung über die Touchbar zu starten, zu erstellen und zu debuggen, und wählen Sie schnell eine Run / Debug-Konfiguration aus oder erstellen Sie eine neue. Touchbar-Steuerelemente können unter Einstellungen / Einstellungen | konfiguriert werden Aussehen & Verhalten | Menüs und Symbolleisten.


Und natürlich können die Funktionen der Touchbar erweitert werden! Fügen Sie einfach die gewünschte Aktion zur entsprechenden InterfaceGroup .


Bild

Kontrastreiches Thema


Wie die IntelliJ-Plattform hat auch MPS ein neues kontrastreiches Thema. Es kann unter Einstellungen / Einstellungen -> Aussehen und Verhalten aktiviert werden.


Bild

Tools zum Auffinden von veraltetem Code


In der Migration | Veralteter Code Aktionen werden ausgeführt, um veralteten Code zu finden und mit seinen Verwendungen zu arbeiten. Suchen nach Verwendungen veralteter Gruppen Suchergebnisse anhand der beabsichtigten Version des Löschvorgangs. Auf diese Weise können Sie den Schweregrad ermitteln und auswählen, welche der Verwendungen zuerst entfernt werden sollen.


Bild

Symbole zum Navigieren in überschriebenen / implementierten Verhaltensmethoden


In den Feldern der Verhaltensklassen haben wir Symbole hinzugefügt, um über überschriebene / implementierte Verhaltensmethoden zu navigieren. Das Folgende ist eine Liste von getPresentation () -Methoden, die die ausgewählte Methode überschreiben oder implementieren. In der Liste können Sie problemlos zu einer dieser Methoden wechseln.


Bild

Popup-Verbesserungen für die Navigation bei Überschreibungen


Popups von überschriebenen / implementierten Konzepten / Klassen / Methoden sind asynchron geworden. Dies bedeutet, dass MPS einem Popup im Hintergrund Suchergebnisse hinzufügt. Außerdem können Sie jetzt Suchergebnisse nach Objektnamen filtern.


Bild

Finder Änderungen


In dieser Version haben wir Finder aktualisiert und optimiert. Verwenden Sie für die asynchrone Ausführung des Finders den speziellen Ausdruck OnEachNodeFoundByExpression, einen einfachen Aufruf des Finders mit einer Rückruffunktion für jeden erkannten Knoten.


Die Einstellungen für "Verwendungen suchen" für Konzepte wurden ebenfalls geändert. Wir haben die Suchoptionen Concept Ancestors und Derived Concepts hinzugefügt, die eine Liste der übergeordneten bzw. untergeordneten Konzepte anzeigen. Darüber hinaus wurden die Suchfunktionen für Verhaltensmethoden mit den Optionen "Überschriebene Methoden" und "Überschreibende Methoden" erweitert.


Bild

Fehler ignorieren


In MPS können Sie Fehler auf den Knoten ignorieren. Dies ist praktisch, wenn der Fehler im Editor angezeigt wird, in einem bestimmten Kontext jedoch keinen Sinn ergibt (z. B. in Generatorvorlagen). Bisher waren die Möglichkeiten zur Unterdrückung solcher Fehler unflexibel. Wenn der Knoten mit dem Attribut 'SuppressErrorAnnotation' versehen wurde, wurde der Effekt 'Fehler für Knoten unterdrücken ...' darauf aufgerufen. Die Verwendung dieser Absicht unterdrückte alle Arten von Fehlern auf diesem Knoten und all seinen Nachkommen - auf diese Weise konnten tatsächliche Fehler ignoriert werden.


Jetzt können nur bestimmte Arten von Fehlern ignoriert werden. Der ausgewählte Fehler wird für diesen Knoten und alle seine Nachkommen ignoriert, aber alle anderen Meldungen werden angezeigt. Weitere Informationen zu den neuen Fehlerverwaltungsfunktionen finden Sie in der Dokumentation .


Bild

Montage- und Verpackungssprache


Tipps & Tricks


RCP-Anwendungen (Rich Client Platform), mit denen standardmäßig Tipps und Tricks von MPS hinzugefügt werden. Jetzt können Tipps und Tricks für Ihre Anwendung mithilfe des neuen Tipps und Tricks-Designs im Build-Skript neu definiert werden. Nach wie vor können Sie die Tipps aus der MPS-Distribution verwenden oder selbst in einem Verzeichnis oder Lösungsmodul definieren und importieren.


Bild

Tipps & Tricks Beschreibung Sprache


Um Tipps und Tricks aus einem Lösungsmodul in ein Build-Skript zu importieren, erstellen Sie eine Lösung und importieren Sie die Sprachen jetbrains.mps.build.tips und jetbrains.mps.core.xml. Erstellen Sie dann eine Instanz des MPSTipsAndTricks-Konzepts und beschreiben Sie Ihre Tipps darin. Jeder Tipp besteht aus HTML-Text und darf nicht mehr als ein Bild enthalten.


Bild

Verpackungsmethoden


Wir haben benutzerdefinierte Verpackungen in BuildMps_IdeaPlugin als veraltet markiert. Verwenden Sie stattdessen die Verpackungsmethode im BuildMpsLayout_Plugin-Konstrukt.


Durch die automatische Verpackungsassemblierungsmethode werden alle Module des Sprach- und Lösungstyps in den Ordner "Sprachen" des Plugin-Stammverzeichnisses verschoben. Mit der Option "Manuelles Packen" kann der Entwickler die Plugin-Struktur selbst festlegen.


Bild

Neues Design der Montage- und Verpackungssprache


Wir haben die Funktionen der Testkonfiguration in der Assembler- und Verpackungssprache erweitert. Jetzt können zusätzliche IntelliJ IDEA-Plugins angegeben werden, die geladen werden müssen, um MPS-Tests von Ant aus ausführen zu können.


In einigen Fällen ist zum Ausführen des Tests ein bestimmtes Plug-In erforderlich, das die Assemblersprache von den Modulen, die die Tests enthalten, nicht berechnen konnte. Jetzt können Sie das zum Ausführen des Tests erforderliche Plugin im Testkonfigurationsdesign angeben.


Bild

Der Herausgeber


Wiederverwenden von Zellenaktionskarten


Elemente der Zellenaktionskarte aus einer vorhandenen Aktionskarte können mithilfe von Importen wiederverwendet werden.


Bild

Weitere Verbesserungen


Vollständig kompilierte Datentypen


Auf dem Weg zu vollständig kompilierten Sprachen haben wir vollständig generierte Datentypen erstellt. Alle generierten Datentypinformationen sind über die SModel-API verfügbar.


Migrationsdaten in Anmerkungen speichern


Wir haben eine neue Methode zum Speichern von Daten während Migrationen implementiert, die wir in Zukunft empfehlen. Der abgeleitete Knoten, der die Daten enthält, sollte jetzt an einen Knoten angehängt werden, der sich nahe genug an dem Ort befindet, zu dem die Daten gehören.


In dem Migrationsskript, das Knoten mit Daten erstellt, müssen Sie das Konzept solcher Knoten deklarieren und das Konstrukt putData () verwenden, um jede solche Annotation in das Modell einzufügen:


Bild

Das Abrufen von Knoten, die Daten enthalten, ist dasselbe wie zuvor:


Bild

Änderungen am Konfliktlösungsdialog


Bisher konnten Änderungen in einem Konflikt nur auf einer Seite angewendet werden. Manchmal ist es jedoch wichtig, andere Änderungen nicht zu verlieren.


Dies gilt für Änderungen an benachbarten Knoten, die dieselbe Pluralrolle haben. Nachdem Sie die Änderungen auf einer Seite des Konflikts übernommen haben, werden die Änderungen aus dem anderen Zweig als Ergänzung angezeigt. Um die Lösung des Konflikts abzuschließen, muss dieser Zusatz angewendet oder abgelehnt werden.


Nachdem Sie die Änderungen auf der linken Seite des Konflikts übernommen haben, können Sie die Zeile auf der rechten Seite anwenden oder ignorieren:


Bild

Sie können die neue Version hier herunterladen, wir hoffen, es wird Sie begeistern. In jedem Fall warten wir auf Ihr Feedback ! Eine vollständige Liste der Korrekturen finden Sie auf dieser Seite . Bitte melden Sie uns Probleme im Tracker .


Ihr JetBrains MPS-Team
Der Antrieb zur Entwicklung

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


All Articles