Skip to main content

Os resultados do SARIF excedem um ou mais limites

Saiba como resolver problemas quando um arquivo SARIF é rejeitado por code scanning porque um ou mais limites foram excedidos.

Sobre os limites de code scanning nos resultados do SARIF

# SARIF results exceed soft limits
  Locations for an alert exceeded limits
  Analysis SARIF file exceeded alert limits
  Rule tags in SARIF file exceed limits
  Alert in SARIF upload exceeded thread flow location limits
  Repository is at risk of exceeding the alert limit.

# SARIF results exceed hard limit
  Alert(s) in SARIF file exceeded thread flow location limits
  Analysis SARIF file rejected due to extension limits
  Analysis SARIF file rejected due to location limit
  Analysis SARIF file rejected due to rule tag limits
  Analysis SARIF file rejected due to result limits
  Analysis SARIF file rejected due to rule limits
  Analysis SARIF file rejected due to run limits
  All analysis uploads blocked due to alert limit

Code scanning define dois tipos de limites em campos em arquivos de resultados do SARIF.

  • Limites flexíveis que determinam quantos dados são armazenados e exibidos aos usuários.
  • Limites rígidos que determinam a quantidade máxima de dados aceitos para processamento.

Você pode ver esses erros para arquivos SARIF gerados por CodeQL ou por ferramentas de análise de terceiros.

Dados SARIFValores máximosLimites de truncamento de dados
Execuções por arquivo20Nenhum
Resultados por execução25,000Somente os 5 mil resultados principais serão incluídos, priorizados por severidade.
Regras por execução25,000Nenhum
Extensões de ferramenta por execução100Nenhum
Locais de fluxo de threads por resultado10.000Somente os mil principais locais de fluxo de threads serão incluídos, usando a priorização.
Local por resultado1,000Somente 100 locais serão incluídos.
Marcas por regra20Somente dez marcas serão incluídas.
Limite de alerta1.000.000Nenhum

Para obter informações sobre como validar o arquivo SARIF, confira "Suporte SARIF para a varredura de código".

Corrigir erros de limite flexível

Quando os limites flexíveis são excedidos, o code scanning mostra as informações de prioridade mais alta. Muitas vezes, você não precisa fazer nenhuma alteração na configuração do code scanning. À medida que sua equipe corrige alertas, o número de resultados relatados em cada execução será reduzido até que eles estejam dentro dos limites flexíveis e todos os resultados sejam exibidos. Como alternativa, você pode usar as abordagens descritas para erros de limite rígido.

Correção de "Arquivo SARIF de análise rejeitado devido a limites de resultados"

Há muitas considerações e possíveis soluções para reduzir o número de resultados incluídos em um arquivo de resultados do SARIF. Para obter diretrizes, confira "O arquivo de resultados SARIF é muito grande".

Correção de "Alertas no arquivo SARIF excederam os limites de localização do fluxo de threads"

Você pode configurar a análise para limitar o número de caminhos de fluxo de dados incluídos nos resultados. Por padrão, quatro caminhos de fluxo de dados são incluídos para cada resultado.

  • Configuração avançada do CodeQL para code scanning: atualize a etapa analyze para limitar o número de caminhos a um máximo de um ou zero.

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v2
      env: 
        CODEQL_ACTION_EXTRA_OPTIONS: '{"database":{"interpret-results":["--max-paths", 1]}}'
    
  • CodeQL CLI database analyze: atualize o comando de análise de banco de dados para incluir o sinalizador --max-paths=1. Para obter mais informações, confira "database analyze".

Observação: a configuração max-paths afeta os resultados de todas as consultas de fluxo de dados.

Correção de "Arquivo SARIF de análise rejeitado devido a limites de execução"

A abordagem mais simples é gerar um novo arquivo SARIF para cada execução e carregar cada arquivo separadamente. Você adiciona uma "categoria" a cada resultado e isso permite que o code scanning armazene e exiba os resultados adequadamente. Para obter mais informações, confira "Suporte SARIF para a varredura de código".

Correção de "Arquivo SARIF de análise rejeitado devido a limites de regra"

Há duas abordagens possíveis aqui.

  1. Reduza o número de regras usadas para analisar o código. Para obter mais informações, confira "Definir o conjunto de consultas a ser executado" e "Excluir uma consulta da análise" em "Arquivo de resultados do SARIF muito grande".
  2. Execute a análise duas vezes, cada vez com um conjunto diferente de regras, e carregue os dois arquivos de resultados no code scanning. Para obter mais informações, confira "Suporte SARIF para a varredura de código".

Correção de "Arquivo SARIF de análise rejeitado devido a limites de extensão"

A abordagem mais simples é criar um arquivo SARIF separado sempre que você executar a ferramenta e carregar cada arquivo separadamente. Talvez você também precise entrar em contato com o mantenedor da ferramenta. Para obter mais informações, confira "Suporte SARIF para a varredura de código".

A análise do CodeQL não deve gerar esse erro. Se você vir esse erro ao usar a ação CodeQL ou CodeQL CLI, entre em contato com Suporte do GitHub para nos informar. Para obter mais informações, confira "Entrando em contato com o suporte do GitHub".

Correção de "Arquivo SARIF de análise rejeitado devido a limites de localização"

A melhor maneira de resolver esse problema geralmente é identificar a consulta que relata muitos locais e excluí-la da análise. Para obter informações sobre como fazer isso, confira "O arquivo de resultados SARIF é muito grande".

Correção de "Arquivo SARIF de análise rejeitado devido a limites de tag de regra"

Você precisa atualizar o arquivo SARIF ou o gerador para que a matriz de tags relatadas para cada objetoreportingDescriptor seja menor que 10. Para obter mais informações, confira properties.tags[] em "Suporte SARIF para a varredura de código".

Corrigir "O repositório corre o risco de exceder o limite de alerta" e "Todos os uploads de análise bloqueados devido ao limite de alerta"

Esse limite é acionado por um repositório que produz mais alertas exclusivos do que deveria existir como parte de uma configuração code scanning que funciona bem. É possível que isso se deva à saída de uma ferramenta de outros fornecedores que está sendo usada e pode não ser um erro de configuração do usuário. Tanto o erro de configuração do usuário quanto o erro do fornecedor da ferramenta são possíveis causas.

Há algumas etapas para corrigir esse problema.

  1. Examine os arquivos SARIF que você está produzindo para identificar a causa dos alertas code scanning classificados como distintos entre as execuções de uma ferramenta. Isso normalmente ocorre por um dos seguintes motivos:
    • A propriedade SARIF artifactLocation.uri (caminho do arquivo na interface do usuário de alerta code scanning) não é determinística devido à inclusão de diretórios temporários ou nomes de arquivo gerados.
    • A ferramenta usada produz nomes ou valores artifactLocation object uri property de regras SARIF instáveis, que geralmente são o resultado do uso de hashes (de commits git ou SHAs de imagem do docker, por exemplo) ou outras fontes de dados que mudam entre execuções ou ambientes.
  2. Após identificar a origem do problema, você deverá atualizar sua configuração de acordo e entrar em contato com o fornecedor da ferramenta se ela for a origem dos resultados instáveis do SARIF.
  3. Pare de carregar os resultados da varredura de código para qualquer ferramenta de terceiros que produza saída não determinística até que eles tenham sido corrigidos pelo fornecedor da ferramenta.

Etapas adicionais para "Todos os uploads de análise bloqueados devido ao limite de alerta"

Além de corrigir a configuração da varredura de código e remover ou corrigir a saída de ferramentas de terceiros, você precisará entrar em contato com seu administrador do site para ajudar você a excluir os alertas de todas as configurações ofensivas.

Não há um método de autoatendimento para excluir alertas no momento. Portanto, é necessário entrar em contato com o suporte ao cliente para que a digitalização de código possa ser reativada.