Correzione automatica di Copilot per l'analisi del codice (Anteprima)

Correzione automatica di Copilot è una funzionalità basata sull'intelligenza artificiale di GitHub Advanced Security per Azure DevOps che genera suggerimenti di correzione per gli avvisi di analisi del codice. Quando CodeQL identifica una vulnerabilità o un errore di codifica, è possibile generare una correzione per l'avviso direttamente dalla scheda Sicurezza avanzata. Copilot prefisso automatico usa l'agente di codifica Copilot per produrre la correzione e aprire una richiesta pull con la modifica proposta, in modo da poter esaminare, modificare e unire il codice tramite il normale flusso di lavoro delle richieste pull.

Annotazioni

Questa funzionalità è in anteprima pubblica limitata. Microsoft attualmente non accetta altri utenti per l'anteprima.

La funzionalità potrebbe cambiare o essere rimossa senza preavviso. Le funzionalità di anteprima non hanno un contratto di servizio e un supporto limitato.

GitHub Advanced Security per Azure DevOps funziona con Azure Repos. Per utilizzare GitHub Advanced Security con i repository di GitHub, vedere GitHub Advanced Security.

Prerequisiti

Categoria Requirements
Autorizzazioni - Per visualizzare un riepilogo di tutti gli avvisi per un repository: collaboratore autorizzazioni per il repository.
- Per ignorare gli avvisi in Sicurezza avanzata: autorizzazioni amministratore di progetto.
- Per gestire le autorizzazioni in Sicurezza avanzata: membro del gruppo Amministratori della raccolta di progetti o con l'autorizzazione Sicurezza avanzata: gestire le impostazioni impostata su Consenti.

Per altre informazioni sulle autorizzazioni di sicurezza avanzata, vedere Gestire le autorizzazioni di sicurezza avanzata.

  • Analisi del codice configurata per il tuo repository, utilizzando la configurazione predefinita o quella avanzata.
  • Almeno un avviso di analisi del codice CodeQL.

Informazioni sulla correzione automatica di Copilot

Copilot Autofix combina la potenza di analisi di CodeQL con il modello linguistico di grandi dimensioni che alimenta l'agente di programmazione Copilot. Quando generi una correzione per un avviso supportato di code scanning, Copilot Autofix analizza l'avviso e il codice circostante e quindi apre una pull request che contiene:

  • Modifica del codice suggerita che risolve la vulnerabilità sottostante.
  • Descrizione dell'avviso da correggere, inclusi l'ID avviso, la gravità e un riepilogo della modifica.

Poiché la correzione suggerita considera il contesto più ampio della codebase, la modifica può estendersi più della singola riga in cui è stato generato l'avviso e può includere modifiche ad altri file, se necessario.

Annotazioni

I dati gestiti da Copilot Autofix non vengono utilizzati per addestrare modelli linguistici di grandi dimensioni (LLM).

Importante

I suggerimenti di Autofix di Copilot sono generati da un modello di intelligenza artificiale e non sono garantiti come corretti, completi o sicuri. Esaminare sempre attentamente la richiesta pull, verificare che venga risolto l'avviso senza introdurre nuovi problemi e testare le modifiche prima di unirle.

Lingue disponibili

Copilot Autofix supporta gli stessi linguaggi che CodeQL analizza per la scansione del codice, tra cui C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby e Swift. Per l'elenco corrente dei linguaggi supportati da CodeQL, vedere Supporto di linguaggio e query.

Billing

Copilot Autofix è incluso nella tua licenza GitHub Advanced Security for Azure DevOps. La generazione di una correzione usa i crediti di intelligenza artificiale dal contatore di fatturazione Azure dell'organizzazione.

Ogni generazione di correzione utilizza token, che includono token di input per il contesto di codice inviato al modello, token di output per la modifica suggerita e token memorizzati nella cache che riutilizzano il contesto esistente.

Per semplificare la fatturazione, questi token vengono convertiti in un'unità standard denominata credito di intelligenza artificiale GitHub, dove 1 credito è uguale a $0,01 USD. Gli addebiti vengono fatturati alla sottoscrizione Azure collegata all'organizzazione Azure DevOps e vengono visualizzati come contatori separati in Gestione costi di Azure.

Il costo di ogni correzione varia in base alle dimensioni del contesto del codice circostante e alla complessità della modifica.

Per monitorare gli addebiti giornalieri, vai a Subscription>Cost Management>Cost analysis nel portale di Azure.

Abilita l'autocorrezione di Copilot

Puoi abilitare Copilot Autofix a livello di organizzazione, di progetto o di repository. Quando si abilita Autofix a un livello più ampio, l'impostazione si applica a tutti i repository all'interno di tale ambito. Scegliere dove configurare Autofix in base ai repository a cui si desidera applicare l'impostazione:

Scope Dove configurare Autofix
Organizzazione Selezionare Impostazioni organizzazione> per abilitare Autofix per tutti i repository dell'organizzazione.
Progetto Seleziona Impostazioni del progetto>Repository>Tutti i repository per abilitare Autofix per tutti i repository nel progetto.
Repository Selezionare Impostazioni progetto>Repository, quindi selezionare un repository per abilitare la Correzione automatica solo per quel repository.

Per abilitare Copilot Autofix:

  1. Accedere all'organizzazione di Azure DevOps (https://dev.azure.com/{yourorganization}).
  2. Passare alla pagina delle impostazioni per l'ambito dell'organizzazione, del progetto o del repository che si vuole configurare.
  3. Nella sezione Sicurezza avanzata aprire il pannello Funzionalità di sicurezza del codice .
  4. Selezionare la casella di controllo Autofix per gli avvisi di analisi del codice per creare correzioni automatiche per gli avvisi di analisi del codice generati dall'agente di codifica Copilot.
  5. Selezionare Applica per salvare le modifiche.

Schermata del pannello delle funzionalità di sicurezza del codice con la casella di controllo Correzione automatica per gli avvisi della scansione del codice evidenziata.

CodeQL deve essere già in esecuzione e generare avvisi per il repository. Per altre informazioni, vedere Impostare l'analisi del codice e Configurare GitHub funzionalità di sicurezza avanzata.

Genera una soluzione per un avviso

Dopo aver abilitato Copilot Autofix, è possibile generare una correzione da qualsiasi avviso di scansione del codice supportato.

  1. Selezionare Repos>Advanced Security.
  2. Selezionare la scheda Analisi codice e quindi selezionare un avviso per aprire la visualizzazione dettagli.
  3. Esaminare la posizione, la descrizione e la raccomandazione dell'avviso per comprendere la ricerca.
  4. Selezionare Genera correzione.

Schermata della vista dettagliata di un avviso di analisi del codice con il pulsante Genera correzione in alto a destra.

Mentre Copilot Autofix lavora alla correzione, la visualizzazione dei dettagli dell'avviso mostra che la correzione è in corso. Copilot Autofix apre una pull request quando la correzione è pronta.

Schermata della vista dettagliata dell'avviso di analisi del codice che mostra Copilot Autofix mentre elabora una correzione prima di aprire una pull request.

Copilot Autofix genera la correzione e apre una pull request da un branch denominato copilot-autofix/.... La pull request è etichettata con un tag Copilot Autofix, che puoi usare per identificare le pull request Autofix nell'elenco delle pull request.

Per gli avvisi CodeQL, la pull request viene visualizzata automaticamente sotto Richieste pull correlate nella vista dei dettagli dell’avviso e continua ad aggiornarsi man mano che la generazione e il completamento avanzano, quindi non è necessario ricaricare la pagina.

Screenshot della vista di dettaglio dell’avviso di analisi del codice che mostra una pull request Autofix attiva nella sezione Richieste pull correlate.

Se Copilot Autofix non produce modifiche al codice per l’avviso, non crea un ramo né una pull request e non collega una pull request nella vista dei dettagli dell’avviso. In questo caso, correggere manualmente l'avviso. Per altre informazioni, vedere Correzione non disponibile.

Esaminare e unire la correzione

La pull request aperta da Copilot Autofix si comporta come qualsiasi altra pull request di Azure Repos. La sua descrizione riassume l'avviso a cui si riferisce la correzione.

Schermata di una pull request creata da Copilot Autofix, che mostra l'ID dell'avviso, la gravità e i dettagli della correzione nella descrizione.

L'etichetta Copilot Autofix identifica le pull request di correzione automatica.

  1. Apri la pull request dalla sezione Pull request correlate dell'avviso, oppure da Repos>Pull requests.
  2. Esaminare la modifica proposta nella scheda File in tutti i file interessati.
  3. Modificare la modifica se è necessario corrispondere allo stile di codice, alle convenzioni di denominazione o ai requisiti del progetto.
  4. Approva e completa la pull request seguendo il normale flusso di revisione.

Al termine dell'unione della richiesta pull e al completamento dell'analisi del codice successivo, l'avviso viene chiuso automaticamente se la correzione rimuove la vulnerabilità sottostante.

Tip

Una correzione generata è un punto di partenza, non una risposta finale. Considerare la richiesta pull come qualsiasi altra modifica: esaminarla, testarla e richiedere revisori aggiuntivi in base alle esigenze prima dell'unione.

Risolvere i problemi di Copilot Autofix

È stata generata una correzione, ma non è stato possibile eseguire il commit o il push

Copilot Autofix usa noreply@dev.azure.com come indirizzo email dell'autore del commit. Se un criterio di convalida dell'indirizzo email dell'autore del commit non consente questo indirizzo, Copilot Autofix può generare la modifica al codice, ma non può eseguire il commit o il push per creare la pull request.

La vista dei dettagli dell'avviso mostra un errore che identifica l'indirizzo email dell'autore del commit bloccato.

Schermata di un avviso di scansione del codice che indica che Copilot Autofix non è riuscito a eseguire il commit di una correzione generata perché l'indirizzo e-mail dell'autore del commit non è consentito.

Aggiungere noreply@dev.azure.com ai modelli di posta elettronica consentiti nei criteri di convalida dell'autore del commit:

  1. Seleziona Impostazioni del progetto>Repository.
  2. Selezionare Tutti i repository per aggiornare i criteri a livello di progetto o selezionare il repository con i criteri.
  3. Selezionare Politiche.
  4. In Criteri del repository, individua Convalida dell'email dell'autore del commit.
  5. Aggiungere noreply@dev.azure.com ai modelli di posta elettronica consentiti.
  6. Tornare all'avviso di analisi del codice e selezionare Riprova correzione.

Schermata delle impostazioni dei criteri del repository in cui si aggiunge l'indirizzo email di Copilot Autofix ai modelli consentiti per gli indirizzi email degli autori dei commit.

Un'esecuzione fallisce

Se un'esecuzione di Copilot Autofix non può essere completata, l'avviso mostra uno stato di errore ben visibile, in modo da consentirti di vedere rapidamente che l'esecuzione non è riuscita. Dallo stato di errore, è possibile ritentare l'esecuzione per generare una nuova correzione.

Schermata di un avviso di scansione del codice che mostra un'esecuzione di Copilot Autofix in stato di errore con l'opzione di riprovare l'esecuzione.

Un'esecuzione può non riuscire per motivi temporanei o quando l'esecuzione non produce una modifica del codice utilizzabile. Ripetere l'esecuzione per generare di nuovo la correzione.

Correzione non disponibile

Copilot Autofix non può generare una correzione per ogni avviso. Una correzione potrebbe non essere disponibile quando:

  • Il tipo di avviso non è attualmente supportato da Copilot Autofix.
  • Copilot determina che l'avviso potrebbe essere un falso positivo.
  • Una query personalizzata o uno strumento di terze parti, anziché CodeQL, genera l'avviso.
  • Copilot Autofix viene eseguito ma non produce alcuna modifica al codice. In questo caso, non viene creato alcun branch né alcuna pull request.

Se Copilot Autofix determina che l'avviso potrebbe essere un falso positivo e non apporta alcuna modifica, la visualizzazione dei dettagli dell'avviso mostra il risultato. È possibile esaminare l'esecuzione o ritentare la correzione.

Schermata della vista dettagliata dell’avviso di analisi del codice che mostra che Copilot ha determinato che l’avviso potrebbe essere un falso positivo e non ha generato alcuna correzione, con opzioni per visualizzare l’esecuzione o riprovare la correzione.

Quando una correzione non è disponibile, usare le sezioni Raccomandazione e Esempio dell'avviso per correggerlo o ignorare manualmente l'avviso. Per ulteriori informazioni, consulta i dettagli dell'avviso .