Nota: Varredura de código está atualmente em versão beta e sujeito a alterações.
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--languagesdo comandoinit. Para obter mais informações, consulte "Configurar o Executor do CodeQL no seu sistema de CI". -
Você está analisando uma linguagem compilada sem usar o comando
autobuilde você mesmo executa os passos de criação após a etapainit. Para que a construção funcione, você deverá configurar o ambiente de modo que o Executor do CodeQL possa monitorar o processo de construção. O comandoinitgera 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-dirdo comandoinitpara especificar um diretório personalizado para arquivos temporários, o caminho para os arquivoscodeql-envpodem ser diferentes. - No macOS e no Linux:
-
Você está analisando uma linguagem compilada no macOS sem usar o comando
autobuilde 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".

