Solucionar problemas de resultados do CodeQL
Esta unidade fornece dicas para otimizar e solucionar problemas quando você estiver trabalhando com CodeQL e verificação de código.
Otimizar runtimes de análise do CodeQL
Há vários motivos pelos quais sua análise do CodeQL pode levar muito tempo para ser concluída:
- Se você usar executores auto-hospedados para análise de CodeQL, poderá aumentar a memória ou o número de núcleos.
- Problemas podem ocorrer quando um repositório contém vários idiomas. Você pode modificar seu fluxo de trabalho para usar uma matriz que acelera a análise de vários idiomas. A análise de cada idioma é executada em paralelo com o fluxo de trabalho de análise codeql padrão. Talvez seja necessário configurar fluxos de trabalho avançados da mesma forma se eles estiverem configurados para executar a inicialização e a análise do idioma sequencialmente.
- A quantidade de código que você está analisando pode causar longos tempos de execução. O tempo de análise normalmente é proporcional à quantidade de código que está sendo analisada. Você pode reduzir o tamanho do código excluindo o código de teste ou dividindo o código em vários fluxos de trabalho para analisar apenas um subconjunto com cada verificação.
- Talvez você queira iniciar a análise no evento
schedulesomente se sua análise estiver muito lenta durante os eventospushoupull_request.
Otimizando consultas CodeQL
Alguns problemas de desempenho podem surgir de consultas personalizadas. Você pode encontrar problemas comuns e como solucioná-los na documentação do CodeQL sobre como solucionar problemas de desempenho de consulta.
Aqui estão pontos importantes para ter em mente enquanto você está trabalhando com o CodeQL e a linguagem de consulta QL:
- As classes e os predicados do CodeQL são avaliados para tabelas de banco de dados. Predicados grandes geram tabelas grandes com muitas linhas, portanto, são caros de calcular.
- A linguagem QL é implementada por meio de operações de banco de dados padrão e álgebra relacional, como junção, projeção e união.
- As consultas são avaliadas de baixo para cima, o que significa que um predicado não é avaliado até que todos os predicados dos quais ele depende sejam avaliados.
Artefatos de depuração
Você pode obter artefatos para ajudá-lo a resolver problemas com a análise de código CodeQL. Modifique a init etapa do arquivo de fluxo de trabalho do CodeQL e defina debug: true. Os artefatos de depuração são carregados no fluxo de trabalho executado como um artefato chamado debug-artifacts. Os dados contêm os logs CodeQL, bancos de dados CodeQL, e todos os arquivos SARIF que o fluxo de trabalho gera.
Solucionar problemas da extensão CodeQL para VS Code
Os arquivos de log da extensão vs code têm informações detalhadas para ajudá-lo a solucionar problemas.
Mensagens de progresso e erro aparecem como notificações no canto inferior direito do workspace. Você pode usar a lista suspensa Log de Extensões do CodeQL para selecionar os logs necessários.
Mensagens de erro comuns
Para solucionar problemas do fluxo de trabalho do CodeQL, familiarize-se com as seguintes mensagens de erro comuns.
Erro: "Erro de servidor"
Se uma execução de fluxo de trabalho para verificação de código falhar devido a um erro de servidor, um problema de comunicação transitória pode ser a causa. Tente executar o fluxo de trabalho novamente. Se o problema persistir, entre em contato com o suporte do GitHub.
Erro: "Sem disco" ou "Sem memória"
O CodeQL pode ficar sem disco ou memória no executor para projetos muito grandes. Se for um executor do GitHub Actions hospedado, entre em contato com o suporte do GitHub para investigar o problema. Se for um executor auto-hospedado, talvez seja necessário fazer ajustes nas especificações do servidor. Para obter mais informações, consulte a documentação do CodeQL sobre o hardware recomendado para executar o CodeQL.
Erro: 403 "Recurso não acessível por integração" ao usar o Dependabot
Dependabot é considerado não confiável quando dispara uma execução de fluxo de trabalho. O fluxo de trabalho é executado com escopos somente leitura. O upload de resultados de verificação de código para um branch geralmente requer o security_events: write scope. No entanto, a verificação de código sempre permite o carregamento de resultados quando o pull_request evento dispara a execução da ação. Para branches Dependabot, recomendamos que você use o evento pull_request em vez do evento push.
Uma abordagem simples é executar envios por push para o branch padrão e as outras ramificações de execução longa importante, juntamente com os pull requests abertas nesse conjunto de branches.
Veja um exemplo:
on:
push:
branches:
- main
pull_request:
branches:
- main
Erro: "Upload do SARIF rejeitado devido à configuração padrão"
Os uploads de SARIF são bloqueados quando a configuração padrão do CodeQL está habilitada. Esse erro ocorre quando um processo tenta carregar um arquivo SARIF que contém os resultados da análise codeQL em um repositório com a configuração padrão habilitada. O erro também ocorrerá se o upload for feito por meio da API REST e da CLI do CodeQL. Esse bloco está em vigor para reduzir o potencial de confusão do usuário quando vários sistemas geram alertas semelhantes de verificação de código.
Esse erro ocorre apenas para arquivos SARIF que contêm resultados que você cria usando CodeQL. Para corrigir esse erro, desabilite o CodeQL no repositório e tente carregar novamente o arquivo SARIF.
Leitura adicional
Para obter mais informações sobre solução de problemas, consulte a documentação do CodeQL para solucionar problemas de verificação de código.