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
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: 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ível | Nome do sistema |
---|---|
Sistema operacional | Windows, macOS e Linux |
Sistema de criação | Windows: 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:
- Invocar
MSBuild.exe
sobre a solução (.sln
) ou arquivo (.vcxproj
) de projeto mais próximo da raiz. Se oautobuild
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. - 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:
- Procure um sistema de criação no diretório-raiz.
- Se nenhum for encontrado, procure um diretório único nos subdiretórios com um sistema de criação para C/C++.
- Execute um comando apropriado para configurar o sistema.
C
Tipo de sistema compatível | Nome do sistema |
---|---|
Sistema operacional | Windows 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:
- Invocar o arquivo
dotnet build
na solução (.sln
) ou projeto (.csproj
) mais próximo da raiz. - Invocar
MSbuild
(Linux) ouMSBuild.exe
(Windows) na solução ou no arquivo do projeto mais próximo da raiz. Se oautobuild
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. - 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ível | Nome do sistema |
---|---|
Sistema operacional | Windows, macOS e Linux (sem restrição) |
Sistema de criação | Gradle, 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:
- Procurar um arquivo de criação no diretório-raiz. Verifique o arquivos do Gradle, do Maven e, em seguida, do Ant.
- Execute o primeiro arquivo de criação encontrado. Se os arquivos do Gradle e do Maven estiverem presentes, será usado o arquivo do Gradle.
- 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 site administrator.