Project

General

Profile

Maintenance des vérifications sous-jacentes à l'éditeur textuel

De quoi s'agit-il ?

La validation est responsable de la vérification du code dans l'éditeur textuel. De base, elle est présente sous la forme des vérifications syntaxiques mais il est possible d'étendre ces vérifications. Par exemple à l'heure actuelle, nous vérifions qu'une variable d'entrée n'est pas affectée et que toutes les variables de sorties et locales le sont. Il est possible d'implémenter d'autres vérifications de ce type.

Où est-ce implanté ?

Actuellement, le validateur est implémenté dans le fichier LustreJavaValidator.java. Ce fichier contient des fonctions qui seront appelés lorsque les règles seront parsées dans l'éditeur textuel. Ce fichier est situé dans le package org.obeonetwork.dsl.lustre.validation.

Procédure pour de nouvelles fonctions.

Il est possible de créer de nouvelles fonctions java qui serviront à valider le code. Les fonctions doivent comporter les caractéristiques suivantes :
  • Elles doivent être annotées par @Check du package org.eclipse.xtext.validation.
  • Elles ne doivent avoir qu'un seul argument corespond à l'élément du modèle à vérifier (par exemple Node)
  • Elles doivent faire appel à la fonction error avec en second argument le EStructuralFeature corespondant à l'élément à vérifier.

Quant à l'endroit où mettre ces fonctions, il y a deux possibilités. La première, et celle que nous recommandons, est simplement d'ajouter les fonctions dans le fichier déjà existant, à savoir LustreJavaValidator.java. La seconde est a utiliser dans le cas où vous préféreriez mettre vos fonction dans votre propre fichier de validation. Dans ce cas, il faut créer le fichier (nous vous conseillons de le mettre dans le package de validation) puis il faut que votre classe soit marquée comme étendant la classe AbstractLustreJavaValidator. Ensuite, il va falloir dire à xtext qu'il faut qu'il utilise ce fichier comme une source de fonctions de validations. Pour ce faire, il faut ajouter cette ligne : composedCheck = "maclasse" dans le fichier GenerateLustre.mwe2 dans la section commentée par "java-based API for validation".

A présent votre validateur est pris en compte et fonctionnel.

Erreurs

Si votre éditeur textuel réagit bizarrement, avec notamment des erreurs absconses ou mal placées, il se peut que cela vienne de vos fonctions de validation. En effet, xtext a tendance à catcher les exceptions java et la surcouche n'a donc pas conscience des erreurs. Il faut donc bien s'assurer d'avoir des fonctions de validation fonctionnelle avant de chercher ailleurs des erreurs.