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 CodeQL CLI paquete de descarga es un archivo tar que contiene herramientas, scripts y varios CodeQLarchivos específicos. Si no tiene una GitHub Enterprise licencia, descargando este archivo, acepta los GitHubCodeQL Términos y Condiciones.
Debe descargar el CodeQL paquete de https://github.com/github/codeql-action/releases. El paquete contiene:
- CodeQL CLI producto
- 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 Server3.21, se recomienda la CodeQL CLI versión 2.24.3.
Siempre debe usar el paquete CodeQL. Esto garantiza la compatibilidad y ofrece un rendimiento mucho mejor que una descarga por separado de CodeQL CLI y el checkout de las consultas CodeQL. Descargue el codeql-bundle-PLATFORM.tar.zst archivo de la plataforma donde ejecutará la CLI. Reemplace PLATFORM por linux64 para Linux x64, linux-arm64 para Linux ARM64, osx64 para macOS o win64 para Windows.
El paquete para todas las plataformas (codeql-bundle.tar.zst y codeql-bundle.tar.gz) va a desaparecer y dejará de publicarse en una próxima versión. Descargue en su lugar el archivo específico para cada plataforma codeql-bundle-PLATFORM.tar.zst. En CodeQL CLI la versión 2.27.0 y posteriores, la ejecución de la CLI desde una distribución de todas las plataformas genera una advertencia.
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 rama
main. 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 repositorio de CodeQL es $HOME/codeql-home/codeql-repo, extraiga la CLI en $HOME/codeql-home/.
5. Iniciar codeql
Una vez extraído, puede ejecutar procesos de CodeQL ejecutando el ejecutable codeql de dos maneras:
- Al ejecutar
<extraction-root>/codeql/codeql, donde<extraction-root>es la carpeta donde extrajiste CodeQL CLI paquete. - Agregando
<extraction-root>/codeqlaPATH, para poder ejecutar el archivo ejecutable simplemente comocodeql.
En este punto, puede ejecutar comandos CodeQL. Para obtener una lista completa de los CodeQL CLI comandos, consulte 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 languagespara 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 qlpackspara 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 de CodeQL que los escritores de consultas pueden encontrar útiles. - Los paquetes heredados garantizan que las consultas personalizadas y las bibliotecas creadas con productos anteriores son compatibles con la versión de CodeQL.
- Paquetes de consulta para cada lenguaje admitido, por ejemplo,