Skip to main content

Comprobación del código fuente de la CLI de CodeQL

Configure directamente CodeQL CLI desde el código fuente.

¿Quién puede utilizar esta característica?

CodeQL está disponible para los siguientes tipos de repositorios:

Algunos usuarios prefieren trabajar con CodeQL orígenes de consulta directamente con el fin de trabajar o contribuir a consultas compartidas de código abierto.

1. Descargar el archivo tar CodeQL CLI

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.

Crear un nuevo directorio CodeQL

Crea un directorio donde puedas incluir la CLI y las consultas y bibliotecas que quieras usar. Por ejemplo: $HOME/codeql-home.

Las operaciones de búsqueda integradas de la CLI buscan automáticamente en todos sus directorios del mismo nivel los archivos usados en la creación y el análisis de la base de datos. Mantener estos componentes en su propio directorio impide que la CLI busque en directorios del mismo nivel no relacionados, a la vez que garantiza que todos los archivos están disponibles sin especificar más opciones en la línea de comandos.

3. Obtener una copia local de las CodeQL consultas

El CodeQL repositorio contiene las consultas y bibliotecas necesarias para CodeQL el análisis de todos los idiomas admitidos. Clona una copia de este repositorio en codeql-home.

De forma predeterminada, la raíz del repositorio clonado se llamará codeql. Cambie el nombre de esta carpeta codeql-repo para evitar conflictos con el CodeQL CLI que extraerá en el paso 1. Si usas Git en la línea de comandos, puedes clonar el repositorio y cambiarle el nombre en un solo paso mediante la ejecución de git clone git@github.com:github/codeql.git codeql-repo en la carpeta codeql-home.

Dentro de este repositorio, las consultas y bibliotecas se organizan en CodeQL paquetes. Junto con las propias consultas, CodeQL los paquetes contienen metadatos importantes que indican cómo CodeQL CLI procesar los archivos de consulta. Para obtener más información, vea Creación y uso de paquetes de CodeQL.

Nota:

Hay diferentes versiones de las CodeQL consultas disponibles para distintos usuarios. Elige la versión correcta según tu caso de uso:

  • Para las consultas destinadas a usarse con la versión más reciente CodeQL CLI , consulte la rama etiquetada codeql-cli/latest. Debe usar esta rama para las bases de datos que ha compilado usando CodeQL CLI o bien ha descargado recientemente de GitHub.
  • Para obtener las consultas más recientes CodeQL, consulte la main rama. Esta rama representa la versión más reciente del análisis.CodeQL

4. Extraer el archivo tar CodeQL CLI

Extraiga el archivo tar en el directorio que creó en el paso 2.

Por ejemplo, si la ruta de acceso a la copia del CodeQL repositorio es $HOME/codeql-home/codeql-repo, extraiga la CLI en $HOME/codeql-home/.

5. Iniciar 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>/codeql a PATH, para poder ejecutar el archivo ejecutable simplemente como codeql.

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.

6. Comprobación de la CodeQL CLI configuración

          CodeQL CLI tiene subcomandos que puede ejecutar para comprobar que está configurado correctamente para crear y analizar bases de datos:
  • Ejecute codeql resolve languages para mostrar qué lenguajes están disponibles para la creación de bases de datos. Esto enumerará los idiomas admitidos de forma predeterminada en el CodeQL CLI paquete.
  • Ejecute codeql resolve qlpacks para mostrar qué CodeQL paquetes puede encontrar la CLI. Se mostrarán los nombres de todos los CodeQL paquetes directamente disponibles para el CodeQL CLI. Esto debería incluir:
    • Paquetes de consulta para cada lenguaje admitido, por ejemplo, codeql/{language}-queries. Estos paquetes contienen las consultas estándar que se ejecutarán para cada análisis.
    • Paquetes de biblioteca para cada lenguaje admitido, por ejemplo, codeql/{language}-all. Estos paquetes contienen bibliotecas de consultas, como bibliotecas de flujo de control y flujo de datos, que pueden ser útiles para los creadores de consultas.
    • Paquetes de ejemplo para cada lenguaje admitido, por ejemplo, codeql/{language}-examples. Estos paquetes contienen fragmentos de código útiles que los escritores de consultas de CodeQL pueden encontrar útiles.
    • Los paquetes heredados que garantizan que las consultas y bibliotecas personalizadas creadas con productos anteriores sean compatibles con la versión de CodeQL.