Annotation Interface CodeQualityToCheck
- Author:
- Yvan Maillot <yvan.maillot@uha.fr>
L'annotation @caseine.tags.CodeQualityToCheck
Le principe consiste à soumettre l'arbre syntaxe (AST) de la version étudiante de l'élément annotée au contrôle de l'enseignant par l'intermédiaire d'une méthode qu'il doit écrire.
L'AST et son contrôle est réalisé grâce à JavaParser
Cible
@CodeQualityToCheck s'applique à
- un type
- une classe
- une interface
- un type d'annotation
- un type énuméré
- une méthode
- un constructeur
Formes d'emploi
@CodeQualityToCheck s'emploie uniquement commentune annotation multivaluée : (e.g.
@CodeQualityToCheck( grade = 1, priority = 2, codeAnalyserMethodsName = "edu.uha.miage.AnUnitTestClass.aMethod" )Utilisation de la propriété codeAnalyserMethodsName
Cette propriété est une chaîne de caractères (
String) qui représente- le nom pleinement qualifié d'une méthode
- qui retourne une chaîne de caractères
- et reçoit en paramètre un objet de type
com.github.javaparser.ast.body.MethodDeclarationsi l'élément annoté est une méthode.com.github.javaparser.ast.body.ConstructorDeclarationsi l'élément annoté est une méthode.com.github.javaparser.ast.body.TypeDeclarationsi l'élément annoté est une méthode.
Chacun de ces paramètres contient l'AST (résultat du parsing) de l'élément annoté.
Par exemple,
codeAnalyserMethodsName = "edu.uha.miage.AClassTest.aMethodAnalyser"représente l'une des méthodes de la classe
AClassTestsuivantes:public static String aMethodAnalyser(com.github.javaparser.ast.body.MethodDeclaration)public static String aMethodAnalyser(com.github.javaparser.ast.body.ConstructorDeclaration)public static String aMethodAnalyser(com.github.javaparser.ast.body.TypeDeclaration)
selon que l'élément annoté soit une méthode, un constructeur ou une classe.
L'enseignant a tout le loisir d'utiliser l'API de JavaParser ou quelques utilitaires fournis dans
ParserUtilspour analyser le code de l'étudiant.Conventions d'écriture de la méthode de test
Il doit écrire
codeAnalyserMethodsNamede sorte qu'elle retourne"OK"si l'analyse est satisfaisante, ou- autre chose dans le cas contraire.
Cette autre chose est un message destiné à l'étudiant dont le contenu est laissé à l'appréciation de l'enseignant.
Pour le reste voir la documentation des propriétés
- un type
- See Also:
-
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionString[]Un tableau des noms pleinement qualifiés de méthodes qui prennent en paramètre l'AST de l'élément annoté.doubledéfinit le nombre de points attribués à la réussite de ce test ou une valeur relative si le tagRelativeEvaluationest employé.intdéfinit l'ordre de priorité croissante du test généré dans sa classe de tests unitairesString[]définit un tableau de chaînes de caractères qui représentent des tests unitaires.Définit la consigne destinée à l'étudiant quand le test échoue.
Quand la valeur par défaut est choisie, un message standard est généré.
-
Element Details
-
value
String valueDéfinit la consigne destinée à l'étudiant quand le test échoue.
Quand la valeur par défaut est choisie, un message standard est généré.- Returns:
- la consigne destinée à l'étudiant.
- Default:
- ""
-
priority
int prioritydéfinit l'ordre de priorité croissante du test généré dans sa classe de tests unitaires- Returns:
- l'ordre de priorité.
- Default:
- 0
-
grade
double gradedéfinit le nombre de points attribués à la réussite de ce test ou une valeur relative si le tagRelativeEvaluationest employé.
Un grade négatif ou nul est ignoré.
- Returns:
- le grade.
- See Also:
- Default:
- 4.9E-324
-
requiersUnitTestsBefore
String[] requiersUnitTestsBeforedéfinit un tableau de chaînes de caractères qui représentent des tests unitaires.Chaque chaîne de ce tableau peut être
- Soit convertible en entier, dans ce cas, elle représente tous des tests unitaires de cette priorité.
- Soit le nom pleinement qualifié d'une méthode de test unitaire.
Pour que le test unitaire annoté réussisse, il faut que tous les tests unitaires représentés dans ce tableau réussissent.
Attention aux dépendances cycliques
- Returns:
- le tableau des tests unitaires
- Default:
- {}
-
codeAnalyserMethodsName
String[] codeAnalyserMethodsNameUn tableau des noms pleinement qualifiés de méthodes qui prennent en paramètre l'AST de l'élément annoté.- Returns:
- Un tableau des noms pleinement qualifiés de méthodes qui prennent en paramètre l'AST de l'élément annoté.
- Default:
- {}
-