Skip to main content

El análisis de examen de código tarda demasiado tiempo

Puede ajustar la code scanning configuración para minimizar el tiempo de análisis.

Hay varios enfoques que puede probar para reducir el tiempo de compilación en un análisis de code scanning.

Incrementar la memoria o los núcleos

Si está usando ejecutores hospedados de GitHub para su análisis de code scanning, considere actualizar a ejecutores más grandes. Se trata de ejecutores alojados en GitHub con más RAM, CPU y espacio en disco que los ejecutores estándar. Para obtener más información sobre ejecutores más grandes y code scanning, vea Uso de ejecutores más grandes y Configuración de ejecutores más grandes para la configuración predeterminada.

Si usa ejecutores autohospedados para ejecutar code scanning análisis, puede aumentar la memoria o el número de núcleos en esos ejecutores. Si utiliza CodeQL con una configuración avanzada para su análisis, revise los recursos de hardware recomendados para CodeQL a fin de asegurarse de que los ejecutores autohospedados cumplan esos requisitos. Para más información, consulta Recursos de hardware recomendados para ejecutar CodeQL.

Utilizar matrices de compilación para paralelizar el análisis

Para acelerar el análisis de flujos de trabajo que implican varios trabajos, puede modificar el flujo de trabajo para usar una matriz. Para más información, consulta Ejecución de variaciones de trabajos en un flujo de trabajo.

El valor predeterminado Flujo de trabajo de análisis de CodeQL usa una matriz de lenguajes, lo que hace que el análisis de cada idioma se ejecute en paralelo. Sin embargo, si usa CodeQL con la configuración avanzada y ha especificado los idiomas que desea analizar directamente en el paso "Inicializar codeQL", el análisis de cada idioma se producirá secuencialmente. En esta configuración, puede acelerar el análisis modificando el flujo de trabajo de configuración avanzada para usar una matriz. Para obtener un ejemplo, consulte el extracto de flujo de trabajo de Algunos lenguajes no se analizaron con la configuración avanzada de CodeQL.

Reducir la cantidad de código que se está analizando en un solo flujo de trabajo

El tiempo de análisis suele ser proporcional a la cantidad de código que se analiza. Si usa CodeQL la configuración avanzada, puede reducir el tiempo de análisis al reducir la cantidad de código que se va a analizar a la vez. Por ejemplo, al excluir el código de prueba o dividir el análisis en varios flujos de trabajo que analizan solo un subconjunto del código a la vez.

Al usar build-mode: autobuild o build-mode: manual, para lenguajes compilados como Java, Kotlin, Go, C, C++y C#, CodeQL analiza todo el código que se creó durante la ejecución del flujo de trabajo. Para limitar la cantidad de código que se analiza, compile únicamente el código que quiera analizar; para ello, especifique pasos de compilación propios en un bloque run. Puede combinar la especificación de los pasos de compilación propios con el uso de los filtros paths o paths-ignore en los eventos pull_request y push para asegurarse de que el flujo de trabajo solo se ejecuta cuando se cambia código específico. Para más información, consulta Sintaxis del flujo de trabajo para Acciones de GitHub.

Para lenguajes como JavaScript, Python y TypeScript, que CodeQL analiza sin compilar el código fuente o para un lenguaje compilado mediante build-mode: none, puede especificar opciones de configuración adicionales para limitar la cantidad de código que se va a analizar. Para más información, consulta Opciones de configuración de flujo de trabajo para el examen de código.

Si divide su análisis de CodeQL en varios flujos de trabajo, seguimos recomendando que tenga al menos un flujo de trabajo que se ejecute en un schedule y que analice todo el código de su repositorio. Dado que CodeQL analiza los flujos de datos entre componentes, es posible que algunos comportamientos de seguridad complejos solo se detecten en una compilación completa.

Ejecución durante un evento schedule

Es posible que el análisis sea lento durante push o pull_request eventos. Si es así, puede establecer el análisis para que solo se desencadene en el evento schedule. Si utiliza CodeQL para su análisis de code scanning, puede configurarlo mediante un flujo de trabajo de configuración avanzada, pero no en la configuración predeterminada. Para más información, consulta Descripción de Acciones de GitHub.

Comprobación de las consultas o reglas que ejecuta el flujo de trabajo

Otra opción para reducir el tiempo de análisis es ejecutar solo las consultas o reglas que considere críticos en los flujos de trabajo que se ejecutan en las solicitudes de incorporación de cambios. Si usa una herramienta de terceros para code scanning, debe consultar la documentación de la herramienta.

En CodeQL, hay dos conjuntos de consultas principales disponibles para cada idioma. Si ha optimizado la compilación de la CodeQL base de datos y el proceso sigue siendo demasiado largo, puede reducir el número de consultas que se ejecutan. El conjunto de consultas predeterminado se ejecuta automáticamente: proporciona el mejor riesgo posible entre la calidad y la velocidad.

Si usa CodeQL la configuración avanzada, es posible que ejecute consultas adicionales o conjuntos de consultas además de las consultas predeterminadas. Compruebe si el flujo de trabajo define una consulta adicional o un conjunto de consultas para ejecutarse con el elemento queries. Puedes probar el inhabilitar la consulta o suite de consultas adicionales. Para más información, consulta Opciones de configuración de flujo de trabajo para el examen de código.