Husky et dotnet

 

Husky est un outil qui permet de gérer des hooks Git, c’est-à-dire des scripts qui s’exécutent automatiquement à certains moments du cycle de vie Git (comme pre-commit, post-checkout, etc.). Dans le contexte des projets .NET, Husky présente plusieurs intérêts :

Husky

1. Automatisation des tâches répétitives

Husky permet d’exécuter automatiquement des commandes importantes à chaque changement de branche, commit, ou push. Par exemple :

  • Restaurer les outils locaux avec dotnet tool restore après un git checkout.
  • Exécuter des tests unitaires avant un commit pour s’assurer que le code est stable.
  • Analyser le code avec des outils comme dotnet format ou en activant les analyseurs (RunAnalyzers=true) pendant la compilation ou les tests.

Cela garantit que les développeurs suivent les bonnes pratiques sans effort manuel.

2. Assurer la cohérence de l’environnement

En utilisant un hook comme post-checkout pour exécuter dotnet tool restore, Husky garantit que tous les outils locaux définis dans le fichier dotnet-tools.json sont installés et à jour. Cela évite les problèmes liés à des versions d’outils différentes entre les développeurs.

3. Faciliter la collaboration

Les hooks configurés avec Husky sont partagés avec le projet (via le dépôt Git). Ainsi, tous les membres de l’équipe bénéficient des mêmes automatisations, ce qui réduit les erreurs humaines et améliore la productivité.

4. Améliorer la qualité du code

Husky peut être utilisé pour exécuter des outils de qualité de code (comme des linters ou des analyseurs statiques) avant un commit ou un push. Cela empêche l’intégration de code non conforme dans le dépôt.

Pour exécuter des tests avec Husky dans un projet .NET, vous pouvez configurer un hook Git (comme pre-commit ou pre-push) pour lancer les tests automatiquement avant de permettre un commit ou un push. Voici les étapes détaillées :

Exécuter des tests avec Husky

1. Installer Husky comme outil local

Si ce n’est pas encore fait, installez Husky comme outil local dans votre projet :

dotnet new tool-manifest
dotnet tool install Husky --local

2. Configurer Husky

Initialisez Husky pour activer les hooks Git :

dotnet husky install

3. Ajouter un hook pour exécuter des tests rapides

Ajoutez un hook pre-commit pour exécuter des tests rapides (par exemple uniquement les tests unitaires) avant un commit :

dotnet husky add pre-commit -c "dotnet test"

Ce que fait ce hook :

  • Avant chaque commit, Husky exécute la commande dotnet test ciblée sur les tests unitaires.
  • Si les tests échouent, le commit est annulé, empêchant ainsi l’intégration de code non valide.

Exemple de configuration complète

Ajouter un hook pre-push pour exécuter la suite de tests complète avant un push :

dotnet husky add pre-push -c "dotnet test"

Ajouter un hook pre-commit pour exécuter les tests avant un commit :

dotnet husky add pre-commit -c "dotnet test --no-build"

Note : Utiliser --no-build dans le hook pre-commit peut accélérer les tests si le projet est déjà compilé.

Personnalisation des tests

Vous pouvez personnaliser la commande dotnet test pour exécuter des tests spécifiques ou ajouter des options :

  • Exécuter uniquement des tests d’un projet particulier :
    dotnet husky add pre-commit -c "dotnet test ./MyProject.Tests/MyProject.Tests.csproj"
    
  • Exécuter des tests avec un filtre (par exemple, une catégorie spécifique) :
    dotnet husky add pre-commit -c "dotnet test --filter Category=Unit"
    
  • Exécuter uniquement les tests d’architecture (par exemple marqués Category=Architecture) avant un push :
    dotnet husky add pre-push -c "dotnet test --filter Category=Architecture"