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 "Personalizando a configuração avançada para varredura 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.
- CodeQL configuração avançada para code scanning: use
paths
epaths-ignore
no arquivo de fluxo de trabalho para especificar qual código analisar. Para obter mais informações, confira "Personalizando a configuração avançada para varredura de código". - CodeQL CLI
database create
: crie um arquivo de configuração YAML para verificação de código usando a mesma sintaxe para definir qual código analisar. Atualize o comandodatabase create
para chamar esse arquivo de configuração usando a opção--codescanning-config
. Para obter mais informações, confira "Personalizando a configuração avançada para varredura de código".
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 comandodatabase 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 "Personalizando a configuração avançada para varredura 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.
- Configuração avançada de CodeQL para code scanning: use a palavra-chave
query-filters
para excluir uma ou mais consultas da análise. Para obter mais informações, confira "Personalizando a configuração avançada para varredura de código". - CodeQL CLI
database analyze
: atualize o comando de análise do banco de dados para excluir uma ou mais consultas da análise. Para obter mais informações, confira "Como analisar o código com as consultas CodeQL".
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.