TME1 — Installation et programmation en ILP1 1 Environnement de ...
11 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

TME1 — Installation et programmation en ILP1 1 Environnement de ...

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
11 pages
Français

Description

Master, Secondaire - Lycée, Master
  • cours - matière potentielle : édition
  • cours - matière potentielle : ilp
UFR 919 Informatique – Master Informatique Spécialité STL – UE MI016 – ILP TME1 — Installation et programmation en ILP1 Christian Queinnec La séance est divisée en deux parties. Dans la première, vous installerez les outils nécessaires afin de pouvoir les utiliser dans la seconde partie. Comme pour tous les TME qui suivront, vous aurez à rendre un travail qui sera noté. Plus de détails sur ce travail en section 6 de ce document. 1 Environnement de travail Objectif : se donner un environnement de travail incorporant les outils et les pro- grammes du cours.
  • menu window
  • ilp
  • eclipse
  • lignes de commande
  • ligne de commande
  • répertoire
  • répertoires
  • java
  • interprètes
  • interprète
  • fichier
  • fichiers
  • test
  • tests
  • classe
  • classes

Sujets

Informations

Publié par
Nombre de lectures 54
Langue Français

Exrait

UFR 919 Informatique – Master Informatique
Spcialit STL – UE MI016 – ILP
TME1 — Installation et programmation en ILP1
Christian Queinnec
La sance est divise en deux parties. Dans la premire, vous installerez les outils ncessaires afin de pouvoir les utiliser dans la seconde partie. Comme pour tous les TME qui suivront, vous aurez Ā rendre un travail qui sera not. Plus de dtails sur ce travail en section 6 de ce document.
1
Environnement de travail
Objectif :se donner un environnement de travail incorporant les outils et les pro-grammes du cours.
Buts – Identifier et localiser les outils – Installer son environnement de travail (Ā l’UPMC et chez soi) – Ècrire puis valider un programme XML – Valider puis valuer un programme ILP – Tester un ensemble de programmes ILP – Ècrire puis excuter un test avec JUnit
Les liens Les rpertoires dans lesquels vous pourrez trouver informations et outils pour le cours ILP se trouvent en : 1file: /// Infos / lmd /2011/ master / ue / ilp -2011 oct / 2http: // www - master . ufr - info - p6 . jussieu . fr / site - annuel - courant / Les sources du systme ILP se trouvent sous : 1file: /// Infos / lmd /2011/ master / ue / ilp -2011 oct / Par ailleurs, indiquez, si besoin, dans votre navigateur que votre proxy estproxy.ufr-info-p6.jussieu.fr port 3128 (c’est utile pour charger des greffons supplementaires dans Eclipse).
1.1 Travail À raliser Lancez Eclipse avec la commandeeclipse. Cette commande lance la dernire version (3.7 Indigo) d’Eclipse. Pour chez vous, Eclipse peut tre trouv sur son site enhttp://www.eclipse.org/. Prenez une versionEclipse IDE for Java Developers.
1
Une fois lanc, Eclipse veut savoir oÙ ranger son espace de travail (pourworkspace), dites oui Ā ce qu’il vous propose. C’est, par dfaut,~/workspace/, ne changez rien ! Cochez aussi la case lui demandant de mmoriser cette rponse afin qu’il ne vous la pose plus. Ne changez pas d’espace de travail, c’est lĀ oÙ nous rcuprerons vos textes lors des examens. Ajustez Eclipse de la manire suivante : 1. MenuWindow,Preferences,Java,Compiler, rglezCompliance levelĀ 1.6 (si ce n’est djĀ fait). Si Eclipse ne sait pas oÙ se trouve java 1.6, il faut lui indiquer oÙ se situe cette JVM ainsi : MenuWindow,Preferences,Java,Installed JRE, bouton Addet indiquer le chemin menant Ā/usr/java/jdk1.6.0_26. 2. MenuWindow,Preferences,General,Editors,Text Editors, cochez la caseShow Print Marginqui montre la marge droite situe Ā 80 colonnes : ne dpassez pas cette colonne, nous risquons de ne pas corriger vos programmes (notamment lors des examens) si leurs lignes dpassent cette limite. 3. MenuWindow,Preferences,General,Editors,Text Editors, cochez la caseinsert spaces for tabs(car il ne faut jamais utiliser de tabulations dans les programmes (sauf si c’est une convention impose)). 4. MenuWindow,Preferences,General,Workspace,Text File Encoding: utf8. 5. MenuWindow,Preferences,General,Workspace,New text file line delimiter: unix. 6. (facultatif) : MenuWindow,Preferences,General,Editors,Keys,Scheme :emacs (lĀ c’est mon goÛt personnel) Parmi les problmes qui parfois surviennent, il y a – pas assez de place sur votre compte (utilisez la commandequota – Eclipse est sorti sans avoir effac le fichier~/workspace/.metadata/.lock: effacez-le puis lancer Eclipse – Eclipse ne se relance plus et l’erreur figurant dans~/workspace/.metadata/.logmen-tionne des classes SWT en relation avec le navigateur (browser) : supprimez le rpertoire~/.mozilla/eclipse – Plein de classes d’ILP sont en rouge : Vous n’tes probablement pas en Java 6 : il y a Java/Compiler/ComplianceLevel mais il y a aussi JavaCompiler/Compliance-Level et quelques fois les deux ne sont pas d’accord.
1.1.1 Installation sources ILP Pour installer les sources comme un projet dans Eclipse, voici une procdure : 1. Dans l’cran initial d’Eclipse, cliquez sur le cercleworkbench(tout Ā droite) 2. dans un shell (vous avez bien lanc Eclipse en arrire plan ?), faites ce qui suit (cela va crer quelques rpertoires dont Java, Grammars et C : 1workspace /% cd ~/ 2% tar xzf $( ls -t / Infos / lmd /2011/ master / ue / ilp -2011 oct / TGZ / ILP1 -* | head -1 )
3. Crez un nouveau projet de type Java (File,New java projectdans la case nom) ; du projet, tapez ILP. Au moment oÙ vous finissez de taper P, Eclipse dtecte qu’un tel rpertoire existe et vous propose de le rcuprer tel quel : cliquezFinish. Si ce n’tait pas le cas, cliquez surcreate new project from sourceset choisissez le rpertoireworkspace/ILP, enfin, cliquezFinish. 4. Le projet est presque prt. Eclipse va peut-tre vous demander s’il faut ouvrir la perspective Java, rpondez affirmativement. Voici ce que l’on peut voir dans l’explorateur de paquetages : Java/src: les sources d’ILP en Java.
2
*.jar: les archives des outils utiliss dans le projet. JRE System Library [JVM 1.6]: l’excutif Java utilis par ce projet. C: des bibliothques pour la compilation d’ILP vers C. Grammars: les grammaires des diffrentes versions ILP* et des programmes dans le sous-rpertoireSample. Java: le rpertoire contenantJava/src, d’autres utilitaires et la documentation Ja-vadoc du projet. – et quelques autres fichiers ou rpertoires comme le fichierbuild.xmlqui est le fichier Ant de construction des binaires et autre produits du projet ou le fichier LISEZ.MOIdont le nom indique l’usage qu’il faut en faire (il contient notamment la documentation d’emploi du greffon). Cette anne il y a une diffrence entre mon Eclipse et celui de l’ARI, un point d’ex-clamation jaune apparaït sur la classefr.upmc.ilp.tool.AbstractProcessTest, vous pouvez l’ignorer ou rparer comme suggr. Vous pouvez alors tester un peu l’installation : effectuez ceci 1. Pour tester un peu plus, dpliezJava/srcpuis le paquetagefr.upmc.ilp.ilp1, clic droit sur le fichierWholeTestSuite,Run as JUnit test. Normalement, tous les tests doivent passer (ce que montre une barre totalement verte). Eclipse cherche normalement Ā compiler tous les sources du projet automatique-ment, et donc lors de la cration d’un projet Ā partir de sources. la fentre du bas sert Ā produire les messages de compilation. Si cette fentre fait apparaïtre des erreurs, il se peut que certaines configurations du projet ne soient pas correctes. Pensez Ā tudier le tutoriel d’Eclipse intgr dans l’aide en ligne d’Eclipse.
1.1.2 Installation greffon ILP Le greffon estdjÀ installsur les machines de l’ARI. Pour dtecter si le greffon est install, ouvrez le menu contextuel du fichierbuild.xmlet regardez si une entre ILP y figure. Si le greffon n’est pas install, voici comment faire : 1. MenuHelp, itemInstall New Software, 2. cliquez sur le boutonAdd. Eclipse ouvre une fentre, indiquez ILP comme nom puis tapez l’URL suivante dans le champLocation: 1http: // www - master . ufr - info - p6 . jussieu . fr /2011/ Ext / queinnec / ILP /
Cliquez OK, Eclipse va alors chercher les greffons disponibles avec les numros de version. 3. Cochez ILP pour demander son installation puis cliquez sur le boutonNext 4. Acceptez la licence d’utilisation et passez, avec le boutonNext, Ā l’cran suivant. 5. QuelqueValider,OKetFinishplus tard, le greffon s’installe. Il faut juste confirmer que je ne l’ai pas sign et que vous me faites confiance en cliquant surInstall all. 6. Eclipse se relance alors et le greffon est normalement install. á propos, si vous souhaitez installer d’autres greffons dans Eclipse, vous aurez be-soin d’indiquer Ā Eclipse d’utiliser un relais (pourproxy) pour accder Ā Internet. C’est dans les prfrences d’Eclipse, menuWindow,Preferences..., itemGeneral,Network Connection. Indiquez alors les coordonnes du proxy conseill par l’ARI, fort probable-mentproxy.ufr-info-p6.jussieu.frport 3128. Le greffon installe de nouveaux menus contextuels sur les fichiers de suffixe.xml, .rncet.rng. Pour vrifier qu’il est bien install, faites comme indiqu au dbut de cette section.
3
1.1.3 Deux ou trois trucs pour Eclipse Si vous modifiez des fichiers en dehors d’Eclipse, la touche fonction F5 indique Ā Eclipse de se resynchroniser avec le systme de fichiers. Lorsque le curseur est sur un nom, F3 permet d’ouvrir le fichier dfinissant ce nom. F4 permet de voir la hirarchie des classes ou interfaces du nom concern. CTRL-shift-O permet d’importer les classes ou interfaces qui manquent. Attention cependant en cas de noms dupliqus Ā importer la bonne version (Filepar exemple existe dansjava.ioet dansfr.upmc.ilp.tools) ! CTRL-space propose des compltions. Le survol par la souris d’une zone errone propose souvent de bonnes solutions (Quick Fix). Augmentez votre espace vital en dplaÇant les vuesOutline,Taskssous la vuePa-ckage explorer. Pour cela faites glisser l’onglet depuis sa position actuelle Ā celle sou-haite. Vous pouvez voir plusieurs fichiers cÔte-Ā-cÔte en prenant l’onglet de l’un et en le faisant glisser sur le bord horizontal (ou vertical (essayez les deux !)) de la fentre. On peut mme maintenant ouvrir 2 fentres sur le mme fichier (menu contextuel ’new Editor’ sur l’onglet contenant le nom du fichier).
2
Cycle d’excution d’un programme ILP
Objectif: apprendre Ā raliser toutes les tapes permettant d’excuter un programme ILP et vrifier la bonne installation de l’environnement de travail.
Buts – Comprendre les exemples de programmes ILP1. – Comprendre comment vrifier la syntaxe d’un programme en validant le document XML correspondant par rapport Ā sa grammaire. – Comprendre comment excuter un programme. – Noter (dans un fichier, par exempletme1.txt) ce que vous avez compris.
Les liens XML RelaxNG
http://www.w3.org/XML/Core/ http://www.oasis-open.org/committees/relax-ng/
Documents sur RelaxNG Tutorieller/seettimmoc/gorn.pe-oisas.oww/:w/thptthlm001102.3torial-2ax-ng/tu Syntaxe compacte2112002-lmth.1x-ngrelapact/comc/moo.gree/simtt-sisnepoww//ao.whp:tt Livrehttp://books.xmlschemata.org/relaxng/
Outils spcifiques Jinghttp://www.thaiopensource.com/
2.1 Comment valider un document avec Jing ? Jing est le validateur de document XML par rapport aux schmas RelaxNG que nous utilisons pour dfinir nos grammaires de langages. Voici les principales tapes permettant de le mettre en œuvre :
4
– On peut, dans Eclipse, grce au greffon ILP, utiliser le menu contextuel sur un fichier XML, menuILPpuisValidate. Les rsultats apparaissent dans l’onglet console (dans la sous-console intituleJing Output. – Un greffon spcialis en XML procure la possibilit de vrifier si un fichier est bien-form. C’est l’entreValidatedu menu contextuel des fichiers XML. La validation par le greffon ILP vrifie en plus la conformit Ā une grammaire ILP. – en termes de ligne de commande, pour valider un fichier XML par rapport Ā une grammaire RelaxNG, il faut faire (oÙ JING_JAR est le fichier appropri (dans Java/jars/) : 1< fichier >. xml< schema >. rng JING_JAR } java - jar ${
2.2 Travail À raliser – Valider Ā l’aide du greffon quelques fichiers XML (dansGrammars/Samples/). Modifiez un de ces fichiers (de manire rversible bien sÛr) afin de voir comment s’affichent les problmes (balises manquantes, attribut mal orthographi, etc.) – Indiquer au greffon la grammaire ILP1 Ā utiliser par dfaut et valider quelques fichiers XML (utiliser le menu contextuel que procure le greffon sur une grammaire RelaxNG). – Valider un fichier XML Ā partir de la ligne de commande. – Noter (ou mmoriser dans un script ou Makefile) ce que vous avez retenu.
2.3 Comment excuter un programme ILP1 ? Pour excuter un programme ILP1 avec l’interprte, nous vous fournissons une classe assez sommaire appeleEASTFileTest.javadisponible dans le paquetagefr.upmc.ilp.ilp1.eval. Pour excuter l’chantillon des programmes ILP1 du rpertoireGrammars/Samples, il faut cliquer sur le nom de la classe (EASTFileTest.java) avec le bouton droit et slectionner Run aspuisJUnit Test. L’excution de cette classe de test produit une trace dans la fentre du bas oÙ vous pourrez voir le nom de chaque programme excut, le rsultat et les impressions produites ainsi que ce qui tait attendu. Les programmes ILP1 du rpertoireSamplesont tous un nom de la formeu<d>+-1.xml <d>+reprsente une suite de chiffres. Une manire simple de faire excuter un pro-gramme ILP1 consiste donc Ā l’crire dans un fichier ayant un nom de cette forme du rpertoireSampleset de relancer les tests de la classeEASTFileTest.java. Nous passons effectivement par des tests unitaires crits avec l’outil JUnit pour excuter les programmes. Les liens vous permettront de vous documenter sur JUnit (versions 3 et 4) : JUnithttp://www.junit.org/ JUnithttp://junit.sourceforge.net/ Une meilleure description du traitement d’un programme se trouve dans la classe fr.upmc.ilp.ilp1.Process(cette classe contient toutefois les tests d’interprtation (cours 2) et de compilation (cours 3 et 4)). L’ensemble des tests d’ILP1 est dclenchable avec la classefr.upmc.ilp.ilp1.WholeTestSuite. Il est d’ailleurs bon de lire les classes de tests car elles montrent comment synthtiser, lire, plus gnralement traiter des programmes ILP. La classeEASTFileTest.javacontient galement un point d’entre permettant de la considrer comme une application Java Ā part entire. On peut lancer une application Java avec le menu contextuelRun as, puisJava application. Il faut toutefois, avant de faire cela, paramtrer le lanceur d’application avecRun as, puisOpen Run Dialog...afin d’indiquer que l’argument de l’application est le fichier que vous voulez tester indivi-duellement.
5
Pour indiquer le fichier Ā valuer, vous devez le nommer avec un chemin correct, ce qui implique de connaïtre le rpertoire oÙ se lance le programme (par dfaut~/workspace/). Vous pouvez aussi crire${file_prompt}ce qui vous permettra de choisir interactive-ment le fichier Ā traiter. On peut aussi lancer ce test Ā partir de la ligne de commande avec (si l’on est en ~/workspace/ILP) : 1/ bin:Java / jars / jing . jar:Java / jars / junit -4.9 b3 . jar java -cp Java \ 2< fichier >. xmlfr . upmc . ilp . ilp1 . eval . EASTFileTest
2.4 Travail À raliser – Excuter les tests d’ILP1 et comparer les rsultats obtenus avec ceux que vous attendiez en lisant chacun des programmes excuts. – Recopier en le modifiant un peu un des fichiers XML de test d’ILP1 pour le tes-ter avec la classeEASTFileTest.javaen ligne de commande (prendre, par exemple, comme baseu10-1.xml) – Modifier le fichier XML afin de voir ce que produisent les anomalies (XML mal form, invalide, rsultat non attendu, etc.) – Noter (ou mmoriser dans un script) ce que vous avez retenu. – Tester ce mme nouveau programme ILP1 au sein de tous les autres (dans le rpertoireGrammars/Samples) avec les tests JUnit lancs depuis Eclipse. Manquerait-il quelques fichiers ?
3
Programmer en ILP1
Objectif :comprendre toutes les tapes permettant d’crire, de mettre au point et d’excuter un programme ILP1.
Buts – Ècrire un programme ILP1. – Le mettre au point syntaxiquement par validation. – Le mettre au point smantiquement par son excution. Vous pouvez choisir les outils qui vous plaisent mais il est bon de voir ce que savent faire les uns et les autres.
3.1 Èdition avec Eclipse d’un document XML Crer un fichier XML et ouvrez-le avec le menu contextuel avec un diteur de texte ou un diteur structur. Comparer les deux visions, structure ou textuelle.
3.2 Èdition sous Emacs documents XML avec schmas avec rnc-mode Les liens nxml-modehttp://www.thaiopensource.com/nxml-mode/ rnc-modehttp://www.pantor.com/
6
nxml-mode
et
de
3.2.1 Mise en place du mode nxml Pour utiliser nXML sous emacs, placez d’abord les lignes suivants dans votre fichier ~/.emacs(attention, si vous copiez-collez ce qui suit depuis le document PDF vers un diteur de textes, il se peut que vous ayiez Ā convertir les apostrophes en des simples guillemets (une petite barre verticale) et Ā retirer des blancs superflus) : 1load - path( setq 2( append load - path 3’ ("/ Infos / lmd /2011/ master / ue / ilp -2011 oct / ELISP / nxml - mode -20041004/"))) 4 ( load "/ Infos / lmd /2011/ master / ue / ilp -2011 oct / ELISP / nxml - mode -20041004/ rng - auto . el ") 5 6 7( setq auto - mode - alist 8( cons ’(" \\.\\( xml \\| xsl \\| rng \\| xhtml \\)$ " . nxml - mode ) 9auto - mode - alist )) Ceci fait, ds que vous lancerez Emacs sur un fichier de suffixe xml, xsl, rng ou xhtml, ce mode sera automatiquement activ.
3.2.2 Mise en place du mode rnc Pour utiliser rnc-mode sous emacs, placez d’abord les lignes suivants dans votre fichier~/.emacs: 1’rnc - mode( autoload 2"/ Infos / lmd /2011/ master / ue / ilp -2011 oct / ELISP / rnc - mode ") 3auto - mode - alist( setq 4( cons . rnc ’(" \\. rnc $" auto - mode - alist ))- mode ) Ceci fait, ds que vous lancerez Emacs sur un fichier de suffixe rnc, ce mode sera automatiquement activ.
3.2.3 Utilisation des modes Pour les documents XML, ditez ensuite un nouveau fichier avec l’extensionxmlpuis jeter un coup d’œil Ā la liste des liaisons des cls (key bindingsou en raccourci par dfaut^Hm) du mode pour voir les principales commandes. Pour complter, regarder sur le site donn ci-haut dans la partie “Further information about nXML mode”. Le mode nXML vous donne quelques outils pour faciliter l’criture de fichiers XML comme la validation au fur et Ā mesure des documents et la compltion des noms de balise. Pour que la validation fonctionne, il faut associer un schma au fichier en cours d’dition. Pour cela, on va dans le menu XML et on choisit “Set schema” puis “File...” et on slectionne le fichier de grammaire en format rnc. Pour les programmes ILP1, il s’agit du fichiergrammar1.rncdu rpertoireGrammars. Quand la validation est active, un messagenXML-validounXML-invalidapparaït dans la barre d’tat d’emacs en bas de la fentre. Les deux commandes les plus utiles sont Ctrl-enter pour complter le nom d’une balise ou d’un attribut et Ctrl-c Ctrl-f pour gnrer la balise fermante de l’lment englobant ouvert Ā l’endroit oÙ se situe le curseur (en fait, j’utilise plutÔt</qui suffit Ā fermer un lment). Pour les schmas RelaxNG (en syntaxe compacte), il suffit d’diter un fichier avec l’extensionrnc. Le mode rnc est cependant trs limit. Il fait une lgre coloration syn-taxique, introduit les crochets et les accolades lectriques et permet de commenter et dcommenter rapidement des parties de fichier. Faire un “List key bindings” pour en savoir (un peu) plus.
7
3.3 Travail À raliser Ècrire un programme ILP1 qui calcule le discriminant d’une quation du second de-gr tant donns les coefficients a, b, c. Votre programme doit d’abord lier les variables a, b et c aux valeurs choisies pour excuter le calcul. Ensuite, le programme calcule le discriminant et doit retourner l’une des chaïnes suivantes : "discriminant negatif: aucune racine" "discriminant positif: deux racines" "discriminant nul: une seule racine" Votre programme doit bien sÛr tre bien form et valide. Essayez aussi de ne calculer le discriminant qu’au plus une fois. L’valuation de ce programme fait l’objet d’une section ci-aprs.
4
Test JUnit
Objectif
: Ècrire un test selon les conventions de JUnit 4 et d’ILP.
Buts – Comprendre les tests et suites de test en ILP1 – Ècrire un test JUnit4 pour ILP1
Les liens Java JUnit XMLUnit
http://java.sun.com/ http://www.junit.org/ http://xmlunit.sourceforge.net/
Les documents JUnit Test Infectedhttp://junit.sourceforge.net/doc/testinfected/testing.htm JUnit Cookbookhttp://junit.sourceforge.net/doc/coobook/cookbook.htm Fidles Ā la devise du cours « on ne modifie pas le code prcdemment donn », les extensions Ā ILP respecteront toujours les conventions suivantes. Nous vous deman-dons de vous y conformer (notamment pour les examens). – toute extension est effectue au sein d’un nouveau paquetage (gnralement nomm fr.upmc.ilp.ilpItmeNoÙ N est le numro du TME et I le niveau du langage ILP que vous tendez. Pour ce premier TME, ce sera doncilp1tme1. – aucune modification (sauf stipulation contraire explicite) n’est permise dans les sources d’ILP. L’interface enrichiefr.upmc.ilp.ilp1tme1.IASTsequencevous est fournie. 1. upmc . ilp . ilp1tme1 ;package fr 2 3import fr . upmc . ilp . ilp1 . fromxml . ASTException ; 4import fr . upmc . ilp . ilp1 . interfaces . IAST ; 5 6{. upmc . ilp . ilp1 . interfaces . IASTsequence public interface IASTsequence extends fr 7throws ASTException getAllButLastInstructions () IAST [] ; 8} L’extension propose est d’tendre l’ASTsequencepour implanter cette interface enri-chie afin de procurer une mthodegetAllButLastInstructionsutile Ā certains endroits de l’interprte ou du compilateur. Il faut donc crer un paquetage nommfr.upmc.ilp.ilp1tme1 et une telle classe. Pour pouvoir utiliser cette classe, il faut crire un analyseur syn-taxique Ā partir d’ASTParser. Pour tester le tout, il faut une classe de test mettant Ā
8
l’preuve votre nouvelle mthodegetAllButLastInstructionset vrifiant que vous n’avez rien cass de ce qui tait auparavant fait. Cette classe de tests sera nommefr.upmc.ilp.ilp1tme1.ASTsequenceTe Ce sont ces deux classes que vous aurez Ā remettre.
4.1 Travail À raliser – Recenser toutes les classes de test prsentes dans les sources d’ILP1 – Pour chacun des ces tests, dterminer si c’est du JUnit3 ou JUnit4, dterminer ce qui est test, puis lancer le test depuis Eclipse. – Enrichir la classeWholeTestSuitepour incorporer, dans le bon ordre, tou(te)s les (suites de) tests d’ILP1. [LĀ, vous avez le droit de modifier la classe prcite !] – Ècrire les classesASTsequenceetASTsequenceTestet tester le bon fonctionnement du tout. Indice : XMLUnit est bien utile pour comparer des documents XML (pour-quoi ?).
5
Base de tests
Objectif
: Enrichir la base de tests d’ILP.
Buts – Comprendre les suites de test en ILP1 – Enrichir la base des programmes ILP de test
5.1 Travail À raliser – Ajouter quelques programmes ILP1 Ā la base de tests pour le programme calculant le discriminant que vous avez crit plus haut en indiquant les rsultats et/ou impressions attendus. – Tester que l’ensemble ainsi enrichi de programmes continue Ā passerWholeTestSuite.
6
Livraison
Votre livraison consistera en une archive tar gzippe contenant le paquetage (au sens Java)fr.upmc.ilp.ilp1tme1et, au moins, les fichiers suivants (avec les chemins y menant exactement tels que mentionns) : 1fr / upmc / ilp / ilp1tme1 / ASTsequence . java 2fr / upmc / ilp / ilp1tme1 / ASTsequenceTest . java Et, bien sÛr, tous les autres fichiers ncessaires que vous avez pu crire Ā l’exclusion de tous les fichiers djĀ prsents dans ILP. La livraison sera construite par le scriptlivraisonqui vous indiquera ce qu’il a trouv et qui l’archivera lĀ oÙ elle pourra tre rcupre par les correcteurs automatiques. Pour ce faire, vous devrez indiquer, dans le fichier~/ilpgroup.csv, qui compose votre binÔme. Ce fichier aura la structure (prenez garde Ā crire des lignes : une ligne se termine par une fin de ligne !) : 1ilpgroup . csv% cat ~/ 27654321; Franklin ; Aretha 31234567; Hendrix ; Jimi Ce fichier sera automatiquement ramass lors des livraisons. Vous pouvez livrer au-tant de fois que vous le souhaitez jusqu’au mercredi soir 23h59 CET. Seule la dernire livraison sera note. Les rsultats de la notation seront accessibles en fin de semaine.
9
1% / Infos / lmd /2011/ master / ue / ilp -2011 oct / Scripts / livraison
7
Annexes diverses
7.1 Commandes Si vous souhaitez utiliser la ligne de commande, il peut tre utile de dfinir quelques variables d’environnement. – Mettre les archives des outils en Java dans le chemin des classes : Sous bash :
1export ILPDIR =$ HOME / workspace / ILP 2export JING =$ ILPDIR / Java / jars / jing . jar ; 3for arch in $ ILPDIR / Java / jars /*. jar ; do 4;CLASSPATH =$ arch: $ CLASSPATH done 5 6export CLASSPATH Sous tcsh : 1setenv ILPDIR $ HOME / workspace / ILP 2ILPDIR }/ ILP / Java / jars / jing . jar ;setenv JING ${ 3ILPDIR }/ Java / jars /*. jar )foreach arch (${ 4;arch }: ${ CLASSPATH } setenv CLASSPATH ${ end 5
7.2 Initialisation automatique de l’interprte de commandes Les initialisations de variables globales de l’interprte de commandes (shell) que vous venez de faire sont valables uniquement dans l’instance d’interprte de commandes dans lequel vous les avez excutes. Si vous lancez un nouvel interprte de commandes (par exemple, en ouvrant une nouvelle fentre terminal), il faut refaire les oprations pour initiliser les variables de cet interprte (modulo les interprtes dpendants qui reÇoivent les liaisons de variables exportes). Pour viter de refaire ces commandes et plutÔt initialiser automatiquement toutes les instances d’interprte lances, il faut utiliser le fichier d’initialisations.bashrc(.tcshrcsi vous utiliseztcsh). Ce fichier doit se trouver dans votre rpertoire de base (“HOME direc-tory”). Vous pouvez donc y ajouter les lignes prcdentes. Faites cependant attention, il y a probablement djĀ un tel fichier qui y a t plac par dfaut lors de la cration de votre compte. Èditez donc ce fichier plutÔt que d’en crer un autre en l’crasant.
7.3 Chemin de classes explicite en Java Le fait de mettre les archives Java dans le chemin des classes dfini par l’interprte de commandes (shell) fait en sorte que lors de l’excution de la plupart des programmes de la galaxie Java (javac,javaqui vont suivre, ces outils sauront retrouver les. .) , . classes correspondantes pour les excuter. Le problme est que d’autres outils auront aussi besoin de ces classes mais avec d’autres versions. Une bien meilleure solution consiste Ā passer explicitement ce chemin de classes Ā Java lors de son appel avec l’option-cpou-classpath, sous la forme : 1java -cp < MaClasseAExecuterchemin -de - classes > Dans certains cas, les archives sont auto-excutables, ce qui vite de prciser la classe Ā excuter. L’inconvnient de cette approche est de devoir reprciser le chemin des classes Ā chaque appel Ā Java. On peut circonvenir cela en se dfinissant soi-mme
10
une variable pour contenir le chemin des classes et l’utiliser explicitement (comme le fait par exemple le scriptilprun) : 1ILP_CP = < chemin - des - classes - pour - ILP > 2- jar ILP_CP } ${ FICHIER_JAR }java -cp ${ Cela peut paraïtre quivalent Ā l’utilisation du chemin de classes standard (spcifi par la variable (globale) CLASSPATH), mais l’avantage est de pouvoir grer indpendam-ment plusieurs chemins des classes selon le projet Java sur lequel on travaille. Lors-qu’on fait beaucoup de Java, cela permet d’viter les invitables conflits entre les che-mins de classes des diffrents projets. De mme rduire la taille du chemin de classes acclre la recherche des classes par Java.
11