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 obtener más información, vea «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.
- Configuración avanzada de CodeQL para code scanning: usa
paths
ypaths-ignore
en el archivo del flujo de trabajo para especificar qué código analizar. Para obtener más información, vea «Personalización de la configuración avanzada para el examen de código». - CodeQL CLI
database create
: crea un archivo de configuración YAML para el análisis de código mediante la misma sintaxis para definir qué código analizar. Actualiza el comandodatabase create
para llamar a este archivo de configuración mediante la opción--codescanning-config
. Para obtener más información, vea «Personalización de la configuración avanzada para el examen de código».
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 obtener más información, vea «Análisis de código de CodeQL para lenguajes compilados».
- CodeQL CLI
database create
: especifica el comando de compilación elegido mediante una llamada al comandodatabase 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 obtener más información, vea «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 obtener más información, vea «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 obtener más información, vea «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.
- Configuración avanzada de CodeQL para code scanning: usa la palabra clave
query-filters
para excluir una o varias consultas del análisis. Para obtener más información, vea «Personalización de la configuración avanzada para el examen de código». - CodeQL CLI
database analyze
: actualiza el comando de análisis de la base de datos para que excluya una o varias consultas del análisis. Para obtener más información, vea «Análisis del código con consultas de CodeQL».
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@v2 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».
Nota: El valor max-paths
afecta a los resultados de todas las consultas de flujo de datos.