Observação: Os Executor do CodeQL está atualmente em fase beta e sujeito a alterações.
Observação: Para repositórios privados e internos, Varredura de código está disponível quando as funcionalidades de Segurança Avançada GitHub são habilitadas no repositório. Se você vir o erro dvanced Security must be enabled for this repository to use code scanning
, verifique se Segurança Avançada GitHub está habilitado. Para obter mais informações, consulte "Gerenciar configurações de segurança e análise do seu repositório".
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".