Modèle de départ pour exercices d'introduction au makefile
et aux bibliothèques logicielle ainsi qu'aux branches et aux «Pull Requests».
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.
- Créez votre dépôt sur github.com en utilisant ce dépôt-ci comme modèle.
- Suivez ces instructions.
- Choisissez l'option
Private
à l'étape 5.
- Ajoutez le professeur comme collaborateur à votre dépôt.
- Suivez ces instructions.
- Nom d'utilisateur à ajouter:
thierryseegers
.
- Nom d'utilisateur à ajouter:
- Suivez ces instructions.
- Clonez votre dépôt vers votre espace de travail local.
- Suivez ces instructions.
- Attention à ne pas cloner https://github.com/Amu-DevCommeLesPros-2021/DevCommeLesPros-2021-Exo2 mais bien votre dépôt nouvellement créé.
- Lancez Visual Studio Code.
- À l'invite de commandes :
$ cd [nom de votre dépôt]
$ code .
- À l'invite de commandes :
- Compilez une première fois le programme.
- Menu:
View
>Command Palette
>Tasks: Run Build Task
- Menu:
- Vous devriez observer dans l'onglet
TERMINAL
le résultat suivant. C'est normal car le fichiermakefile
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
- Sous Linux :
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.
- Réparez le fichier
makefile
pour faire en sorte que la bibliothèquelibchiffrage.a
contienne tous les fichiers objets nécéssaires (fussent-ils eux-même temporairement incomplets) et que le programmebuild/test
puisse être correctment lié et lancé. - Implémentez correctement toutes les fonctions de chiffrages pour que le programme
build/test
affiche que tous les tests passent avec succès et renvoie0
à l'invite de commande.
- 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
.
- 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."
- 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
.
- Lorsqu'une suite de tests est réparée, ouvrez un "Pull Request" sur GitHub pour fusionner la branche de travail à la branche
master
.- Suivez ces instructions.
- Fusionnez la branche de travail sur GitHub.
- Suivez ces instructions.
- Choisissez
Create a merge commit
à l'étape 3.
- Revenez sur la branche
master
de votre dépôt local et synchronisez-la avec la branchemaster
de votre dépôt sur GitHub.$ git checkout master
$ git pull origin master
- 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
- De modifier le fichier
makefile
. - De modifier les fichiers
lib/ROT13.c
,lib/Cesar.c
etlib/Vigenere.c
afin d'implémenter les fonctions qu'ils contiennent.
- 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
etlib/chiffrage.h
. - D'utiliser
goto
et d'avoir des «boucles infinies» du stylewhile(1)
. Pourquoi ? La réponse est ici.
L'évaluation portera sur :
- Le suivi des instructions de travail.
- Le nombre de tests réussis.
- La qualité des modifications apportées.
Attention ! Seul le code de la branche master
de votre dépôt sur GitHub compte !
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>
.
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.