Qu'est-ce que la porte de commit ?

La porte de commit est une fonctionnalité optionnelle dans AI Diff Review qui examine automatiquement vos modifications de code avant de les committer. Basée sur les résultats de l'analyse, elle peut recommander de bloquer un commit si elle détecte des problèmes à haut risque. Cela agit comme un filet de sécurité automatisé, capturant les problèmes avant qu'ils n'entrent dans votre dépôt.

La porte est conçue pour être intelligente et nuancée—elle ne bloque pas chaque problème mineur, mais se concentre sur les modifications vraiment problématiques qui pourraient causer des vulnérabilités de sécurité, des pertes de données ou des ruptures de fonctionnalité graves.

Comment fonctionne la porte de commit

Système de notation pondérée

La porte de commit utilise un système de notation pondérée sophistiqué pour évaluer la gravité des résultats. Différents types de problèmes contribuent à des montants différents au score total :

  • Préoccupations de sécurité : CRITIQUE=5, AVERTISSEMENT=3, INFO=2
  • Problèmes critiques : CRITIQUE=4, AVERTISSEMENT=3, INFO=2
  • Notes de performance : AVERTISSEMENT=1.5, INFO=0.5
  • Suggestions : AVERTISSEMENT=1, INFO=0.5
  • Qualité du code : AVERTISSEMENT=1, INFO=0.5
  • Recommandations de test : AVERTISSEMENT=0.5, INFO=0.25

Cette pondération garantit que les problèmes de sécurité et les problèmes critiques ont plus d'impact sur la décision que les suggestions mineures ou les recommandations de style.

Niveaux de sévérité

La porte de commit offre trois niveaux de sévérité qui déterminent la rigueur du comportement de blocage :

Niveau INFO

Bloque les commits lorsque le score pondéré total atteint 4.0 ou plus. C'est le paramètre le plus indulgent, adapté aux équipes qui veulent capturer uniquement les problèmes les plus graves.

Niveau AVERTISSEMENT

Bloque les commits lorsque le score pondéré total atteint 6.0 ou plus. Cela fournit une approche équilibrée, capturant les problèmes significatifs tout en permettant aux problèmes mineurs de passer.

Niveau CRITIQUE

Bloque les commits lorsque le score pondéré total atteint 8.0 ou plus, OU lorsqu'un élément CRITIQUE est trouvé dans les catégories Préoccupations de sécurité ou Problèmes critiques. C'est le paramètre le plus strict, garantissant que les problèmes graves n'atteignent jamais le dépôt.

Conditions de blocage dur

Certaines conditions déclenchent toujours une recommandation de blocage, indépendamment du score total :

  • Tout élément de sévérité CRITIQUE dans les Préoccupations de sécurité
  • Problèmes de sécurité à haut risque tels que :
    • Fuites de secrets ou identifiants exposés
    • Vulnérabilités d'injection SQL
    • Risques d'exécution de code à distance (RCE)
    • Problèmes de contournement d'authentification
    • Vulnérabilités d'élévation de privilèges

Ces conditions de blocage dur garantissent que les vulnérabilités de sécurité graves ne sont jamais accidentellement commitées, même si le score global est faible.

Recommandations explicites de l'IA

En plus du système de notation pondérée, le modèle d'IA peut explicitement recommander de bloquer un commit en définissant should_block_commit=true dans sa réponse. Lorsque cela se produit, le plugin recommandera de bloquer le commit et fournira le raisonnement de l'IA dans le champ block_reason.

Cela permet à l'IA de prendre des décisions nuancées basées sur le contexte qui pourraient ne pas être capturées par le système de notation seul. Par exemple, l'IA pourrait détecter un modèle de problèmes qui, bien qu'individuellement mineurs, représentent collectivement un problème significatif.

Prise de décision avec intervention humaine

La porte de commit ne vous empêche pas automatiquement de committer—elle fournit une recommandation et vous donne le dernier mot. Lorsque vous tentez de committer avec la porte activée, vous verrez une boîte de dialogue de décision qui affiche :

  • La recommandation de la porte (BLOQUER ou PROCÉDER)
  • Score total et seuil
  • Nombre de résultats par sévérité
  • Résumé des résultats clés
  • Problèmes contributifs principaux

Cette transparence vous aide à comprendre pourquoi un commit a été signalé et à prendre une décision éclairée. Si vous choisissez de procéder malgré une recommandation BLOQUER, vous pouvez fournir une raison qui sera ajoutée à votre message de commit.

Configurer la porte de commit

Activer la porte

Pour activer la porte de commit, allez dans Paramètres → Outils → AI Diff Review et cochez "Activer la révision pré-commit". Vous pouvez ensuite sélectionner votre niveau de sévérité de porte préféré.

Choisir le bon niveau

Le bon niveau de sévérité dépend des besoins de votre équipe :

  • INFO : Bon pour les équipes qui commencent tout juste avec la révision automatisée ou celles avec des développeurs très expérimentés
  • AVERTISSEMENT : Option équilibrée pour la plupart des équipes, capturant les problèmes significatifs sans être trop restrictif
  • CRITIQUE : Meilleur pour les projets sensibles à la sécurité ou les équipes qui veulent une protection maximale

Conscience de la portée du diff

La porte de commit est consciente des paramètres de portée du diff. Par défaut, seuls les résultats liés aux lignes modifiées (ou dans une petite fenêtre de proximité) contribuent à la notation. Les éléments INFO globaux ou non ciblés sont généralement ignorés à des fins de portage, garantissant que la porte se concentre sur les problèmes réellement introduits par vos modifications.

Meilleures pratiques

Commencer conservateur

Si vous êtes nouveau dans les portes de commit, commencez avec le niveau INFO et augmentez progressivement la rigueur à mesure que votre équipe devient à l'aise avec le processus. Cela aide à éviter la frustration d'un blocage trop agressif.

Réviser les commits bloqués

Lorsqu'un commit est bloqué, prenez le temps de réviser les résultats. Même si vous décidez de procéder, comprendre pourquoi il a été signalé vous aide à apprendre et à améliorer la qualité de votre code.

Utiliser le contournement raisonnablement

La capacité de contourner une recommandation de blocage est importante pour la flexibilité, mais utilisez-la avec réflexion. Si vous contournez fréquemment les blocages, considérez si votre niveau de porte est trop strict ou s'il y a des modèles dans votre code qui doivent être traités.

Communication d'équipe

Assurez-vous que votre équipe comprend comment fonctionne la porte de commit et pourquoi certains commits sont bloqués. Cela aide à construire la confiance dans le système et garantit que tout le monde est aligné sur les normes de qualité du code.

Conclusion

La porte de commit est un outil puissant pour maintenir la qualité et la sécurité du code, mais elle est plus efficace lorsqu'elle est configurée de manière appropriée pour les besoins de votre équipe. En comprenant comment fonctionne la notation pondérée et en choisissant le bon niveau de sévérité, vous pouvez créer un filet de sécurité efficace qui capture les problèmes sans devenir un goulot d'étranglement.

N'oubliez pas, la porte est là pour aider, pas pour entraver. Utilisez-la comme un outil pour améliorer la qualité du code tout en maintenant la productivité des développeurs. Avec une configuration appropriée et l'adhésion de l'équipe, la porte de commit devient une partie inestimable de votre flux de travail de développement.

Prêt à configurer votre porte de commit ? Installez AI Diff Review et commencez à protéger votre base de code dès aujourd'hui.