Partilhar via


Solucionar problemas de verificação de código

Geralmente, se você estiver encontrando erros com a execução do CodeQL, a CLI do CodeQL relata 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 detalhes do código de saída, consulte Códigos de saída.

Erro: comando 'database finalize' CodeQL (32)

Este erro indica um problema com a finalização da criação do banco de dados CodeQL, potencialmente devido a erros de extração ou etapas de compilação ausentes.

Passos de resolução de problemas:

  1. Verifique se o código existe e é compilado
    • Para linguagens compiladas, verifique se o processo de compilação está compilando código e está acontecendo entre as AdvancedSecurity-Codeql-Init tarefas e as AdvancedSecurity-Codeql-Analyze tarefas. Comandos de compilação comuns e sinalizadores necessários (como clean no-cache/no-daemon) podem ser encontrados aqui em Especificando comandos de compilação.
    • Para idiomas interpretados, confirme se há algum código-fonte para o idioma especificado no projeto.
  2. Verificar erros de extração
    • Verifique se os erros de extração afetam a integridade do banco de dados CodeQL.
    • Revise o arquivo de log para verificar se há erros de extração e avisos para avaliar a integridade geral do banco de dados.
  3. Investigue erros avassaladores
    • Se a maioria dos ficheiros encontrar erros de extração, investigue mais para compreender a causa raiz da extração incorreta.

Erro: script de construção automática (1)

Este 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.

Passos de resolução de problemas:

  • Configurar etapas de compilação
    • Remova a etapa AutoBuild e, em vez disso, configure etapas de compilação específicas para idiomas compilados em seus pipelines.
    • Consulte as diretrizes de instalação fornecidas em Configurar a Segurança Avançada do GitHub para Azure DevOps.

Erro: Diretórios CodeQL não encontrados no cache da ferramenta do agente

Este erro indica um problema com a instalação do CodeQL para agentes auto-hospedados.

Passos de resolução de problemas:

Erro: variável de pipeline de idioma não definida

Este erro ocorre ao tentar executar o CodeQL sem definir a variável de pipeline especificando quais idiomas devem ser verificados.

Passos de resolução de problemas:

  • Definir variável de pipeline de idioma
    • Verifique se a variável de pipeline de idioma está configurada corretamente. Consulte as diretrizes de instalação fornecidas em Configurar a Segurança Avançada do GitHub para Azure DevOps.
    • Os idiomas suportados incluem csharp, cpp, go, java, javascript, rubypython, e swift.

CodeQL não retornando resultados

Esta seção fornece orientação para situações em que a análise CodeQL não produz resultados.

Passos de resolução de problemas:

  1. Verificar vulnerabilidades detetadas
    • Considere a possibilidade de que seu código possa realmente não ter vulnerabilidades. Se as vulnerabilidades forem esperadas, mas não detetadas, prossiga para verificar mais.
  2. Revisar a configuração do conjunto de consultas
    • Confirme o conjunto de consultas que está sendo usado e considere mudar para um pacote mais abrangente, se necessário.
    • Como alternativa, pacotes de consulta personalizados podem ser criados para análise personalizada.
  3. Ajustar permissões para visualização de resultados
    • Certifique-se de que as 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.

Tempo limite do CodeQL

Se a AdvancedSecurity-Codeql-Analyze@1 tarefa estiver sendo exibida This job was abandoned ... we lost contact with the agent e você estiver usando um agente da Microsoft hospedado, a tarefa estará atingindo 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 tarefas de verificação de código

A tarefa de compilação de verificação de código usa a identidade do pipeline para chamar as APIs REST de Segurança Avançada. Por padrão, pipelines no mesmo projeto têm acesso para carregar o arquivo SARIF gerado pela execução da análise CodeQL. Se essas permissões forem removidas da conta de serviço de compilação ou se você tiver uma configuração personalizada (por exemplo, um pipeline hospedado em um projeto diferente do repositório), deverá conceder essas permissões manualmente.

Passos de resolução de problemas:

  • Conceda Advanced Security: View alerts e Advanced Security: Manage and dismiss alerts permissão para a conta de serviço de compilação usada em seu pipeline, que para pipelines com escopo de projeto é [Project Name] Build Service ([Organization Name]), e para pipelines com escopo de coleta é Project Collection Build Service ([Organization Name]).

Instalação manual do pacote CodeQL para 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 para 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:

  1. Escolha o pacote de versão mais recente do CodeQL no GitHub.
  2. Baixe e descompacte o pacote para o seguinte diretório dentro do diretório da ferramenta do agente, normalmente localizado em _work/_tool: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Usando a versão atual do , o nome da v2.16.0pasta seria intitulado ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/. Saiba mais sobre o diretório de ferramentas do agente.
  3. Crie um arquivo vazio intitulado x64.complete dentro da ./CodeQL/0.0.0-[codeql-release-bundle-tag] pasta. Usando o exemplo anterior, o caminho do arquivo final para o x64.complete arquivo deve ser ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.