Project

General

Profile

Maintenance validation » History » Version 3

Mathieu MONTIN, 03/11/2013 05:35 PM

1 1 Guillaume Babin
h1. Maintenance des vérifications sous-jacentes à l'éditeur textuel
2 2 Mathieu MONTIN
3 2 Mathieu MONTIN
h2. De quoi s'agit-il ?
4 2 Mathieu MONTIN
5 2 Mathieu MONTIN
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.
6 2 Mathieu MONTIN
7 3 Mathieu MONTIN
h2. Où est-ce implanté ?
8 1 Guillaume Babin
9 3 Mathieu MONTIN
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*.
10 3 Mathieu MONTIN
11 3 Mathieu MONTIN
h2. Procédure pour de nouvelles fonctions.
12 3 Mathieu MONTIN
13 3 Mathieu MONTIN
Il est possible de créer de nouvelles fonctions java qui serviront à valider le code. Les fonctions doivent comporter les caractéristiques suivantes :
14 3 Mathieu MONTIN
* Elles doivent être annotées par *@Check* du package *org.eclipse.xtext.validation*.
15 3 Mathieu MONTIN
* Elles ne doivent avoir qu'un seul argument corespond à l'élément du modèle à vérifier (par exemple *Node*)
16 3 Mathieu MONTIN
* Elles doivent faire appel à la fonction *error* avec en second argument le *EStructuralFeature* corespondant à l'élément à vérifier.
17 3 Mathieu MONTIN
18 3 Mathieu MONTIN
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"_. 
19 3 Mathieu MONTIN
20 3 Mathieu MONTIN
A présent votre validateur est pris en compte et fonctionnel. 
21 3 Mathieu MONTIN
22 3 Mathieu MONTIN
h2. Erreurs
23 3 Mathieu MONTIN
24 3 Mathieu MONTIN
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.