Note: The Executor do CodeQL is being deprecated. Please use the CodeQL CLI version 2.6.2 or greater instead. GitHub Enterprise Server 3.3 will be the final release series that supports the Executor do CodeQL. On GitHub Enterprise Cloud, the Executor do CodeQL will be supported until March 2022. For more information, see the CodeQL runner deprecation.
Observação: Varredura de código está em beta em GitHub Enterprise Server 2.22. Para a versão geralmente disponível do varredura de código, atualize para a versão mais recente de GitHub Enterprise Server.
O comando init
leva muito tempo
Antes de o Executor do CodeQL poder criar e analisar o código, ele precisa acessar o pacote de CodeQL que contém a CLI de CodeQL e as bibliotecas de CodeQL.
Ao usar o Executor do CodeQL pela primeira vez na sua máquina, o comando init
faz o download do pacote de CodeQL para a sua máquina. Este download pode levar alguns minutos. O pacote de CodeQL fica armazenado em cache entre as execuções. Portanto, se você usar o Executor do CodeQL novamente na mesma máquina, ele não fará o download do pacote de CodeQL novamente.
Para evitar este download automático, você pode fazer o download manualmente do pacote de CodeQL para a sua máquina e especificar o caminho usando o parâmetro --codeql-path
do comando init
.
Nenhum código encontrado durante a criação
Se o comando analisar
para o Executor do CodeQL falhar com um erro Nenhum código fonte foi visto durante a criação
, isto indica que CodeQL não conseguiu monitorar o seu código. Há várias explicações para essa falha.
-
A detecção automática da linguagem identificou uma linguagem compatível, mas não há código analisável dessa linguagem no repositório. Um exemplo típico é quando nosso serviço de detecção de linguagem encontra um arquivo associado a uma determinada linguagem de programação, como um arquivo
.h
, or.gyp
, mas nenhum código executável correspondente está presente no repositório. Para resolver o problema, você pode definir manualmente as linguagens que você deseja analisar usando o sinalizador--languages
do comandoinit
. Para obter mais informações, consulte "Configurar o Varredura de código no seu sistema de CI". -
Você está analisando uma linguagem compilada sem usar o comando
autobuild
e você mesmo executa os passos de criação após a etapainit
. Para que a criação funcione, você deve configurar o ambiente de modo que Executor do CodeQL possa monitorar o código. O comandoinit
gera instruções sobre como exportar as variáveis de ambiente necessárias. Portanto, você pode copiar e executar o script depois de executar o comandoinit
.- No macOS e no Linux:
$ . codeql-runner/codeql-env.sh
- No Windows, usando o shell de comando (
cmd
) ou um arquivo de lote (.bat
):> call codeql-runner\codeql-env.bat
- No Windows, usando o PowerShell:
> cat codeql-runner\codeql-env.sh | Invoke-Expression
As variáveis de ambiente também são armazenadas no arquivo
codeql-runner/codeql-env.json
. Este arquivo contém um único objeto JSON que mapeia chaves de variável de ambiente com valores. Se você não conseguir executar o script gerado pelo comandoinit
, você poderá usar os dados no formato JSON.Observação:Se você usou o sinalizador
--temp-dir
do comandoinit
para especificar um diretório personalizado para arquivos temporários, o caminho para os arquivoscodeql-env
podem ser diferentes. - No macOS e no Linux:
-
Você está analisando uma linguagem compilada no macOS sem usar o comando
autobuild
e você mesmo executa os passos de compilação após a etapainit
. Se a opção SIP (Proteção da Integridade do Sistema) estiver habilitada, que é o padrão nas versões recentes do OSX, poderá ocorrer uma falha na análise. Para corrigir isso, prefixe o comando de compilação com a variável de ambiente$CODEQL_RUNNER
. Por exemplo, se seu comando de criação forcmd arg1 arg2
, você deverá executar$CODEQL_RUNNER cmd arg1 arg2
. -
O código é criado em um contêiner ou em uma máquina separada. Se você usar uma criação em contêiner ou se você externalizar a criação para outra máquina, certifique-se de executar Executor do CodeQL no contêiner ou na máquina onde a tarefa de criação ocorrer. Para obter mais informações, consulte "Executar a varredura de código do CodeQL em um contêiner".