Setting up the CodeQL CLI
Nota:
En este artículo, se describen las características disponibles con el paquete CodeQL CLI 2.21.4 que se incluye en la versión inicial de GitHub Enterprise Server 3.18.
Si el administrador del sitio ha actualizado tu versión de la CodeQL CLI a una versión más reciente, consulta la versión de GitHub Enterprise Cloud de este artículo para obtener información sobre las características más recientes.
To run CodeQL commands, you need to set up the CodeQL CLI so that it can access the tools, queries, and libraries required to create and analyze databases.
The CodeQL CLI supports a range of use cases and directory structures. This article walks through a simple setup that works for most users and environments.
If you plan to use the CodeQL CLI for security research or to test or contribute queries, you may need a more advanced setup. For more information, see Acerca de la CLI de CodeQL.
Before you begin
If you are using macOS on Apple Silicon (for example, Apple M1), ensure that the Xcode command-line developer tools and Rosetta 2 are installed.
Nota:
The CodeQL CLI is currently not compatible with non-glibc Linux distributions such as (muslc-based) Alpine Linux.
1. Download the CodeQL CLI tar archive
El paquete de descarga de la CodeQL CLI es un archivo tar que contiene herramientas, scripts y varios archivos específicos de CodeQL. Si no tienes una licencia de GitHub Enterprise, al descargar este archivo aceptas los términos y condiciones de GitHub CodeQL.
Debes descargar el conjunto de CodeQL desde https://github.com/github/codeql-action/releases. La agrupación contiene lo siguiente:
- El producto de CodeQL CLI
- Una versión compatible de las consultas y bibliotecas de https://github.com/github/codeql
- Versiones precompiladas de todas las consultas incluidas en la agrupación
Nota:
Para GitHub Enterprise Server 3.18, se recomienda la versión de CodeQL CLI 2.21.4.
Debe usar siempre el conjunto de CodeQL. Esto garantiza la compatibilidad y también da un rendimiento mucho mejor que una descarga independiente del CodeQL CLI y una verificación de las consultas de CodeQL. Si solo vas a ejecutar la CLI en una plataforma específica, descarga el archivo codeql-bundle-PLATFORM.tar.zst adecuado. Como alternativa, puedes descargar codeql-bundle.tar.zst, que contiene la CLI para todas las plataformas compatibles.
También hay variantes tar.gz del conjunto, que son idénticas a las variantes tar.zst, excepto que se comprimen mediante el algoritmo gzip menos eficaz. La única razón para descargar las variantes tar.gz es si usa herramientas de descompresión anteriores que no admiten el algoritmo de compresión Zstandard.
2. Extract the CodeQL CLI tar archive
Extract the CodeQL CLI tar archive to a directory of your choosing.
Optional: Make the CodeQL CLI available in your CI system
If you plan to run CodeQL code scanning analysis in a CI system, ensure that the full contents of the CodeQL CLI bundle are available to every CI server that will run analysis.
For example, you can:
- Copy the bundle from a central internal location and extract it on each server, or
- Use the REST API to download the bundle directly from GitHub, ensuring that you receive the latest improvements to queries. For more information, see Puntos de conexión de la API REST para versiones y activos de lanzamiento.
3. Launch codeql
Una vez extraído, puedes ejecutar procesos de CodeQL mediante el archivo ejecutable codeql de dos maneras:
- Ejecutando
<extraction-root>/codeql/codeql, donde<extraction-root>es la carpeta en la que has extraído el paquete de la CodeQL CLI. - Agregando
<extraction-root>/codeqlaPATH, para poder ejecutar el archivo ejecutable simplemente comocodeql.
A partir de este momento, ya puedes ejecutar comandos de CodeQL. Para ver una lista completa de los comandos de CodeQL CLI, consulta Manual de comandos de la CLI de CodeQL.
Nota:
If you add codeql to your PATH, it can be accessed by CodeQL for Visual Studio Code to compile and run queries. For more information about configuring VS Code to access the CodeQL CLI, see Managing the CodeQL CLI in the VS Code extension.
Testing the CodeQL CLI configuration
After you extract the CodeQL CLI bundle, you can run the following command to verify that the CLI is correctly configured to create and analyze databases:
codeql resolve packsif/<extraction root>/codeqlis on thePATH./<extraction root>/codeql/codeql resolve packsotherwise.
If successful, you should see output similar to the extract below:
Searching directories specified by `--additional-packs`. All directories have equal priority.
Searching in:
No packs were found at this location.
Searching directories specified by `--search-path`. Directories are searched in order.
Searching the root of the CodeQL distribution.
Searching in:
<extraction root>
The following packs were found:
codeql/java-all@<version>: (library) <extraction root>/qlpacks/codeql/javat-all/<version>/qlpack.yml
codeql/java-queries@<version>: (query) <extraction root>/qlpacks/codeql/java-queries/<version>/qlpack.yml
codeql/javascript-all@<version>: (library) <extraction root>/qlpacks/codeql/javascript-all/<version>/qlpack.yml
codeql/javascript-queries@<version>: (query) <extraction root>/qlpacks/codeql/javascript-queries/<version>/qlpack.yml
codeql/swift-all@<version>: (library) <extraction root>/qlpacks/codeql/swift-all/<version>/qlpack.yml
codeql/swift-queries@<version>: (query) <extraction root>/qlpacks/codeql/swift-queries/<version>/qlpack.yml
...
The results have been truncated for brevity. The actual results will be longer and more detailed.
You should check that the output contains the expected languages and also that the directory location for the qlpack files is correct. The location should be within the extracted CodeQL CLI bundle, shown in the earlier example as <extraction root>. If the CodeQL CLI is unable to locate the qlpacks for the expected languages, check that you downloaded the CodeQL bundle and not a standalone copy of the CodeQL CLI.
You can also run codeql resolve languages to show which languages are available for database creation. This will list the languages supported by default in your CodeQL CLI package.
Optionally, you can download some CodeQL packs containing pre-compiled queries you would like to run. For more information, see Personalización del análisis con paquetes de CodeQL.
The codeql resolve packs command is useful for diagnosing problems when the CodeQL CLI is unable to locate query packs that you expect to be available for analysis.
Nota:
The codeql resolve packs command is available in the CodeQL CLI versions 2.19.0 and later. For earlier versions of the CLI, you should run the codeql resolve qlpacks command, which produces similar, but less detailed output.
Next steps
To learn how to prepare your code to be analyzed by the CodeQL CLI, see Preparación del código para el análisis de CodeQL.