Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
Pré-requisitos
| Categoria | Requerimentos |
|---|---|
| Permissões | - Para visualizar um resumo de todos os alertas para um repositório: Colaborador permissões para o repositório. - Para descartar alertas em Segurança Avançada: permissões de administrador do projeto. - Para gerir permissões em Segurança Avançada: Membro do grupo Administradores de Coleção de Projetos ou Segurança Avançada: gerir configurações permissões definidas como Permitir. |
Para obter mais informações sobre permissões de Segurança Avançada, consulte Gerenciar permissões de Segurança Avançada.
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:
- 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-Inittarefas e asAdvancedSecurity-Codeql-Analyzetarefas. 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.
- Para linguagens compiladas, verifique se o processo de compilação está compilando código e está acontecendo entre as
- 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.
- 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:
- Consulte as diretrizes de instalação ou scripts de configuração fornecidos em Configurar a Segurança Avançada do GitHub para Azure DevOps.
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,pythonruby, eswift.
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:
- Verificar vulnerabilidades detetadas
- Considere a possibilidade de que seu código não tenha vulnerabilidades. Se as vulnerabilidades forem esperadas, mas não detetadas, prossiga para verificar mais.
- 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.
- 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, conceda essas permissões manualmente.
Passos de resolução de problemas:
- Conceda
Advanced Security: View alertseAdvanced Security: Manage and dismiss alertspermissã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]).
Resultados de publicação de varredura de código no repositório não pretendido
Se você tiver uma definição de pipeline alojada em um repositório e o código-fonte a ser verificado pelo GitHub Advanced Security estiver em outro, os resultados poderão ser processados e enviados para o repositório incorreto, publicando no repositório que contém a definição de pipeline em vez do repositório de código-fonte.
Para habilitar o encaminhamento de resultados pretendidos, defina a variável de ambiente do pipeline advancedsecurity.publish.repository.infer: true para inferir o repositório a publicar do diretório de trabalho.
trigger:
- main
resources:
repositories:
# PipelineRepo: The repository containing the pipeline definition.
# This is optional and only needed if you plan to reference files or scripts from this repo.
- repository: PipelineRepo
type: git
name: DevOpsPipelineRepo
ref: refs/heads/main
trigger:
- main
# SourceRepo: The repository where scanning and publishing will occur.
- repository: SourceRepo
type: git
name: code-to-analyze-repo
ref: refs/heads/main
trigger:
- main
jobs:
- job: "CodeQLScan"
displayName: "CodeQL Scanning with Inferred Publishing"
variables:
# Enable repository inference
advancedsecurity.publish.repository.infer: true
steps:
# Checkout the SourceRepo
- checkout: SourceRepo
# Initialize CodeQL
- task: AdvancedSecurity-Codeql-Init@1
displayName: "Initialize CodeQL"
inputs:
languages: "python,javascript" # Adjust based on repository languages
# Perform CodeQL analysis
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: "Analyze Code with CodeQL"
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:
- Escolha o pacote de versão mais recente do CodeQL no GitHub.
- 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 dav2.23.5pasta seria intitulado./CodeQL/0.0.0-v2.23.5/x64/. Saiba mais sobre o diretório de ferramentas do agente. - Crie um arquivo vazio intitulado
x64.completedentro da./CodeQL/0.0.0-[codeql-release-bundle-tag]pasta. Usando o exemplo anterior, o caminho do arquivo final para ox64.completearquivo deve ser./CodeQL/0.0.0-v2.23.5/x64.complete.
Como posso definir explicitamente o repositório para publicar alertas de varredura de código?
- Use a variável
advancedsecurity.publish.repository.infer: truede ambiente de pipeline para inferir o repositório a ser publicado a partir do repositório no diretório de trabalho. - Como outra opção, se você não fizer check-out explícito de um repositório ou usar um alias para fazer check-out do repositório, utilize a variável
advancedsecurity.publish.repository: $[ convertToJson(resources.repositories['YourRepositoryAlias']) ]
Para obter mais informações, consulte as notas de versão.