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 recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Configurar o fluxo de trabalho do CodeQL para linguagens compiladas

Você pode configurar como o GitHub usa o CodeQL analysis workflow para varrer o código escrito em linguagens compiladas para obter vulnerabilidades e erros.

Pessoas com permissões de gravação para um repositório podem configurar Varredura de código para o repositório.

Varredura de código está disponível em repositórios públicos e em repositórios públicos e privados pertencentes a organizações com uma licença para Segurança Avançada. Para obter mais informações, consulte "produtos de GitHub

Neste artigo

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

Ou, learn how to contribute.

Sobre o CodeQL analysis workflow e linguagens compiladas

Para habilitar o Varredura de código para seu repositório, você deve adicionar ao repositório um fluxo de trabalho do GitHub Actions que inclui análise do CodeQL. Para CodeQL Varredura de código, você adiciona o CodeQL analysis workflow. Para obter mais informações, consulte "Habilitando Varredura de código.

De modo geral, você não precisa editar o fluxo de trabalho padrão para Varredura de código. No entanto, se necessário, você editar o fluxo de trabalho para personalizar algumas das configurações. Por exemplo, você pode editar os CodeQL analysis workflow de GitHub para especificar a frequência das digitalizações, as linguagens ou diretórios a serem digitalizados e o que CodeQL Varredura de código procura no seu código. Talvez você precise editar o CodeQL analysis workflow se você usar um conjunto específico de comandos para compilar seu código. Para informações gerais sobre configuração Varredura de código e editar arquivos do fluxo de trabalho, consulte "Configurar Varredura de código" e "Aprender GitHub Actions".

Sobre a autobuild para CodeQL

A varredura de código funciona executando consultas contra um ou mais bancos de dados. Cada banco de dados contém uma representação de todo o código em uma linguagem única no seu repositório. Para as linguagens compiladas de C/C++, C#, e Java, o processo de preenchimento deste banco de dados envolve a construção do código e extração de dados. CodeQL também executa uma criação para projetos Go para configurar o projeto. Entretanto, diferente das outras linguagens compiladas, todos os Go no repositório são extraídos, não apenas aqueles construídos. Comandos de compilação personalizados não são compatíveis com o Go.

Para as linguagens compiladas compatíveis, você pode usar a ação autobuild no CodeQL analysis workflow para criar o seu código. Isso evita que você tenha que especificar comandos de criação explícitos para C/C++, C#, e Java.

Se o fluxo de trabalho usar uma matriz de linguagem, autobuild tentará criar cada uma das linguagens compiladas listadas na matriz. Sem uma matriz, autobuild tenta criar a linguagem compilada compatível que tem mais arquivos de origem no repositório. Com exceção de Go, a análise de outras linguagens compatíveis no repositório irá falhar, a menos que você forneça comandos de criação explícitos.

Observação: Se você usa executores auto-hospedados para GitHub Actions, talvez seja necessário instalar um software adicional para usar o processo de autobuild. Além disso, se seu repositório precisar de uma versão específica de uma ferramenta de criação, talvez seja necessário instalá-lo manualmente. Para obter mais informações, consulte "Especificações para executores hospedados no GitHub".

C/C++

Tipo de sistema compatívelNome do sistema
Sistema operacionalWindows, macOS e Linux
Sistema de criaçãoWindows: MSbuild e scripts de criação
Linux e macOS: Autoconf, Make, CMake, qmake, Meson, Waf, SCons, Linux Kbuild e scripts

O comportamento da etapa de autobuild varia de acordo com o sistema operacional em que a extração é executada. No Windows, o <code>autobuild tenta detectar automaticamente um método de criação adequado para C/C++ usando a seguinte abordagem:

  1. Invocar MSBuild.exe sobre a solução (.sln) ou arquivo (.vcxproj) de projeto mais próximo da raiz. Se o autobuild detectar várias soluções ou arquivos de projeto na mesma profundidade (mais curta) do diretório de nível superior, ele tentará criar todos eles.
  2. Invoca um script que se parece com um script de criação-build.bat, build.cmd, e build.exe (nessa ordem).

No Linux e no macOS, a etapa de autobuild revisa os arquivos presentes no repositório para determinar o sistema de criação usado:

  1. Procure um sistema de criação no diretório-raiz.
  2. Se nenhum for encontrado, procure um diretório único nos subdiretórios com um sistema de criação para C/C++.
  3. Execute um comando apropriado para configurar o sistema.

C

Tipo de sistema compatívelNome do sistema
Sistema operacionalWindows e Linux
Sistema de criação.NET, MSbuild e scripts de criação

O processo de autobuild tenta detectar automaticamente um método de criação adequado para C# usando a seguinte abordagem:

  1. Invocar o arquivo dotnet build na solução (.sln) ou projeto (.csproj) mais próximo da raiz.
  2. Invocar MSbuild (Linux) ou MSBuild.exe (Windows) na solução ou no arquivo do projeto mais próximo da raiz. Se o autobuild detectar várias soluções ou arquivos de projeto na mesma profundidade (mais curta) do diretório de nível superior, ele tentará criar todos eles.
  3. Invoca um script que parece um script de criação—build e build.sh (nessa ordem, para o Linux) ou build.bat, build.cmd, e build.exe (nessa ordem para o Windows).

Java

Tipo de sistema compatívelNome do sistema
Sistema operacionalWindows, macOS e Linux (sem restrição)
Sistema de criaçãoGradle, Maven e Ant

O processo de autobuild tenta determinar o sistema de criação para bases de código do Java aplicando esta estratégia:

  1. Procurar um arquivo de criação no diretório-raiz. Verifique o arquivos do Gradle, do Maven e, em seguida, do Ant.
  2. Execute o primeiro arquivo de criação encontrado. Se os arquivos do Gradle e do Maven estiverem presentes, será usado o arquivo do Gradle.
  3. Caso contrário, procure arquivos de criação nos subdiretórios diretos do diretório-raiz. Se apenas um subdiretório contiver arquivos de criação, execute o primeiro arquivo identificado nesse subdiretório (usando a mesma preferência de 1). Se mais de um subdiretório conter arquivos de criação, relate um erro.

Adicionar passos de criação a uma linguagem compilada

Se o código de C/C++, C#, ou Java no seu repositório tiver um processo de criação não padrão, poderá ocorrer uma falha no autobuild. Você deverá remover a etapa autobuild do fluxo de trabalho e adicionar manualmente etapas de criação. Para obter informações sobre como editar o arquivo de fluxo de trabalho, consulte "Configurar o Varredura de código".

Depois de remover a etapa de autobuild, remova o comentário da etapa executar e adicione comandos de criação adequados ao seu repositório. A etapa do fluxo de trabalho executar executa programas da linha de comando que usam o shell do sistema operacional. Você pode modificar esses comandos e adicionar mais comandos para personalizar o processo de criação.

- run: |
  make bootstrap
  make release

Para obter mais informações sobre a palavra-chave executar, consulte "Sintaxe de fluxo de trabalho para GitHub Actions".

Se seu repositório contém várias linguagens compiladas, você pode especificar comandos de compilação específicos da linguagem. Por exemplo, se o seu repositório contém C/C++, C# e Java, e o autobuild cria C/C++ e C# corretamente mas falha ao criar Java, você poderia utilizar a configuração a seguir no seu fluxo de trabalho, após a etapa init. Isto especifica etapas de criação para Java ao mesmo tempo que usa autobuild para C/C++ e C#:

- if: matrix.language == 'cpp' || matrix.language == 'csharp' 
  name: Autobuild
  uses: github/codeql-action/autobuild@v1

- if: matrix.language == 'java' 
  name: Build Java
  run: |
    make bootstrap
    make release

Para obter mais informações sobre se condicional, consulte "Sintaxe de fluxo de trabalho para o GitHub Actions.

Para obter mais dicas e truques sobre por que oautobuild não criará o seu código, consulteSolução de problemas sobre o fluxo de trabalho do CodeQL".

Se você adicionou etapas de criação manual para linguagens compiladas, mas o Varredura de código ainda não está funcionando no seu repositório, entre em contato com GitHub Support or GitHub Premium Support.

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

Ou, learn how to contribute.