Skip to content

Structure des tâches

Dubray Alexandre edited this page Sep 24, 2017 · 3 revisions

Structure dossier

Un dossier de tâche typique ressemble à ceci

|- run
|- config.json
|- task.yaml
|- src
    |- Runner.java
    |- Tests.java
    |- librairies (optionnel)
        |- Librairies.jar
    |- Correction.java
|- Templates
    |- EtudiantCode.tmpl
|-student
    |- Translations

Un script run

Le script run a plusieurs utilités :

  • Il va mettre les réponses des étudiants dans les fichiers .tmpl (voir section sur le dossier Templates);
  • Il va compiler les fichiers .java du dossier src et ceux générés lors de l'étape précédente;
  • Il va éventuellement exécuter un script custom supplémentaire (voir section sur le config.json);
  • Il va lancer le Runner et donner le feedback adéquat à l'étudiant;

Il prend ses arguments depuis le fichier config.json qui sera détaillé dans la section suivante.

Un fichier config.json

Le fichier config.json est le fichier de configuration de la tâche. Voici ses champs:

  • customscript : le nom d'un fichier de script personnalisé, dans un langage de script quelconque;
  • execcustom : s'il faut exécuter oui (1) ou non (0) le script personnalisé;
  • nexercices: le nombre d'exercice (sous-problèmes) de la tâche

Il y a deux autre champs qui sont optionnels

  • tests: une liste (i.e. [elem1,elem2,...]) qui contient l'ensemble des fichiers de tests à compiler et lancer. Si le champs n'est pas présent ou si la liste est vide, les fichiers qui sont considérer comme des fichier de tests sont les fichiers .java tel qu'ils sont
    • Différent du fichier runner;
    • dont le nom ne commence pas par 'Correction'
  • runner : une chaîne de caractère qui spécifie le runner à utiliser. Si le champs n'est pas présent, le fichier Runner.java est utilisé.

Un fichier task.yaml

Ce fichier est généré automatiquement lors de la création d'une tâche, via l'interface graphique. Sur cette interface vous retrouvez

  • Un onglet Basic settings. Dans cet onglet vous avez notamment le nom de l'auteur, de la tâche , le contexte et quelques autres options. Le contexte de la tâche est l'énoncé de l'exercice que vous écrivez. Le contexte est écrit en rST;
  • Un onglet Container setup dans lequel vous pouvez définir les paramètres de l'environnement dans lequel le code de l'étudiant va être exécuté;
  • Un onglet Subproblems dans lequel vous pouvez définir de nouveau sous-problème dans votre tâche. Chaque sous-problème est identifié par un id unique. Cet identifiant est important pour les fichiers de template (voir section sur le dossier Templates);
  • Un onglet Task files où vous pouvez manipuler les fichiers de la tâches.

Le dossier src

Le dossier src doit contenir

  • L'ensemble des fichiers de tests
  • Le runner qui lancent les tests

Éventuellement, on peut trouver dedans

  • Un (des) fichier(s) de correction de l'exercice. Notons que nous recommandons fortement l'écriture de fichiers de corrections pour s'assurer que l'exercice soit réalisable. Le(s) fichier(s) de correction doivent tous suivre la nomenclature Correction<String>.java.

Notons que le nom des fichiers de test n'ont pas d'importance. Il est cependant important que le fichier runner renvoie 127 si les tests ont réussis.

Le dossier Template

Ce dossier contient des fichiers .tmpl. Ces fichiers sont des templates dans lesquels seront insérés les réponses de l'étudiant aux sous-problèmes. Un fichier .tmpl est un fichier écrit en Java dans lequel une partie du code a été remplacé par @ @<id-question>@@ ou <id-question> est l'id d'un sous-problème de votre tâche. C'est à cet endroit que sera inséré le code de l'étudiant. Cette opération est effectuée par le fichier run et le résultat sera écrit dans un fichier .java qui sera placé dans un dossier StudentCode à la racine du dossier. C'est pourquoi les fichiers des étudiants se trouvent dans le package StudentCode.

Remarquez que vous pouvez avoir plusieurs fichiere .tmpl avec chacun un ou plusieurs sous-problème à remplacer.

Le dossier student/Translations

Ce dossier contient un utilitaire Java (Translator.java) permettant l'intégration de gnugettext dans les autres fichiers Java. Ce dossier contient aussi un dossier translation_run et translation_java. Ceux-ci contiennent les traduction des chaines de caractères. Vous ne devez à priori pas y toucher. Il est nécessaire que ces fichiers se trouvent dans le dossier student afin que les traductions soient accessibles au runtime (au runtime, seul le dossier student est accessible).