Che cos'è l'analisi del codice?

Completato

L'analisi del codice usa CodeQL per analizzare il codice in un repository di GitHub per trovare vulnerabilità di sicurezza ed errori di codifica. L'analisi del codice è disponibile per tutti i repository pubblici e per i repository privati di proprietà delle organizzazioni in cui è abilitata la funzionalità GitHub Advanced Security. Se l'analisi del codice rileva una potenziale vulnerabilità o un errore nel codice, GitHub visualizza un avviso nella scheda Security del repository. Dopo la correzione del codice che ha attivato l'avviso, GitHub chiude l'avviso.

È possibile usare l'analisi del codice per trovare, valutare e definire le priorità delle correzioni per i problemi esistenti nel codice. L'analisi del codice impedisce inoltre agli sviluppatori di introdurre nuovi problemi. È possibile pianificare le analisi per determinati giorni e orari o attivare l'analisi quando si verifica un evento specifico nel repository, ad esempio un push.

In questa unità verranno fornite informazioni su CodeQL, sulle tre opzioni per configurare l'analisi del codice e su come aggiungere al repository il flusso di lavoro di CodeQL.

Informazioni sull'analisi del codice con CodeQL

CodeQL è il motore di analisi del codice sviluppato da GitHub per automatizzare i controlli di sicurezza. È possibile analizzare il codice usando CodeQL e visualizzare i risultati come avvisi di analisi del codice. Esistono tre modi principali di configurare l'analisi di CodeQL per l'analisi del codice:

  • Usare la configurazione predefinita per impostare rapidamente l'analisi codeQL per l'analisi del codice nel repository. La configurazione predefinita gestisce la scelta delle lingue da analizzare, della suite di query da eseguire e degli eventi che attivano le scansioni, con la possibilità di impostare manualmente le lingue e le suite di query. Questa opzione di configurazione esegue l'analisi del codice come GitHub Action.
  • Usare la configurazione avanzata per aggiungere il flusso di lavoro CodeQL direttamente al repository. L'aggiunta del flusso di lavoro CodeQL direttamente nel repository genera un file del flusso di lavoro personalizzabile, che usa github/codeql-action per eseguire l'interfaccia della riga di comando di CodeQL come azione GitHub.
  • Eseguire CodeQL CLI direttamente in un sistema di integrazione continua esterno e caricare i risultati in GitHub.

CodeQL gestisce il codice come dati, consentendo di trovare potenziali vulnerabilità nel codice con maggiore attendibilità rispetto agli analizzatori statici tradizionali. È possibile generare un database CodeQL per rappresentare la codebase, quindi eseguire query di CodeQL nel database per identificare i problemi nella codebase. Quando si usa CodeQL con l'analisi del codice, i risultati della query vengono visualizzati come avvisi di analisi del codice in GitHub.

CodeQL supporta linguaggi compilati e interpretati e può trovare vulnerabilità ed errori nel codice scritto nei linguaggi supportati seguenti:

  • C o C++
  • C#
  • Go
  • Java/Kotlin
  • JavaScript/TypeScript
  • Pitone
  • rubino
  • Swift

La sezione successiva illustra come aggiungere il flusso di lavoro di CodeQL al repository. Si apprenderà come configurare CodeQL usando gli strumenti esterni nell'unità Abilita analisi del codice con strumenti di terze parti .

Abilitare CodeQL nel repository con la configurazione predefinita

Se sono disponibili le autorizzazioni di scrittura in un repository, è possibile impostare o configurare l'analisi del codice per tale repository.

Seguire questa procedura per configurare l'analisi del codice usando il flusso di lavoro di GitHub Actions per CodeQL:

  1. In GitHub.com passare alla pagina principale del repository.

  2. Sotto il nome del repository selezionare Sicurezza.

    Screenshot della scheda Sicurezza.

  3. Selezionare Configura analisi del codice. Se questa opzione non è disponibile, chiedere a un proprietario dell'organizzazione o all'amministratore del repository di abilitare GitHub Advanced Security.

    Screenshot del pulsante configura l'analisi del codice.

  4. Nell'elenco a discesa Configura selezionare Predefinito.

  5. Esaminare le opzioni predefinite. Se necessario, selezionare il pulsante Modifica nell'angolo inferiore sinistro della nuova finestra per personalizzare la modalità di esecuzione di CodeQL.

    I trigger on:pull_request e on:push sono l'impostazione predefinita per l'analisi del codice e ciascuno è utile per scopi diversi. Altre informazioni su questi trigger sono disponibili nell'unità Configura analisi codice .

  6. Selezionare Abilita CodeQL dopo aver abilitato l'analisi del codice.

    Nel flusso di lavoro di analisi predefinito di CodeQL, l'analisi del codice è configurata per analizzarlo ogni volta che si esegue il push a un qualsiasi ramo protetto oppure quando si genera una richiesta pull nel ramo predefinito. Dopo aver eseguito il push, l'analisi del codice viene eseguita automaticamente.

Nella sezione precedente è stata abilitata l'analisi del codice usando la configurazione predefinita, che esegue l'analisi del codice come azione GitHub, senza dover gestire un file del flusso di lavoro. L'altra opzione è Configurazione avanzata , che genera il file del flusso di lavoro predefinito che è possibile modificare per la configurazione avanzata e altri passaggi. In un'unità successiva verrà illustrato l'uso della configurazione avanzata per l'impostazione dell'analisi del codice.

L'esecuzione dell'analisi del codice con GitHub Actions influisce sui minuti di fatturazione mensili. Se si vuole usare GitHub Actions oltre e risorse di archiviazione o i minuti inclusi nell'account, verrà addebitato un utilizzo aggiuntivo.

Informazioni sulla fatturazione per Actions

L'analisi del codice ricorre a GitHub Actions e ogni esecuzione di un flusso di lavoro di analisi del codice utilizza minuti per GitHub Actions. L'uso di GitHub Actions è gratuito per i repository pubblici e gli strumenti di esecuzione self-hosted. Per i repository privati ogni account GitHub riceve un determinato numero di risorse di archiviazione e minuti gratuiti, in base al prodotto usato con l'account. I limiti di spesa controllano qualsiasi utilizzo oltre gli importi inclusi. Se si è un cliente con fatturazione mensile, l'account ha un limite di spesa predefinito pari a zero dollari usa (USD), che impedisce un utilizzo aggiuntivo di minuti o archiviazione per i repository privati oltre gli importi inclusi nell'account. Se il pagamento è basato su fattura, l'account avrà un limite di spesa predefinito illimitato. I minuti vengono reimpostati ogni mese, mentre l'utilizzo delle risorse di archiviazione non viene reimpostato.