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 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 is available if you have an Segurança Avançada license.

Neste artigo

Nota: Varredura de código está atualmente em versão beta e sujeito a alterações. Para obter mais informações sobre a participação no beta, inscreva-se aqui.

Observação: O administrador do site deve habilitar Varredura de código para your GitHub Enterprise Server instance antes de usar este recurso. Se você desejar usar o GitHub Actions para fazer a varredura do seu código, o administrador do site também deverá habilitar o GitHub Actions e configurar a infraestrutura necessária. Para obter mais informações, consulte "Configurar o Varredura de código para seu aplicativo ".

Sobre o Fluxo de trabalho de análise do CodeQL 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 Fluxo de trabalho de análise do CodeQL. 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 Fluxo de trabalho de análise do CodeQL 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 Fluxo de trabalho de análise do CodeQL 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 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: 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 your site administrator.

Esse documento ajudou você?

Privacy policy

Ajude-nos a tornar esses documentos ótimos!

Todos os documentos do GitHub são de código aberto. Você percebeu que algo que está errado ou não está claro? Envie um pull request.

Faça uma contribuição

Ou, aprenda como contribuir.