Utilisation des hooks de pre-commit¶
Les hooks de pre-commit sont des scripts qui s'exécutent automatiquement avant chaque commit pour vérifier la qualité du code et de la documentation. Ils permettent de détecter et corriger des problèmes potentiels avant qu'ils ne soient commités.
Installation et configuration¶
Prérequis¶
- Avoir uv installé sur votre machine
Installation des hooks¶
Pour installer les hooks de pre-commit, exécutez la commande suivante à la racine du projet :
Cette commande installe les hooks dans le répertoire .git/hooks/ de votre dépôt.
Utilisation de uv¶
uv est un outil moderne pour gérer les environnements Python et les dépendances. Il est utilisé dans ce projet pour exécuter les commandes de développement.
Commandes courantes¶
-
Installer les dépendances :
-
Exécuter une commande dans l'environnement isolé :
-
Exécuter tous les hooks manuellement :
Hooks disponibles¶
Voici la liste des hooks configurés dans ce projet :
1. Robocop (Robot Framework linter)¶
- Description : Vérifie la qualité du code Robot Framework
- Fonctionnalité : Analyse les fichiers
.robotpour détecter les problèmes de style et de syntaxe
2. Robocop Format (Robot Framework formatter)¶
- Description : Formate automatiquement le code Robot Framework
- Fonctionnalité : Applique un style de code cohérent à tous les fichiers Robot Framework
3. Ruff Check¶
- Description : Linter Python rapide
- Fonctionnalité : Vérifie la qualité du code Python et corrige automatiquement certains problèmes
4. Ruff Format¶
- Description : Formateur Python
- Fonctionnalité : Formate le code Python selon les conventions PEP 8
5. Ty Check¶
- Description : Vérification de type Python
- Fonctionnalité : Vérifie la cohérence des types dans le code Python
6. Build Documentation¶
- Description : Construction de la documentation
- Fonctionnalité : Vérifie que la documentation peut être construite sans erreurs
- Commande :
uv run mkdocs build --strict --verbose - Options :
--strict: Fait échouer le commit si des avertissements sont présents--verbose: Affiche des détails sur la construction
7. Prevent commits to main¶
- Description : Empêche les commits directs sur la branche main
- Fonctionnalité : Protège la branche main en exigeant des pull requests
8. Check YAML¶
- Description : Vérification de la syntaxe YAML
- Fonctionnalité : Vérifie que les fichiers YAML sont bien formés
9. End of File Fixer¶
- Description : Ajoute des sauts de ligne à la fin des fichiers
- Fonctionnalité : Assure que tous les fichiers se terminent par un saut de ligne
10. Check Added Large Files¶
- Description : Vérifie les fichiers volumineux ajoutés
- Fonctionnalité : Empêche l'ajout de fichiers trop volumineux au dépôt
11. Check Merge Conflict¶
- Description : Vérifie les conflits de fusion
- Fonctionnalité : Détecte les marqueurs de conflit de fusion dans les fichiers
12. CSpell¶
- Description : Vérification de l'orthographe
- Fonctionnalité : Vérifie l'orthographe dans les fichiers de code et de documentation
13. Conventional Commits¶
- Description : Vérification des messages de commit
- Fonctionnalité : Assure que les messages de commit suivent la convention Conventional Commits
14. Commitizen¶
- Description : Assistant pour les messages de commit
- Fonctionnalité : Aide à créer des messages de commit conformes aux conventions
15. Biome Check¶
- Description : Vérification du code JavaScript/TypeScript
- Fonctionnalité : Vérifie la qualité du code JavaScript et TypeScript
Exécution manuelle des hooks¶
Pour exécuter tous les hooks manuellement sur tous les fichiers :
Pour exécuter un hook spécifique :
Par exemple, pour exécuter uniquement le hook de construction de la documentation :
Désactivation temporaire des hooks¶
Si vous devez désactiver temporairement les hooks pour un commit spécifique, utilisez l'option --no-verify :
⚠️ Attention : Utilisez cette option avec parcimonie, uniquement lorsque cela est absolument nécessaire.
Bonnes pratiques¶
-
Exécutez les hooks régulièrement : Exécutez
uv run prekavant de push vos modifications pour éviter les surprises. -
Corrigez les problèmes immédiatement : Plus vous attendez pour corriger les problèmes détectés par les hooks, plus il sera difficile de les résoudre.
-
Utilisez les outils de formatage : Les hooks comme
robocop-formatetruff-formatpeuvent corriger automatiquement certains problèmes. Utilisez-les régulièrement. -
Respectez les conventions : Suivez les conventions de nommage et de style définies dans les autres documents de la section Conventions.
-
Documentation : Si vous modifiez la documentation, assurez-vous qu'elle peut être construite sans erreurs avant de commiter.
Dépannage¶
Les hooks prennent trop de temps¶
Si les hooks prennent trop de temps à s'exécuter, vous pouvez :
-
Exécuter les hooks manuellement pour identifier les problèmes :
-
Désactiver temporairement certains hooks dans le fichier
.pre-commit-config.yaml -
Utiliser
--no-verifypour un commit spécifique (à utiliser avec parcimonie)
Les hooks échouent sans raison apparente¶
-
Vérifiez que toutes les dépendances sont installées :
-
Supprimez et réinstallez les hooks :
-
Vérifiez les logs d'erreur pour identifier le problème spécifique
Problèmes avec uv¶
Si vous rencontrez des problèmes avec uv, assurez-vous d'avoir la dernière version :
Et réinstallez les dépendances :