Hay varios acercamientos que puede intentar para reducir el tiempo de compilación. en un análisis code scanning.
Incrementar la memoria o los núcleos
Si usa ejecutores hospedados en GitHub para el análisis de code scanning, podrías considerar la posibilidad de actualizar a ejecutores más grandes. Estos son ejecutores hospedados 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, consulta "Uso de ejecutores más grandes" y "Configuración de ejecutores más grandes para la configuración predeterminada".
Si utilizas ejecutores auto-hospedados para ejecutar el análisis de code scanning, puedes incrementar la memoria o la cantidad de núcleos en estos ejecutores. Si estás usando CodeQL con una configuración avanzada para tu análisis, puedes revisar los recursos de hardware recomendados para CodeQL y así asegurarte de que los ejecutores autohospedados cumplen esos requisitos. Para obtener más información, vea «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 obtener más información, vea «Ejecución de variaciones de trabajos en un flujo de trabajo».
El Flujo de trabajo de análisis de CodeQL predeterminado utiliza una matriz de lenguajes, que hace que el análisis de cada uno de ellos se ejecute en paralelo. Sin embargo, si usa CodeQL con configuración avanzada y ha especificado los idiomas que desea analizar directamente en el paso "Inicializar CodeQL", el análisis de cada idioma se realizará 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 "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 con configuración avanzada, puede reducir el tiempo de análisis reduciendo la cantidad de código que se analiza 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.
Para los lenguajes compilados como Java, Kotlin, Go, C, C++, and C#, CodeQL analiza todo el código que se haya compilado 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 obtener más información, vea «Sintaxis del flujo de trabajo para Acciones de GitHub».
En el caso de los lenguajes como JavaScript, Python y TypeScript que analiza CodeQL sin compilar el código fuente, puede especificar opciones adicionales de configuración para limitar la cantidad de código que se va a analizar. Para obtener más información, vea «Personalización de la configuración avanzada para el examen de código».
Si divide su análisis CodeQL en varios flujos de trabajo, aun así le recomendamos que al menos tenga uno que se ejecute en una schedule
que analice todo el código de su repositorio. Ya que CodeQL analiza los flujos de datos entre componentes, algunos comportamientos de seguridad complejos podrían detectarse únicamente 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 usa CodeQL para el análisis de code scanning, puede configurarlo con un flujo de trabajo de configuración avanzada, pero no en la configuración predeterminada. Para obtener más información, vea «Entender las GitHub Actions».
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 has optimizado la compilación de la base de datos de CodeQL y el proceso sigue siendo demasiado largo, podrías reducir la cantidad de consultas que ejecutas. El conjunto de consultas predeterminado se ejecuta automáticamente: proporciona el mejor riesgo posible entre la calidad y la velocidad.
Si usa CodeQL con configuración avanzada, puede ejecutar 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 obtener más información, vea «Personalización de la configuración avanzada para el examen de código».