Skip to main content

Sobre a verificação de código CodeQL para idiomas compilados

Entenda como CodeQL analisa idiomas compilados, as opções de build disponíveis e saiba como você pode personalizar o processo de geração de banco de dados, se necessário.

Quem pode usar esse recurso?

Usuários com com acesso para gravação if advanced setup is already enabled

O Code scanning está disponível para os seguintes tipos de repositório:

  • Repositórios públicos no GitHub.com
  • Repositórios de propriedade da organização em GitHub Team, GitHub Enterprise Cloudou GitHub Enterprise Server, com GitHub Code Security habilitados.

Sobre Fluxo de trabalho de análise do CodeQL e linguagens compiladas

          Code scanning funciona executando consultas em um ou mais CodeQL bancos de dados. Cada banco de dados contém uma representação do código em uma linguagem única no seu repositório. Para os idiomas compilados C/C++, C#, Go, Java, Kotlin, Rust, and Swift, o processo de preencher esse banco de dados geralmente envolve a criação do código e a extração de dados.

Quando você habilita code scanning, a configuração padrão e avançada gera um CodeQL banco de dados para análise usando o método mais simples disponível. Para C/C++, C#, Java e Rust, o banco de dados CodeQL é gerado diretamente da base de código sem a necessidade de compilação (none modo de compilação). Para outras linguagens compiladas, CodeQL cria a base de código usando o autobuild modo de build. Como alternativa, é possível usar o manual modo de compilação para especificar comandos de compilação explícitos para analisar apenas os arquivos criados por esses comandos personalizados.

Você pode usar o cache de dependências com CodeQL para armazenar as dependências como um GitHub Actions cache ao invés de baixá-las dos registros. Consulte Sobre o cache de dependência para CodeQL mais adiante neste artigo.

CodeQL modos de construção

A CodeQL ação dá suporte a três modos de build diferentes para idiomas compilados:

  • none – o CodeQL banco de dados é criado diretamente da base de código sem criar a base de código (com suporte para todos os idiomas interpretados e, além disso, com suporte para C/C++, C#, Java e Rust).
  • autobuild - CodeQL detecta o método de build mais provável e usa isso para tentar criar a base de código e criar um banco de dados para análise (com suporte para C/C++, C#, Go, Java, Kotlin e Swift).
  • manual – você define as etapas de build a serem usadas para a base de código no fluxo de trabalho (com suporte para C/C++, C#, Go, Java, Kotlin e Swift).

Para obter informações sobre o comportamento específico de autobuild, requisitos do executor e orientações para builds manuais, consulte Opções e etapas de build do CodeQL para idiomas compilados.

Sobre o cache de dependência para CodeQL

Você pode usar o cache de dependências com CodeQL para armazenar as dependências como um GitHub Actions cache, em vez de baixá-las de registros. Isso reduz o risco de perda de alertas quando registros de terceiros não funcionam bem e pode resultar em uma melhoria de desempenho para projetos que possuem um grande número de dependências ou que trabalham com registros lentos. Para saber mais sobre como o armazenamento em cache de dependências pode acelerar os fluxos de trabalho, consulte Referência do cache de dependência.

O cache de dependência funciona em todos os modos de build e é suportado por Java, Go e C#.

Observação

O uso do cache de dependência armazenará CodeQLcaches específicos que estarão sujeitos a cotas de cache para um repositório. Confira Referência do cache de dependência.