Skip to main content

Code scanning analysis takes too long

You can fine tune your code scanning configuration to minimize analysis time.

Nota:

En este artículo, se describen las características disponibles con la versión de la acción CodeQL y el paquete CodeQL CLI asociado incluido en el lanzamiento inicial de esta versión de GitHub Enterprise Server. Si en la empresa se usa una versión más reciente de la acción CodeQL, consulta la versión de GitHub Enterprise Cloud de este artículo para obtener información sobre las características más recientes. Para obtener información sobre el uso de la última versión, consulta Configuración la digitalización de código para el dispositivo.

There are several approaches you can try to reduce the build time in a code scanning analysis.

Increase the memory or cores

You can increase the memory or disk space available on your runners. If you're using CodeQL for your code scanning analysis, you can review the recommended hardware resources for CodeQL to make sure your runners meet those requirements. For more information, see Recursos de hardware recomendados para ejecutar CodeQL.

Use matrix builds to parallelize the analysis

To speed up analysis of workflows that involve multiple jobs, you can modify your workflow to use a matrix. For more information, see Ejecución de variaciones de trabajos en un flujo de trabajo.

The default Flujo de trabajo de análisis de CodeQL uses a matrix of languages, which causes the analysis of each language to run in parallel. However, if you're using CodeQL with advanced setup and you have specified the languages you want to analyze directly in the "Initialize CodeQL" step, analysis of each language will happen sequentially. In this configuration, you can speed up your analysis by modifying your advanced setup workflow to use a matrix. For an example, see the workflow extract in Some languages were not analyzed with CodeQL advanced setup.

Reduce the amount of code being analyzed in a single workflow

Analysis time is typically proportional to the amount of code being analyzed. If you're using CodeQL with advanced setup, you can reduce the analysis time by reducing the amount of code being analyzed at once. For example, by excluding test code, or breaking analysis into multiple workflows that analyze only a subset of your code at a time.

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 GitHub Actions.

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 Personalización de la configuración avanzada para el examen de código.

If you split your CodeQL analysis into multiple workflows, we still recommend that you have at least one workflow which runs on a schedule which analyzes all of the code in your repository. Because CodeQL analyzes data flows between components, some complex security behaviors may only be detected on a complete build.

Run only during a schedule event

You may find that your analysis is slow during push or pull_request events. If so, you can set your analysis to only trigger on the schedule event. If you're using CodeQL for your code scanning analysis, you can configure this with an advanced setup workflow, but not in default setup. For more information, see Entender las GitHub Actions.

Check which queries or rules the workflow runs

Another option to reduce analysis time is to run only the queries or rules that you consider critical in workflows that run on pull requests. If you use a third-party tool for code scanning, you should refer to the documentation for the tool.

In CodeQL, there are two main query suites available for each language. If you have optimized the CodeQL database build and the process is still too long, you could reduce the number of queries you run. The default query suite is run automatically: it provides the best possible compromise between quality and speed.

If you're using CodeQL with advanced setup, you may be running extra queries or query suites in addition to the default queries. Check whether the workflow defines an additional query suite or additional queries to run using the queries element. You can experiment with disabling the additional query suite or queries. For more information, see Personalización de la configuración avanzada para el examen de código.