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 recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.
O GitHub AE está atualmente sob versão limitada. Entre em contato com nossa Equipe de Vendas para saber mais.

Configurar o fluxo de trabalho do CodeQL para linguagens compiladas

Você pode configurar como o GitHub usa o Fluxo de trabalho de análise do CodeQL para varrer o código escrito em linguagens compiladas para obter vulnerabilidades e erros.

If you have write permissions to a repository, you can configure Varredura de código for that repository.

Varredura de código está disponível como parte de Segurança Avançada GitHub, que é grátis durante a versão beta. Para obter mais informações, consulte "Sobre Segurança Avançada GitHub".

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

Você configurou GitHub para executar Varredura de código para o seu repositório, adicionando um fluxo de trabalho de GitHub Actions ao repositório. Para CodeQL Varredura de código, você adiciona o Fluxo de trabalho de análise do CodeQL. Para obter mais informações, consulte "Configurar Varredura de código para um repositório".

Typically, you don't need to edit the default workflow for Varredura de código. However, if required, you can edit the workflow to customize some of the settings. For example, you can edit GitHub's Fluxo de trabalho de análise do CodeQL to specify the frequency of scans, the languages or directories to scan, and what CodeQL Varredura de código looks for in your code. You might also need to edit the Fluxo de trabalho de análise do CodeQL if you use a specific set of commands to compile your code. Para obter informações gerais sobre a configuração de Varredura de código e edição de arquivos de fluxo de trabalho, consulte "Configurar Varredura de código" e "Aprenda 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. Você pode usar comandos de criação personalizados para ignorar arquivos de Go de extração que não são tocados pela compilação.

Para as linguagens compiladas compatíveis, você pode usar a ação autobuild no Fluxo de trabalho de análise do CodeQL 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: Você deve instalar o software necessário nos seus executores auto-hospedados. Para obter mais informações sobre executores auto-hospedados, consulte "Hospedando os seus próprios executores".

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. Se você quiser especificar quais arquivos de Go no seu repositório devem ser extraídos, você deverá adicionar as 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 your enterprise owner.