Solucionar problemas de varredura de código
De modo geral, se você estiver encontrando erros com a execução do CodeQL, a CLI do CodeQL relatará o status de cada comando executado como um código de saída. O código de saída fornece informações para comandos subsequentes ou para outras ferramentas que dependem da CLI do CodeQL. Para obter mais informações sobre os detalhes do código de saída, confira Códigos de saída.
Erro: comando 'database finalize' do CodeQL (32)
Esse erro indica um problema com a finalização da criação do banco de dados CodeQL, possivelmente devido a erros de extração ou a etapas de compilação ausentes.
Etapas de solução de problemas:
- Verificar se o código existe e se foi compilado
- Para linguagens compiladas, verifique se o processo de compilação está compilando código e está acontecendo entre as tarefas
AdvancedSecurity-Codeql-Init
eAdvancedSecurity-Codeql-Analyze
. Comandos de compilação comuns e sinalizadores obrigatórios (como limpar no-cache/no-daemon) podem ser encontrados aqui em Especificando comandos de compilação. - Para linguagens interpretadas, confirme se há algum código-fonte para a linguagem especificada no projeto.
- Para linguagens compiladas, verifique se o processo de compilação está compilando código e está acontecendo entre as tarefas
- Verificar erros de extração
- Verifique se os erros de extração afetam a integridade do banco de dados CodeQL.
- Examine o arquivo de log em busca de erros de extração e avisos a fim de avaliar a integridade geral do banco de dados.
- Investigar erros avassaladores
- Se a maioria dos arquivos encontrar erros de extrator, investigue minuciosamente para entender a causa raiz da extração inadequada.
Erro: script de compilação automática (1)
Esse erro descreve uma falha de compilação automática, sugerindo um problema com a instalação ou configuração da verificação de código.
Etapas de solução de problemas:
- Configurar etapas da compilação
- Remova a etapa AutoBuild e configure etapas de compilação específicas para linguagens compiladas em seus pipelines.
- Consulte as diretrizes de instalação fornecidas em Configurar o GitHub Advanced Security para Azure DevOps.
Erro: Diretórios CodeQL não encontrados no cache da ferramenta do agente
Esse erro indica um problema com a instalação do CodeQL para agentes auto-hospedados.
Etapas de solução de problemas:
- Consulte as diretrizes de instalação ou os scripts de configuração fornecidos em Configurar o GitHub Advanced Security para Azure DevOps.
Erro: variável do pipeline de linguagem não definida
Esse erro ocorre ao tentar executar o CodeQL sem definir a variável do pipeline especificando quais linguagens serão verificadas.
Etapas de solução de problemas:
- Definir variável do pipeline de linguagem
- Verifique se a variável do pipeline de linguagem está configurada corretamente. Consulte as diretrizes de instalação fornecidas em Configurar o GitHub Advanced Security para Azure DevOps.
- As linguagens permitidas são
csharp
,cpp
,go
,java
,javascript
,python
,ruby
eswift
.
CodeQL não retorna resultados
Esta seção fornece orientação para situações em que a análise do CodeQL não produz resultados.
Etapas de solução de problemas:
- Verificar vulnerabilidades detectadas
- Considere a possibilidade de que seu código possa genuinamente não ter vulnerabilidades. Se vulnerabilidades forem esperadas, mas não detectadas, prossiga para fazer outras verificações.
- Revisar a configuração do pacote de consultas
- Confirme o pacote de consultas que está sendo usado e considere alternar para um pacote mais abrangente, se necessário.
- Como alternativa, pacotes de consultas personalizados podem ser criados para análise personalizada.
- Ajustar permissões para exibir resultados
- Certifique-se de que permissões adequadas, pelo menos no nível do colaborador, sejam concedidas para acessar os resultados da análise. Para obter mais informações, consulte: Permissões de segurança avançada.
CodeQL expirando
Se a tarefa AdvancedSecurity-Codeql-Analyze@1
estiver sendo exibida This job was abandoned ... we lost contact with the agent
e você estiver usando um agente hospedado da Microsoft, a tarefa atingirá o tempo limite interno de seis horas para agentes hospedados pagos. Em vez disso, você pode tentar executar a análise em um agente auto-hospedado.
Permissões de tarefa de verificação de código
A tarefa de build de verificação de código usa a identidade do pipeline para chamar as APIs REST de Segurança Avançada. Por padrão, os pipelines no mesmo projeto têm acesso para carregar o arquivo SARIF gerado executando a análise do CodeQL. Se essas permissões forem removidas da conta de serviço de build ou se tiver uma configuração personalizada (por exemplo, um pipeline hospedado em um projeto diferente do repositório), você deverá conceder essas permissões manualmente.
Etapas de solução de problemas:
- Conceda as permissões
Advanced Security: View alerts
eAdvanced Security: Manage and dismiss alerts
à conta de serviço de build usada em seu pipeline, que para pipelines com escopo de projeto é[Project Name] Build Service ([Organization Name])
, e para pipelines com escopo de coleção éProject Collection Build Service ([Organization Name])
.
Instalação manual do pacote CodeQL no agente auto-hospedado
Instale o pacote CodeQL no cache da ferramenta do agente utilizando o script de configuração para sua arquitetura, disponível no GitHub. Esses scripts exigem que a $AGENT_TOOLSDIRECTORY
variável de ambiente seja definida como o local do diretório de ferramentas do agente no agente, por exemplo C:/agent/_work/_tool
, . Como alternativa, você pode implementar manualmente as seguintes etapas:
- Escolha o pacote de versão mais recente do CodeQL no GitHub.
- Faça download e descompacte o pacote no seguinte diretório dentro do diretório de ferramentas do agente, normalmente localizado em
_work/_tool
:./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/
. Com a versão atual dov2.16.0
, o nome da pasta será./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/
. Saiba mais sobre o diretório de ferramentas do agente. - Crie um arquivo vazio intitulado
x64.complete
dentro da pasta./CodeQL/0.0.0-[codeql-release-bundle-tag]
. Usando o exemplo anterior, o caminho do arquivo final até o arquivox64.complete
deve ser./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete
.