Skip to main content

O arquivo de resultados SARIF é muito grande

Não é possível carregar um arquivo de resultados SARIF com mais de 10 MB para code scanning. Explore maneiras de gerar um arquivo menor contendo os resultados de maior impacto.

Sobre esse erro

SARIF file is too large
SARIF results file is too large
SARIF upload is rejected (bigger than allowed size for zip archive)
SARIF ZIP upload is too large
A fatal error occurred: SARIF file is too large
413: Payload Too Large

Um desses erros será relatado se um processo tentar carregar um arquivo SARIF maior que o tamanho máximo de 10 MB. Code scanning não aceita arquivos acima desse tamanho. Há várias maneiras diferentes de reduzir o número de resultados gerados para upload para code scanning.

Você pode ver esse erro para arquivos SARIF gerados por CodeQL ou por ferramentas de análise de terceiros. Para saber mais sobre os limites de uploads, confira code scanning, "Suporte SARIF para a varredura de código".

Confirmar a causa do erro

Há muitas causas possíveis de arquivos de resultados SARIF muito grandes.

Compactação de arquivos SARIF

Confira o arquivo de resultados que foi rejeitado por code scanning para ver se:

  • o arquivo SARIF foi compactado usando gzip
  • o arquivo compactado é menor que 10 MB

Se o arquivo não tiver sido compactado usando gzip, tente compactá-lo antes de executar novamente o processo de upload. Se o arquivo compactado ainda for muito grande, você precisará configurar a análise para gerar um conjunto menor de resultados.

Quantidade de código analisada

Se você tiver muitos resultados, deverá configurar a análise para analisar apenas o código mais importante.

  • Para idiomas interpretados, verifique se o repositório contém muitos testes, demonstrações ou dependências de fornecedores em que corrigir alertas é uma prioridade mais baixa. Tente excluir esse código da análise. Para obter mais informações, confira "Como excluir código da análise para idiomas interpretados".
  • Para linguagens compiladas, verifique se o processo de build gera mais de uma variante do código (por exemplo, destinos para vários ambientes operacionais ou arquiteturas). Tente analisar apenas uma variante do código inicialmente. Para obter mais informações, confira "Otimizar o comando de build".

Número de consultas executadas

Se você ainda tiver muitos resultados, confira quantas consultas está usando para analisar o código. Tente executar menos consultas. Você pode reintroduzir consultas adicionais quando os alertas iniciais forem corrigidos. Por exemplo, para a análise de CodeQL, você pode executar apenas o conjunto padrão de consultas. Para obter mais informações, confira "Como personalizar sua configuração avançada para a verificação de código".

Número de resultados encontrados por consultas

Às vezes, uma única consulta relata muitos resultados porque a base de código tem um estilo de codificação específico ou porque a análise não entende uma biblioteca específica. Você pode examinar o arquivo de resultados em um visualizador SARIF para ver a distribuição dos resultados. Por exemplo, https://microsoft.github.io/sarif-web-component/.

  • Verifique se os resultados são dominados por alertas identificados por uma única consulta. Tente excluir essa consulta da análise. Você pode reintroduzi-la quando outros alertas forem corrigidos. Para obter mais informações sobre a configuração de consulta do CodeQL, confira "Excluir uma consulta da análise".
  • Verifique se há consultas de fluxo de dados com muitos caminhos profundos. Tente omitir caminhos de fluxo de dados da saída. Para obter mais informações sobre a configuração de análise do CodeQL, confira "Omitir caminhos de fluxo de dados da saída".

Corrigir o problema

As opções a seguir estão listadas por ordem de complexidade. Você precisa revisar a configuração para reduzir o número de resultados para um tamanho gerenciável. Depois de corrigir todos esses alertas, você pode atualizar a configuração para expandir a análise de modo a abranger mais código ou executar mais consultas.

Excluir o código da análise para idiomas interpretados

Excluir o código de não produção da análise é uma maneira simples de reduzir o tamanho do arquivo de resultados.

Otimizar o comando de build

Usar um comando de build que compila apenas uma variante é uma maneira simples de reduzir o tamanho do arquivo de resultados.

  • Configuração avançada de CodeQL para code scanning: atualize o arquivo do fluxo de trabalho para especificar o comando de build escolhido. Para obter mais informações, confira "Verificação de código do CodeQL para linguagens compiladas".
  • CodeQL CLI database create: especifique o comando de build escolhido chamando o comando database create com a opção --command ou definindo o comando de build em um arquivo de configuração YAML para verificação de código e chamando o arquivo usando a opção --codescanning-config. Para obter mais informações, confira "Como preparar seu código para a análise do CodeQL".

Definir o conjunto de consultas a ser executado

Talvez você já esteja executando apenas as consultas de segurança padrão, mas vale a pena verificar.

  • Configuração avançada CodeQL para code scanning: confira o arquivo do fluxo de trabalho para a palavra-chave queries. Caso não esteja presente, somente o conjunto de consultas padrão será executado. Se estiver presente, ele definirá quais consultas serão executadas. Tente comentar esta linha do arquivo de fluxo de trabalho. Para obter mais informações, confira "Como personalizar sua configuração avançada para a verificação de código".
  • CodeQL CLI database analyze: marque o comando de análise de banco de dados para quaisquer caminhos que especifiquem consultas, conjuntos de consultas ou pacotes de consultas. Caso não haja nenhum, somente o conjunto de consultas padrão será executado. Caso haja algum, ele definirá quais consultas executar, você pode tentar removê-lo da chamada. Para obter mais informações, confira "Como analisar o código com as consultas CodeQL".

Excluir uma consulta da análise

Se os resultados forem dominados pelos resultados de uma única regra, a exclusão da regra da análise poderá ser a melhor solução.

Como alternativa, você pode usar uma ferramenta como a ação filter-sarif para reescrever o arquivo SARIF para excluir detecções específicas por meio de um padrão de exclusão.

Omitir caminhos de fluxo de dados da saída

Se houver muitos caminhos de código profundo realçados nos resultados SARIF, você poderá reduzir o número de caminhos relatados para cada alerta.

  • 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@v3
      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.

Leitura adicional