La qualità e la sicurezza del codice non si giocano più solo al momento della scrittura, ma soprattutto nel momento della pull request (PR). GitHub integra qui una catena di strumenti — Copilot code review, Copilot Autofix e Dependabot — che accelerano il feedback ma non sostituiscono il giudizio umano. Capire dove finisce l’automazione e dove inizia la responsabilità del revisore è esattamente ciò che la certificazione verifica.
Copilot code review e riepiloghi delle PR
Copilot code review aggiunge Copilot come reviewer della PR, accanto ai colleghi umani. Puoi richiederlo in due modalità:
- Review on demand: selezioni Copilot dalla lista dei reviewer di una singola PR.
- Automatic review: tramite una repository rule (o le impostazioni di organizzazione/enterprise) Copilot viene assegnato automaticamente a ogni PR aperta.
Copilot analizza il diff e pubblica commenti puntuali riga per riga, spesso con suggested changes già pronte da committare con un click. Copre bug logici, edge case, naming, possibili problemi di performance e stile. Nelle repository con GitHub Advanced Security, può includere feedback orientato alla sicurezza.
Distinto dai commenti è il PR summary: un riepilogo in linguaggio naturale generato da Copilot che descrive cosa cambia la PR e in quali file, utile per orientare il revisore umano prima di leggere il diff.
Punto chiave d’esame: Copilot code review è un assistente, non un gate di merge. Un suo commento non blocca il merge di per sé, e la sua approvazione non conta come la required review di un umano se le branch protection rules la impongono. Va sempre affiancato alla revisione umana.
Copilot Autofix per gli alert di code scanning
Copilot Autofix è una funzionalità di code scanning (parte di GitHub Advanced Security) che lavora sugli alert generati da CodeQL e da alcuni strumenti di terze parti. Quando CodeQL individua una vulnerabilità (ad esempio una SQL injection o un path traversal), Autofix genera automaticamente:
- una spiegazione in linguaggio naturale del problema e del suo impatto;
- una proposta di fix sotto forma di diff, direttamente nella PR o nell’alert.
Il valore è nel ridurre drasticamente il tempo di remediation, specialmente sugli alert introdotti proprio dalla PR in corso.
Il fix è una proposta, non un’applicazione
Questo è il concetto più insidioso. Autofix suggerisce la correzione ma non la applica né la mergia da solo: lo sviluppatore deve rivedere, eventualmente modificare e committare il fix (tramite “Commit suggestion” o creando un branch dedicato). Serve sempre un’approvazione umana. Autofix accelera la security review, ma non è una garanzia che il codice sia sicuro: può proporre correzioni parziali o inadatte al contesto, e non copre le vulnerabilità che CodeQL non ha rilevato.
Dependabot per le dipendenze vulnerabili
Mentre Autofix si occupa del codice che scrivi, Dependabot si occupa del codice che importi, cioè le dipendenze. Ha tre funzioni da tenere distinte:
- Dependabot alerts: notificano quando una dipendenza usata dal progetto è associata a un advisory nel GitHub Advisory Database.
- Dependabot security updates: aprono automaticamente una PR che aggiorna la dipendenza vulnerabile a una versione sicura.
- Dependabot version updates: mantengono aggiornate le dipendenze in base a una schedule definita in
dependabot.yml, a prescindere dalle vulnerabilità.
Anche qui la PR va revisionata e mergiata da un umano, tipicamente dopo che la CI ha confermato che i test passano.
Come si combinano
Nel flusso di una PR ben strutturata convivono: Copilot code review (qualità e logica del diff), Copilot Autofix (rimedio agli alert CodeQL sul codice nuovo) e Dependabot (igiene delle dipendenze). Tutti e tre producono proposte che entrano nel normale processo di review, dove branch protection rules e required reviewers restano il vero controllo di merge.
Trappole tipiche d’esame
- Scenario: CodeQL segnala una vulnerabilità e vuoi correggerla rapidamente. → Usa Copilot Autofix, ma ricorda che genera solo una proposta di fix da rivedere e committare manualmente: non modifica il codice da solo.
- Scenario: “Autofix ha risolto tutti gli alert, quindi il codice è sicuro.” → Falso. Autofix assiste la security review ma non è una garanzia di sicurezza; copre solo gli alert rilevati e va comunque validato da un umano.
- Scenario: una dipendenza npm/NuGet ha una CVE nota e vuoi aggiornarla automaticamente. → È compito di Dependabot security updates, non di Copilot Autofix (che agisce sul tuo codice via CodeQL).
- Scenario: vuoi che ogni PR riceva feedback automatico di qualità sul diff. → Configura Copilot code review automatica tramite repository rule; resta comunque necessaria la required human review per il merge.
- Scenario: distinguere i commenti riga-per-riga dal riepilogo. → I suggested changes correggono singole righe; il PR summary descrive in linguaggio naturale l’insieme delle modifiche.