JetBrains a annoncé la disponibilité générale de la deuxième mise à jour majeure annuelle (2019.2) de Meta Programming System (MPS), son environnement de développement de langages dédiés. Un langage dédié (en anglais, Domain specific language ou DSL) est un langage de programmation dont les spécifications sont conçues pour répondre aux contraintes d’un domaine d'application précis. Il s'oppose conceptuellement aux langages de programmation classiques (ou généralistes) comme Java ou C, qui tendent à traiter un ensemble de domaines. Dans de nombreux cas, les DSL ne sont pas conçus pour être utilisés par des développeurs, mais par des non-programmeurs maîtrisant parfaitement le domaine couvert par le langage dédié.
La construction des langages dédiés diffère fondamentalement de celle d'un langage classique. Le processus de développement peut s’avérer très complexe. Sa conception nécessite en effet une double compétence dans le domaine à traiter et en développement informatique. Mais un langage dédié étant basé sur les concepts et les fonctionnalités d'un domaine spécifique, il reste un moyen efficace de décrire et de générer des programmes dans ce domaine ; ce que veut faciliter JetBrains avec MPS.
Cette version apporte de nouvelles fonctionnalités à différents sous-systèmes.
Types de données d'énumération
Les nouvelles déclarations de type de données d'énumération fournissent un moyen concis de déclarer une liste d'options: chaque option est exprimée avec un membre d'énumération nommé. Vous pouvez éventuellement modifier la présentation de l'éditeur pour certains membres et choisir le membre par défaut utilisé lorsqu'aucun membre n'est explicitement défini dans une propriété.
Le langage SModel a également affiné l'expérience de travail avec les propriétés d'énumération. Désormais, la lecture et l'écriture de la propriété fonctionnent avec des occurrences typées membres d'énumération au lieu de valeurs primitives brutes, ce qui aide les développeurs à écrire du code avec moins d'erreurs.
De plus, l'éditeur a retravaillé toutes les opérations qui fonctionnent avec des énumérations
L'instruction Enum Switch a été ajoutée au langage SModel, offrant ainsi la possibilité d'activer les membres d'énumérations. Elle peut également être utilisée comme expression pour évaluer différentes valeurs en fonction du membre d'énumération rencontré.
Personnalisation des messages d'erreur
Pendant un certain temps, il a été demandé de personnaliser certains messages d'erreur MPS. C'est chose faite. Dans cette version, tous les messages d'erreur du vérificateur de contrainte peuvent désormais être personnalisés.
L'éditeur prévoit de rendre cette personnalisation des rapports disponible pour d’autres types d’erreurs dans les prochaines versions.
Un nouvel aspect de langage nommé ‘feedback’ a été ajouté à cette version. Cet aspect peut être utilisé pour personnaliser le texte des messages d'erreur signalés par les contraintes de validation de structure, de propriété et de portée.
Le feedback ‘ShowMessage’ définit le texte affiché dans l’info-bulle lorsque vous déplacez le curseur de la souris sur le nœud qui pose problème.
Notez que vous pouvez définir vos propres commentaires personnalisés en étendant l'ensemble de langages de commentaires. Par exemple, vous pouvez décrire un commentaire mettant en évidence les arêtes ou les sommets dans l'éditeur de diagramme.
Langage de contraintes basé sur des règles
Un langage de contraintes basé sur des règles a été créé afin de remplacer la contrainte canBe * actuellement disponible par rapport au langage de contraintes MPS habituel. L'éditeur considère le langage de contraintes basé sur des règles comme une fonctionnalité expérimentale. Il s'attend donc à ce qu'il évolue de manière significative dans les prochaines versions.
L'éditeur précise que « pour l’instant, nous gardons la priorité sur les contraintes de style ancien. Par conséquent, les anciennes contraintes canBe * doivent être complètement supprimées afin de permettre aux contraintes basées sur des règles d’intervenir. Le nouveau langage de définition de contraintes est plus déclaratif, il oblige le concepteur de langage à spécifier un ensemble de contraintes (règles) au lieu du bloc conditionnel unique ».
La version 2019.2 permet de fournir un message d'erreur personnalisé pour chaque règle individuellement.
Historique Racine
Le menu Git contient une nouvelle action pour afficher l'historique des modifications apportées par VCS à une racine spécifique. L’action est disponible dans le menu contextuel de l’éditeur:
Notez que la collecte de l'historique racine, comme pour presque toutes les autres actions de l'historique VCS, prend beaucoup de temps. La barre d’état contient un indicateur de progression qui vous aide à supporter cela.
La boîte de dialogue est similaire à la boîte de dialogue Historique de sélection dans IntelliJ IDEA.
Une liste des révisions dans la boîte de dialogue affiche les révisions d'un fichier de modèle lorsque la racine correspondante a été modifiée.
Recherche avec un texte intégral
La recherche avec un texte intégral dans les valeurs de propriété est prête. Édition–> Rechercher–> Rechercher du texte dans l'action du projet (Ctrl + Alt + Maj + F) vous permet de rechercher des nœuds avec des valeurs de propriété correspondant au texte spécifié.
Vérification d'erreur spécifique
L'un des cas d'utilisation courants d'un langage de test consiste à rechercher des messages d'erreur ou des avertissements dans les nœuds. Le sous-système de test de MPS n’était parfois pas en mesure de faire la distinction entre différentes erreurs apparaissant sur le même nœud. Cela pouvait entraîner un comportement trompeur: même si l'utilisateur spécifie l'erreur attendue dans l'annotation de test correspondante, les erreurs et les avertissements supplémentaires signalés sur ce nœud ne seront pas signalés en tant que violations de test.
Règles de vérification définies pour les modèles
Lorsque vous définissez une règle de vérification pour un concept, cette règle est ensuite appelée pour chaque nœud constituant une instance du concept.
Désormais, au lieu de remplacer une règle héritée du superconcept, vous pouvez spécifier explicitement la liste des règles à remplacer. L'éditeur recommande vivement de passer en revue toutes vos règles de vérification utilisant la fonctionnalité de remplacement et de déterminer quelles règles doivent être remplacées.
Auparavant, il était possible de définir la règle de vérification pour un concept utilisant un langage de modèle. Cette option peut être utilisée pour restreindre la condition d'applicabilité des règles (par rapport aux règles définies uniquement pour un concept) et pour nommer facilement des propriétés, des enfants, des petits-enfants, etc. Les deux objectifs peuvent être atteints en utilisant un langage de modèle à l'intérieur du corps de la règle, en particulier, en utilisant l'instruction [B]matches[/C] au-dessus de son bloc do:
Java 11 comme runtime
MPS s'exécutera maintenant sous JDK 11. La plupart des projets n’auront pas besoin de migration, sauf les rares utilisations de certaines classes et de certains champs reconditionnés dans JDK 11.
Dans le plug-in IntelliJ IDEA, les modules avec la facette MPS doivent maintenant être associés à JDK version 11. Sinon, la génération de code échoue.
Télécharger MPS 2019.2
Source : blog JetBrains
Voir aussi :
JetBrains publie la version 2019.2 de DataGrip, son EDI destiné aux administrateurs de bases de données et développeurs travaillant avec des SGBD SQL
CLion 2019.2 disponible, l'EDI C/C++ de JetBrains apporte des améliorations pour le développement embarqué et un débogueur expérimental MSVC
Voici l'état de l'écosystème des développeurs en 2019 : l'évolution du monde du code, d'après une enquête menée par Jetbrains
WebStorm 2019.2 disponible : tour d'horizon des nouveautés de l'EDI de JetBrains pour les développeurs JavaScript
L'environnement de développement de langages dédiés MPS 2019.2 apporte la personnalisation des messages d'erreurs
Java 11 comme runtime et bien d'autres
L'environnement de développement de langages dédiés MPS 2019.2 apporte la personnalisation des messages d'erreurs
Java 11 comme runtime et bien d'autres
Le , par Stéphane le calme
Une erreur dans cette actualité ? Signalez-nous-la !