Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Geralmente, 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.
Pré-requisitos
| Categoria | Requisitos |
|---|---|
| Permissões | – Para exibir um resumo de todos os alertas de um repositório: permissões de colaborador para o repositório. – Para ignorar alertas na Segurança Avançada: permissões de administrador do projeto . – Para gerenciar permissões em Segurança Avançada: Membro do grupo Administradores de Coleção de Projetos ou Segurança Avançada: gerenciar a permissão de configurações definida 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' 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-IniteAdvancedSecurity-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 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 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,rubyeswift.
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 seu código não ter nenhuma vulnerabilidade. Se vulnerabilidades forem esperadas, mas não detectadas, prossiga para fazer outras verificações.
- Revisar a configuração do pacote 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 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 AdvancedSecurity-Codeql-Analyze@1 tarefa estiver sendo This job was abandoned ... we lost contact with the agent exibida e você estiver usando um agente da Microsoft hospedado, 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 você tiver uma configuração personalizada, por exemplo, um pipeline hospedado em um projeto diferente do repositório, conceda essas permissões manualmente.
Etapas de solução de problemas:
- Conceda as permissões
Advanced Security: View alertseAdvanced 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]).
Publicação dos resultados da análise de código no repositório não desejado
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 do pipeline em vez do repositório de código-fonte.
Para habilitar o roteamento dos resultados esperados, defina a variável de ambiente do pipeline advancedsecurity.publish.repository.infer: true para inferir o repositório a ser publicado a partir do repositório no 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 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.23.5, o nome da pasta será./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 pasta./CodeQL/0.0.0-[codeql-release-bundle-tag]. Usando o exemplo anterior, o caminho do arquivo final até o arquivox64.completedeve ser./CodeQL/0.0.0-v2.23.5/x64.complete.
Como posso definir explicitamente o repositório para o qual publicar alertas de verificação de código?
- Use a variável
advancedsecurity.publish.repository.infer: truede ambiente de pipeline para inferir o repositório a ser publicado do repositório no diretório de trabalho. - Como outra opção, se você não fizer check-out explicitamente 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, verifique as notas de versão.