Skip to content

Modèle de départ pour exercices d'introduction au makefile et aux bibliothèques logicielle ainsi qu'aux branches et aux «Pull Requests».

License

Notifications You must be signed in to change notification settings

Amu-DevCommeLesPros-2021/DevCommeLesPros-2021-Exo2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevCommeLesPros-2021-Exo2

Modèle de départ pour exercices d'introduction au makefile et aux bibliothèques logicielle ainsi qu'aux branches et aux «Pull Requests».

Préparation

Ces intructions présupposent que vous avez déjà suivi les instructions du zérotième exercice pour la création d'un compte GitHub et l'installation des programmes et extensions nécéssaires.

  1. Créez votre dépôt sur github.com en utilisant ce dépôt-ci comme modèle.
  2. Ajoutez le professeur comme collaborateur à votre dépôt.
  3. Clonez votre dépôt vers votre espace de travail local.
  4. Lancez Visual Studio Code.
    • À l'invite de commandes :
      • $ cd [nom de votre dépôt]
      • $ code .
  5. Compilez une première fois le programme.
    • Menu: View > Command Palette > Tasks: Run Build Task
  6. Vous devriez observer dans l'onglet TERMINAL le résultat suivant. C'est normal car le fichier makefile manque des cibles pour produire le bon programme.
    • Sous Linux :
      • collect2: error: ld returned 1 exit status
    • Sous MacOS :
      • clang: error: linker command failed with exit code 1

Objectif

Dans ce dépôt se trouvent des fichiers de code qui composent une bibliothèque statique libchiffrage.a. Cette bibliothèque contient des fonctions servant à chiffer et à déchiffrer des chaînes de charatères suivant des méthodes diverses (bien qu'anciennes et peu sécuritaires !). Il se trouve aussi un programme de test (test/main.c) qui, comme dans l'exercice précédent, confirme que les fonctions sont bien implémentées.

  1. Réparez le fichier makefile pour faire en sorte que la bibliothèque libchiffrage.a contienne tous les fichiers objets nécéssaires (fussent-ils eux-même temporairement incomplets) et que le programme build/test puisse être correctment lié et lancé.
  2. Implémentez correctement toutes les fonctions de chiffrages pour que le programme build/test affiche que tous les tests passent avec succès et renvoie 0 à l'invite de commande.

Instructions de travail

  1. Créez une nouvelle branche qui servira de branche de travail pour réparer une première suite de tests.
    • $ git branch [nom de la branche]
    • $ git checkout [nom de la branche]
    • Exemple: $ git branch reparation-ROT13 suivi de $ git checkout reparation-ROT13.
  2. Au fur et à mesure de vos modifications au code, intégrez-les au dépôt local avec une description des modifications apportées.
    • $ git add [fichiers]
    • $ git commit -m "Description des modifications apportées"
    • Exemple: $ git add lib/ROT13.c suivi de $ git commit -m "Passe les tests de chiffrage sans ponctuations."
  3. Périodiquement, publiez votre branche de votre dépôt local à votre dépôt sur GitHub.
    • $ git push origin [nom de la branche]
    • Exemple: $ git push origin reparation-ROT13.
  4. Lorsqu'une suite de tests est réparée, ouvrez un "Pull Request" sur GitHub pour fusionner la branche de travail à la branche master.
  5. Fusionnez la branche de travail sur GitHub.
  6. Revenez sur la branche master de votre dépôt local et synchronisez-la avec la branche master de votre dépôt sur GitHub.
    • $ git checkout master
    • $ git pull origin master
  7. Répétez ces étapes jusqu'à ce que tous les tests passent.

Avec la commande $ git log --all --decorate --oneline --graph, l'historique de votre travail devrait au fil du temps ressembler à ceci (lire du bas vers le haut) :

*   cac0381 (origin/master, origin/HEAD, master) Merge pull request #3 from [compte]/reparation-Cesar
|\
| * dd15e7c Passe tous les tests de déchiffrage aussi.
| * 329025a Passe tous les tests de chiffrage.
| * 6247b82 Passe tous les tests sans ponctuation.
| * 3829cc5 Oups ! Maintenant passe vraiment tous les tests avec lettres minuscules.
| * 49261da Passe les tests de chiffrage avec les lettres minuscules.
| * 4569e14 Passe les test avec chaînes longues mais j'ai cassé les tests avec chaînes courtes. J'y reviendrai.
| * 4297b0e Passe les tests avec chaînes courtes.
|/
*   34678ab Merge pull request #2 from [compte]/reparation-ROT13
|\
| * 6c93b12 Passe tous les tests de déchiffrage aussi. Facile ! En fait, c'est la même chose dans les deux sens.
| * b658f2b Passe tous les tests de chiffrage.
| * 5d8c89b Passe les tests de chiffrage sans ponctuations.
|/
*   34678ab Merge pull request #1 from [compte]/reparation-makefile
|\
| * 5d8c89b Peut compiler, lancer et déboguer le programme test.
|/
* 68cb404 Initial commit

Ce qui est permis

  • De modifier le fichier makefile.
  • De modifier les fichiers lib/ROT13.c, lib/Cesar.c et lib/Vigenere.c afin d'implémenter les fonctions qu'ils contiennent.

Ce qui ne l'est pas

  • De modifier le fichier test/main.c.
  • De modifier les fichiers d'en-tête lib/chiffrage.h, lib/ROT13.h, lib/Cesar.h, lib/Vigenere.h et lib/chiffrage.h.
  • D'utiliser goto et d'avoir des «boucles infinies» du style while(1). Pourquoi ? La réponse est ici.

Évaluation

L'évaluation portera sur :

  1. Le suivi des instructions de travail.
  2. Le nombre de tests réussis.
  3. La qualité des modifications apportées.

Attention ! Seul le code de la branche master de votre dépôt sur GitHub compte !

Questions-Réponses

«Puis-je utiliser l'en-tête <X.h> dans mon code ?»

Oui. Vous avez droit à toutes les en-têtes C standard pour cet exercice et tous les exercices suivants. Explorez particulièrement <ctype.h> et <string.h>.

«J'ai un problème !»

Outre les indications données dans le premier exercice à ce sujet, le site https://cryptii.com peut vous aider à comprendre et tester différentes méthodes de (dé)chiffrage sur un texte en clair.

About

Modèle de départ pour exercices d'introduction au makefile et aux bibliothèques logicielle ainsi qu'aux branches et aux «Pull Requests».

Topics

Resources

License

Stars

Watchers

Forks