Chaque bug en production coûte cher et chaque erreur évitable fait perdre un temps précieux. Pourtant, il existe une solution simple pour automatiser les bonnes pratiques et garantir un code de qualité : les hooks Git.
Imaginez-les comme des arbitres de football âœ, toujours attentifs Ă la moindre faute... ou plutĂŽt, au moindre code douteux .
Pourquoi les Git hooks sont-ils comme les arbitres de football ?
Parce qu'ils sifflent les fautes, avant mĂȘme que le ballon ne dĂ©passe la ligne! đ„ł
Les hooks Git permettent dâexĂ©cuter des scripts Ă diffĂ©rents moments du workflow Git pour prĂ©venir les erreurs, assurer la cohĂ©rence du code et renforcer la sĂ©curitĂ©.
đč Pre-commit : VĂ©rifie et corrige le code avant quâil ne soit validĂ©.
đč Commit-msg : Applique un formatage strict aux messages de commit.
đč Pre-push : ExĂ©cute des tests et bloque le push si des erreurs sont dĂ©tectĂ©es.
Avec ces hooks, vous pouvez automatiser les vĂ©rifications essentielles et garantir un code propre avant mĂȘme qu'il n'atteigne votre dĂ©pĂŽt distant.
đ° BĂ©nĂ©fices financiers
â
DĂ©tection en amont des erreurs
Un hook pre-commit peut empĂȘcher de committer du code qui ne compile pas ou qui contient des erreurs Ă©videntes.
â
Moins de corrections manuelles
Formatage automatique avec Prettier ou ESLint, suppression des espaces inutiles... un hook pre-commit peut éviter du travail répétitif.
â
Cohérence du code
Un hook commit-msg peut imposer un format standardisĂ© pour les messages de commit, rendant lâhistorique Git plus lisible et exploitable.
â
Amélioration de la sécurité
Les hooks peuvent empĂȘcher les commits accidentels contenant des informations sensibles comme des mots de passe ou clĂ©s API.
â
Optimisation des pipelines CI/CD
Un hook pre-push peut exécuter des tests en local et bloquer un push si le build échoue, réduisant ainsi les exécutions inutiles de pipelines et les coûts associés
đ ïž QualitĂ© du code et fiabilitĂ©
â
EmpĂȘcher les commits de code cassĂ©
Avec un hook pre-commit, vous Ă©vitez dâenregistrer du code non fonctionnel dans lâhistorique Git.
â
Ăviter les erreurs courantes
Un pre-commit peut supprimer automatiquement les console.log avant validation.
â
Appliquer un formatage standard
Un hook commit-msg garantit que tous les messages de commit respectent une convention, comme Conventional Commits.
â
Faciliter la collaboration
Les hooks assurent que tous les dĂ©veloppeurs appliquent les mĂȘmes rĂšgles automatiquement, Ă©vitant les oublis et les erreurs humaines.
đ„ Exemples pratiques
đ Filtrage des console.log
Un hook pre-commit peut détecter et bloquer les commits contenant des console.log, garantissant ainsi un code plus propre en production.
đš Application automatique du formatage du code
Un hook pre-commit peut s'exĂ©cuter un formateur comme Prettier ou ESLint pour corriger lâindentation et lâespacement avant chaque commit.
đ EmpĂȘcher lâexposition accidentelle de secrets
Un hook pre-commit ou pre-push peut scanner le code Ă la recherche de clĂ©s API ou de mots de passe en clair et empĂȘcher leur commit.
đ§ Bloquer un push si le build Ă©choue
Un hook pre-push peut ĂȘtre configurĂ© pour exĂ©cuter des tests ou compiler le projet avant dâautoriser le push. Si le build Ă©choue, le push est bloquĂ©, empĂȘchant ainsi du code cassĂ© dâatteindre le dĂ©pĂŽt distant.
Exemple de script dans un hook pre-push :
#!/bin/sh
echo "Exécution des vérifications pre-push..."
# Nettoyage et reconstruction du projet
dotnet clean
dotnet build
# Exécution des tests
dotnet test
if [ $? -ne 0 ]; then
echo "Les tests ont échoué, push annulé."
exit 1
fi
đș Pour une explication dĂ©taillĂ©e, consultez cette vidĂ©o :
Pour en savoir plus sur ESLint :
https://www.digitalocean.com/community/tutorials/linting-and-formatting-with-eslint-in-vs-code
đ Adoptez les hooks Git dĂšs aujourdâhui !
Les hooks Git sont une solution simple mais puissante pour appliquer les bonnes pratiques, gagner du temps et réduire les coûts tout en améliorant la qualité et la sécurité du code.
En exploitant les hooks de maniÚre efficace, les équipes de développement peuvent maintenir un workflow fluide et optimisé.
Top comments (0)