Cos'è il gate di commit?

Il gate di commit è una funzionalità opzionale in AI Diff Review che rivede automaticamente le tue modifiche al codice prima di committarle. Basandosi sui risultati dell'analisi, può raccomandare di bloccare un commit se rileva problemi ad alto rischio. Questo funge da rete di sicurezza automatizzata, catturando problemi prima che entrino nel tuo repository.

Il gate è progettato per essere intelligente e sfumato—non blocca ogni problema minore, ma si concentra su modifiche veramente problematiche che potrebbero causare vulnerabilità di sicurezza, perdita di dati o interruzioni gravi della funzionalità.

Come funziona il gate di commit

Sistema di punteggio ponderato

Il gate di commit utilizza un sistema di punteggio ponderato sofisticato per valutare la gravità dei risultati. Diversi tipi di problemi contribuiscono con importi diversi al punteggio totale:

  • Preoccupazioni di sicurezza: CRITICO=5, AVVERTENZA=3, INFO=2
  • Problemi critici: CRITICO=4, AVVERTENZA=3, INFO=2
  • Note sulle prestazioni: AVVERTENZA=1.5, INFO=0.5
  • Suggerimenti: AVVERTENZA=1, INFO=0.5
  • Qualità del codice: AVVERTENZA=1, INFO=0.5
  • Raccomandazioni sui test: AVVERTENZA=0.5, INFO=0.25

Questa ponderazione assicura che i problemi di sicurezza e i problemi critici abbiano più impatto sulla decisione rispetto a suggerimenti minori o raccomandazioni di stile.

Livelli di severità

Il gate di commit offre tre livelli di severità che determinano quanto rigoroso è il comportamento di blocco:

Livello INFO

Blocca i commit quando il punteggio ponderato totale raggiunge 4.0 o superiore. Questa è l'impostazione più permissiva, adatta per team che vogliono catturare solo i problemi più gravi.

Livello AVVERTENZA

Blocca i commit quando il punteggio ponderato totale raggiunge 6.0 o superiore. Questo fornisce un approccio equilibrato, catturando problemi significativi mentre permette ai problemi minori di passare.

Livello CRITICO

Blocca i commit quando il punteggio ponderato totale raggiunge 8.0 o superiore, O quando qualsiasi elemento CRITICO viene trovato nelle categorie Preoccupazioni di sicurezza o Problemi critici. Questa è l'impostazione più rigorosa, assicurando che problemi gravi non raggiungano mai il repository.

Condizioni di blocco rigido

Certe condizioni attivano sempre una raccomandazione di blocco, indipendentemente dal punteggio totale:

  • Qualsiasi elemento di severità CRITICO nelle Preoccupazioni di sicurezza
  • Problemi di sicurezza ad alto rischio come:
    • Perdite di segreti o credenziali esposte
    • Vulnerabilità di iniezione SQL
    • Rischi di esecuzione di codice remoto (RCE)
    • Problemi di bypass dell'autenticazione
    • Vulnerabilità di escalation dei privilegi

Queste condizioni di blocco rigido assicurano che vulnerabilità di sicurezza gravi non vengano mai committate accidentalmente, anche se il punteggio complessivo è basso.

Raccomandazioni esplicite dell'IA

Oltre al sistema di punteggio ponderato, il modello di IA può raccomandare esplicitamente di bloccare un commit impostando should_block_commit=true nella sua risposta. Quando ciò accade, il plugin raccomanderà di bloccare il commit e fornirà il ragionamento dell'IA nel campo block_reason.

Questo permette all'IA di prendere decisioni sfumate basate sul contesto che potrebbero non essere catturate dal solo sistema di punteggio. Ad esempio, l'IA potrebbe rilevare un pattern di problemi che, sebbene individualmente minori, collettivamente rappresentano un problema significativo.

Processo decisionale con intervento umano

Il gate di commit non ti impedisce automaticamente di committare—fornisce una raccomandazione e ti dà l'ultima parola. Quando tenti di committare con il gate abilitato, vedrai un dialogo decisionale che mostra:

  • La raccomandazione del gate (BLOCCARE o PROCEDERE)
  • Punteggio totale e soglia
  • Conteggio dei risultati per severità
  • Riepilogo dei risultati chiave
  • Problemi contribuenti principali

Questa trasparenza ti aiuta a capire perché un commit è stato segnalato e prendere una decisione informata. Se scegli di procedere nonostante una raccomandazione BLOCCARE, puoi fornire un motivo che verrà aggiunto al tuo messaggio di commit.

Configurare il gate di commit

Abilitare il gate

Per abilitare il gate di commit, vai su Impostazioni → Strumenti → AI Diff Review e seleziona "Abilita revisione pre-commit". Puoi quindi selezionare il tuo livello di severità del gate preferito.

Scegliere il livello giusto

Il livello di severità giusto dipende dalle esigenze del tuo team:

  • INFO: Buono per team che iniziano appena con la revisione automatizzata o quelli con sviluppatori molto esperti
  • AVVERTENZA: Opzione equilibrata per la maggior parte dei team, catturando problemi significativi senza essere troppo restrittivo
  • CRITICO: Migliore per progetti sensibili alla sicurezza o team che vogliono protezione massima

Consapevolezza dell'ambito del diff

Il gate di commit è consapevole delle impostazioni dell'ambito del diff. Per impostazione predefinita, solo i risultati legati a righe modificate (o all'interno di una piccola finestra di prossimità) contribuiscono al punteggio. Gli elementi INFO globali o non mirati vengono tipicamente ignorati per scopi di gate, assicurando che il gate si concentri su problemi effettivamente introdotti dalle tue modifiche.

Migliori pratiche

Iniziare conservativo

Se sei nuovo ai gate di commit, inizia con il livello INFO e aumenta gradualmente la rigidità man mano che il tuo team si sente a proprio agio con il processo. Questo aiuta ad evitare frustrazione da blocco eccessivamente aggressivo.

Rivedere i commit bloccati

Quando un commit è bloccato, prenditi il tempo per rivedere i risultati. Anche se decidi di procedere, capire perché è stato segnalato ti aiuta a imparare e migliorare la qualità del tuo codice.

Usare l'override ragionevolmente

La capacità di sovrascrivere una raccomandazione di blocco è importante per la flessibilità, ma usala con attenzione. Se sovrascrivi frequentemente i blocchi, considera se il tuo livello di gate è troppo rigoroso o se ci sono pattern nel tuo codice che devono essere affrontati.

Comunicazione del team

Assicurati che il tuo team capisca come funziona il gate di commit e perché certi commit sono bloccati. Questo aiuta a costruire fiducia nel sistema e assicura che tutti siano allineati sugli standard di qualità del codice.

Conclusione

Il gate di commit è uno strumento potente per mantenere la qualità e la sicurezza del codice, ma è più efficace quando configurato appropriatamente per le esigenze del tuo team. Comprendendo come funziona il punteggio ponderato e scegliendo il livello di severità giusto, puoi creare una rete di sicurezza efficace che cattura problemi senza diventare un collo di bottiglia.

Ricorda, il gate è lì per aiutare, non per ostacolare. Usalo come strumento per migliorare la qualità del codice mantenendo la produttività degli sviluppatori. Con la configurazione appropriata e il supporto del team, il gate di commit diventa una parte inestimabile del tuo flusso di lavoro di sviluppo.

Pronto a configurare il tuo gate di commit? Installa AI Diff Review e inizia a proteggere la tua codebase oggi.