Skip to main content
Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais atualizadas, acesse a documentação em inglês.

Sobre a varredura de código com CodeQL

Você pode usar CodeQL para identificar vulnerabilidades e erros no seu código. Os resultados são exibidos como alertas de code scanning em GitHub.

A Code scanning está disponível para todos os repositórios públicos do GitHub.com. A Code scanning também está disponível em repositórios privados pertencentes às organizações que usam o GitHub Enterprise Cloud e que têm uma licença do GitHub Advanced Security. Para obter mais informações, confira "Sobre a Segurança Avançada do GitHub".

Sobre a code scanning com o CodeQL

CodeQL é o mecanismo de análise de código desenvolvido por GitHub para automatizar verificações de segurança. Você pode analisar seu código usando CodeQL e exibir os resultados como alertas de code scanning.

Existem três maneiras principais de usar a análise do CodeQL para code scanning:

  • Use a configuração padrão para definir automaticamente a análise do CodeQL para code scanning no seu repositório. A configuração padrão escolhe os idiomas a serem analisados, os conjuntos de consultas a serem executados e os eventos que disparam verificações, depois exibe um resumo das configurações da análise. Depois de habilitar o CodeQL, o GitHub Actions vai disparar execuções de fluxo de trabalho para verificar seu código. Para obter mais informações, confira "Como configurar a verificação de código para um repositório".

  • Use a configuração avançada para adicionar o fluxo de trabalho do CodeQL ao seu repositório. Isso gera um arquivo de fluxo de trabalho personalizável que usa o github/codeql-action para executar o CodeQL CLI. Para obter mais informações, confira "Como configurar a verificação de código para um repositório".

  • Execute a CLI de CodeQL diretamente em um sistema dew CI externo e faça o upload dos resultados para GitHub. Para obter mais informações, confira "Sobre a varredura de código de CodeQL no seu sistema de CI".

Sobre o CodeQL

O CodeQL trata o código como dados, permitindo que você encontre possíveis vulnerabilidades em seu código com maior confiança do que os analisadores estáticos tradicionais.

  1. Você gera um banco de dados de CodeQL para representar a sua base de código.
  2. Em seguida, você executa consultas de CodeQL nesse banco de dados para identificar problemas na base de código.
  3. Os resultados da consulta são exibidos como alertas de code scanning em GitHub quando você usa CodeQL com code scanning.

O CodeQL dá suporte a linguagens compiladas e interpretadas e pode encontrar vulnerabilidades e erros no código escrito nas linguagens compatíveis.

  • C/C++
  • C#
  • Go
  • Java/Kotlin
  • JavaScript/TypeScript
  • Python
  • Ruby

Observações:

  • A análise do CodeQL para Kotlin está na versão beta. Durante a versão beta, a análise do CodeQL para Kotlin será menos abrangente do que para outras linguagens.
  • Use java para analisar o código escrito em Java, Kotlin ou ambos.
  • Use javascript para analisar o código escrito em JavaScript, TypeScript ou ambos.

Para obter mais informações, confira a documentação no site do CodeQL: "Linguagens e estruturas compatíveis".

Sobre consultas de CodeQL

GitHub especialistas, pesquisadores de segurança e contribuidores da comunidade escrevem e mantêm as consultas padrão de CodeQL usadas por code scanning. As consultas são regularmente atualizadas para melhorar a análise e reduzir quaisquer resultados falso-positivos. As consultas são código aberto, ou seja, você pode visualizar as consultas e contribuir com elas no repositório github/codeql. Para obter mais informações, confira CodeQL no site do CodeQL. Você também pode escrever suas consultas. Para obter mais informações, confira "Sobre as consultas do CodeQL na documentação do CodeQL.

Se estiver verificando seu código com a configuração avançada ou com um sistema de CI externo, você poderá executar consultas adicionais como parte da análise. Essas consultas precisam pertencer a um pacote de consultas (beta) publicado do CodeQL ou a um pacote do CodeQL em um repositório. Os pacotes (beta) do CodeQL oferecem os seguintes benefícios além dos pacotes tradicionais do QL:

  • Quando um pacote de consulta (beta) CodeQL é publicado em GitHub Container registry, todas as dependências transitórias exigidas pelas consultas e um cache de compilação estão incluídas no pacote. Isto melhora o desempenho e garante que a execução de consultas no pacote dê resultados idênticos toda vez até que você fizer a autalização para uma nova versão do pacote ou para o CLI.
  • Os pacotes do QL não incluem dependências transitivas, ou seja, as consultas do pacote podem depender apenas das bibliotecas padrão (em outras palavras, as bibliotecas referenciadas por uma instrução import LANGUAGE na consulta) ou das bibliotecas no mesmo pacote do QL em que está a consulta.
  • Os pacotes de consulta (beta) do CodeQL podem ser baixados de vários registros de contêiner do GitHub. Para obter mais informações, confira "Como personalizar a verificação de código".

Para obter mais informações, confira "Sobre os pacotes do CodeQL".

Observação: a funcionalidade de gerenciamento de pacotes do CodeQL, incluindo pacotes do CodeQL, está atualmente em beta e está sujeita a alterações.