Observação: o administrador do site precisa habilitar o code scanning para o sua instância do GitHub Enterprise Server a fim de que seja possível usar esse 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, confira "Configurar a varredura de código para o seu aparelho".
Sobre o Fluxo de trabalho de análise do CodeQL e as linguagens compiladas
Você configurou GitHub para executar code scanning para o seu repositório, adicionando um fluxo de trabalho de GitHub Actions ao repositório. Para a code scanning do CodeQL, você adiciona o Fluxo de trabalho de análise do CodeQL. Para obter mais informações, confira "Como configurar a verificação de código para um repositório".
De modo geral, você não precisa editar o arquivo de fluxo de trabalho gerado para a code scanning. No entanto, se necessário, você editar o fluxo de trabalho para personalizar algumas das configurações. Por exemplo, você pode editar o Fluxo de trabalho de análise do CodeQL do GitHub para especificar a frequência das verificações, as linguagens ou os diretórios a serem verificados e o que é procurado pela code scanning do CodeQL no código. Talvez você precise editar o Fluxo de trabalho de análise do CodeQL caso use um conjunto específico de comandos para compilar o código. Para obter informações gerais sobre como configurar a code scanning e editar arquivos de fluxo de trabalho, confira "Como personalizar a verificação de código" e "Aprenda o GitHub Actions".
Sobre a autobuild para CodeQL
O Code scanning trabalha executando consultas em 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 C/C++, C#,
e Java, o processo de preenchimento desse banco de dados envolve a criação do código e a extração dos dados. Para essas linguagens, o CodeQL analisa os arquivos de origem no repositório em que são criados. Para qualquer uma dessas linguagens, você pode desabilitar autobuild
e usar comandos de build personalizados para analisar apenas os arquivos criados por esses comandos personalizados.
Para as linguagens compiladas compatíveis, use a ação autobuild
no Fluxo de trabalho de análise do CodeQL para compilar o código. Com isso, você não precisa especificar comandos de compilação explícitos para C/C++, C#, e Java.
Se o fluxo de trabalho usar uma matriz language
, autobuild
tentará criar cada uma das linguagens compiladas listadas na matriz. Sem uma matriz, autobuild
tentará 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: caso você use executores auto-hospedados para o GitHub Actions, talvez seja necessário instalar um software adicional para usar o processo 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, confira "Sobre 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 build Linux e macOS: Autoconf, Make, CMake, qmake, Meson, Waf, SCons, Linux Kbuild e scripts de build |
O comportamento da etapa autobuild
varia de acordo com o sistema operacional em que a extração é executada. No Windows, a etapa autobuild
tenta fazer a detecção automática de um método de build adequado para C/C++ usando a seguinte abordagem:
- Invocar
MSBuild.exe
no arquivo de solução (.sln
) ou de projeto (.vcxproj
) mais próximo da raiz. Seautobuild
detectar vários arquivos de solução ou de projeto na mesma profundidade (mais curta) do diretório de nível superior, ele tentará compilar todos eles. - Invocar um script parecido com um script de build: build.bat, build.cmd e build.exe (nessa ordem).
No Linux e no macOS, a etapa autobuild
revisa os arquivos presentes no repositório para determinar o sistema de build 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 autobuild
tenta fazer a detecção automática de um método de build adequado para C# usando a seguinte abordagem:
- Invocar
dotnet build
no arquivo de solução (.sln
) ou de projeto (.csproj
) mais próximo da raiz. - Invocar
MSbuild
(Linux) ouMSBuild.exe
(Windows) no arquivo de solução ou de projeto mais próximo da raiz. Seautobuild
detectar vários arquivos de solução ou de projeto na mesma profundidade (mais curta) do diretório de nível superior, ele tentará compilar todos eles. - Invocar um script parecido com um script de build: 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 autobuild
tenta determinar o sistema de build para bases de código 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 autobuild
falhar ou você quiser analisar um conjunto de arquivos de origem diferentes daqueles criados pelo processo autobuild
, remova a etapa autobuild
do fluxo de trabalho e adicione manualmente as etapas de compilação. Para projetos C/C++, C#, Go, e Java, o CodeQL analisará qualquer código-fonte criado por suas etapas de compilação especificadas. Para obter informações sobre como editar o arquivo de fluxo de trabalho, confira "Como personalizar a verificação de código".
Depois de remover a etapa autobuild
, remova o comentário da etapa run
e adicione comandos de build adequados ao seu repositório. A etapa run
do fluxo de trabalho executa programas de linha de comando usando o shell do sistema operacional. Você pode modificar esses comandos e adicionar mais comandos para personalizar o processo de compilação.
- run: |
make bootstrap
make release
Para obter mais informações sobre a palavra-chave run
, confira "Sintaxe de fluxo de trabalho para o GitHub Actions".
Se o repositório contiver várias linguagens compiladas, você poderá especificar comandos de compilação específicos da linguagem. Por exemplo, se o repositório contiver C/C++, C# e Java e autobuild
compilar corretamente C/C++ e C#, mas não compila Java, você poderá usar a configuração a seguir no seu fluxo de trabalho, após a etapa init
. Isso especifica as etapas de compilação para Java enquanto ainda usa autobuild
para C/C++ e C#:
- if: matrix.language == 'cpp' || matrix.language == 'csharp'
name: Autobuild
uses: github/codeql-action/autobuild@v2
- if: matrix.language == 'java'
name: Build Java
run: |
make bootstrap
make release
Para obter mais informações sobre o if
condicional, confira "Sintaxe de fluxo de trabalho para o GitHub Actions".
Para obter mais dicas e truques sobre por que autobuild
não criar seu código, confira "Solução de problemas de o fluxo de trabalho do CodeQL".
Se você adicionou etapas de criação manual para linguagens compiladas, mas o code scanning ainda não está funcionando no seu repositório, entre em contato com seu administrador do site.