Skip to main content

El archivo de resultados SARIF es demasiado grande

No puedes cargar un archivo de resultados SARIF de más de 10 MB en code scanning. Explora formas de generar un archivo más pequeño que contenga los resultados de mayor impacto.

Acerca de este error

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

Se notifica uno de estos errores si un proceso intenta cargar un archivo SARIF que es mayor que el tamaño máximo de 10 MB. Code scanning no acepta archivos con un tamaño superior. Hay varias formas de reducir el número de resultados generados para cargarlos en code scanning.

Este error puede aparecer en los archivos SARIF generados por CodeQL o por herramientas de análisis de terceros. Para más información sobre los límites de carga, consulta code scanning y consulta Soporte de SARIF para escaneo de código.

Confirmación de la causa del error

Hay muchas causas posibles de archivos de resultados SARIF muy grandes.

Compresión de archivos SARIF

Echa un vistazo al archivo de resultados que code scanning rechazó para ver si:

  • el archivo SARIF se comprimió mediante gzip
  • el archivo comprimido tiene menos de 10 MB.

Si el archivo no se comprimió mediante gzip, intente comprimir el archivo antes de volver a ejecutar el proceso de carga. Si el archivo comprimido sigue siendo demasiado grande, debes configurar el análisis para que genere un conjunto de resultados más pequeño.

Cantidad de código analizado

Si tienes demasiados resultados, debes configurar el análisis para que analice solo el código más importante.

  • En el caso de los lenguajes interpretados, compruebe si el repositorio contiene muchas pruebas, demostraciones o dependencias de proveedor en las que la corrección de alertas es una prioridad más baja. Intenta excluir este código del análisis. Para más información, consulta Exclusión del código del análisis para lenguajes interpretados.
  • En el caso de los lenguajes compilados, comprueba si el proceso de compilación genera más de una variante del código (por ejemplo, destinos para varios entornos operativos o arquitecturas). Intenta analizar solo una variante del código inicialmente. Para más información, consulta Optimización del comando de compilación.

Número de consultas ejecutadas

Si sigues teniendo demasiados resultados, comprueba cuántas consultas estás usando para analizar el código. Prueba a ejecutar menos consultas. Puedes volver a introducir consultas adicionales cuando se hayan corregido las alertas iniciales. Por ejemplo, para el análisis de CodeQL podrías ejecutar solo el conjunto predeterminado de consultas. Para más información, consulta Personalización de la configuración avanzada para el examen de código.

Número de resultados encontrados por consultas

A veces, una sola consulta notifica muchos resultados porque el código base tiene un estilo de codificación específico o porque el análisis no entiende una biblioteca determinada. Puede revisar el archivo de resultados en un visor SARIF para ver la distribución de los resultados. Por ejemplo, https://microsoft.github.io/sarif-web-component/.

  • Comprueba si los resultados están dominados por las alertas que identifica una sola consulta. Intenta excluir esa consulta del análisis. Puedes volver a introducirla cuando se corrijan otras alertas. Para más información sobre la configuración de consultas de CodeQL, consulta Exclusión de una consulta del análisis.
  • Comprueba si hay consultas de flujo de datos con muchas rutas de acceso profundas. Intenta omitir las rutas de acceso del flujo de datos de la salida. Para más información sobre la configuración del análisis de CodeQL, consulta Omitir las rutas de acceso del flujo de datos de la salida.

Solución del problema

Las siguientes opciones aparecen por orden de complejidad. Debes revisar la configuración para reducir el número de resultados a un tamaño manejable. Una vez que hayas corregido todas esas alertas, puedes actualizar la configuración para expandir el análisis para que abarque más código o ejecutar más consultas.

Exclusión del código del análisis para lenguajes interpretados

Excluir el código que no es de producción del análisis es una manera sencilla de reducir el tamaño del archivo de resultados.

Optimización del comando de compilación

El uso de un comando de compilación que compila solo una variante es una manera sencilla de reducir el tamaño del archivo de resultados.

  • Configuración avanzada de CodeQL para code scanning: actualiza el archivo del flujo de trabajo para especificar el comando de compilación elegido. Para más información, consulta Análisis de código de CodeQL para lenguajes compilados.
  • CodeQL CLIdatabase create: especifica el comando de compilación elegido mediante una llamada al comando database create con la opción --command, o definiendo el comando de compilación en un archivo de configuración YAML para el análisis de código y una llamada al archivo mediante la opción --codescanning-config. Para más información, consulta Preparación del código para el análisis de CodeQL.

Definición del conjunto de consultas que se va a ejecutar

Es posible que ya estés ejecutando solo las consultas de seguridad predeterminadas, pero vale la pena comprobarlo.

  • Configuración avanzada de CodeQL para code scanning: comprueba el archivo de flujo de trabajo de la palabra clave queries. Si no está presente, solo se ejecuta el conjunto de consultas predeterminado. Si está presente, define las consultas que se van a ejecutar. Prueba a comentar esta línea del archivo de flujo de trabajo. Para más información, consulta Personalización de la configuración avanzada para el examen de código.
  • CodeQL CLI database analyze: comprueba si el comando de análisis de la base de datos contiene rutas de acceso que especifiquen consultas, conjuntos o paquetes de consultas. Si no hay ninguno, solo se ejecutará el conjunto de consultas predeterminado. Si hay alguno, definen qué consultas se van a ejecutar, puedes intentar quitarlas de la llamada. Para más información, consulta Análisis del código con consultas de CodeQL.

Exclusión de una consulta del análisis

Si los resultados están dominados por los resultados de una sola regla, excluir la regla del análisis puede ser la mejor solución.

Como alternativa, puede usar una herramienta como la acción filter-sarif para volver a escribir el archivo SARIF para que excluya detecciones específicas mediante un patrón de exclusión.

Omitir las rutas de acceso del flujo de datos de la salida

Si hay muchas rutas de acceso de código profundas resaltadas en los resultados de SARIF, puedes reducir el número de rutas de acceso notificadas para cada alerta.

  • Configuración avanzada de CodeQL para code scanning: actualice el paso analyze para limitar el número de rutas de acceso a un máximo de uno o cero.

    - 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: actualice el comando de análisis de la base de datos para incluir la marca --max-paths=1. Para obtener más información, vea «database analyze».

Note

El valor max-paths afecta a los resultados de todas las consultas de flujo de datos.

Información adicional