Skip to main content
Publicamos actualizaciones para la documentación con frecuencia y es posible que aún se esté traduciendo esta página. Para obtener la información más reciente, consulta la documentación en inglés.

Creación y uso de paquetes de CodeQL

Puedes usar paquetes de CodeQL para crear, compartir y ejecutar consultas y bibliotecas de CodeQL, así como para establecer dependencias de ellas.

Las licencias de GitHub CodeQL se otorgan por usuario tras la instalación. Puedes usar CodeQL solo para determinadas tareas según las restricciones de las licencias. Para obtener más información, vea «Acerca de la CLI de CodeQL».

Si tienes una cuenta de GitHub Enterprise y una licencia de GitHub Advanced Security, puedes usar CodeQL para el análisis automatizado, la integración continua y la entrega continua. Para crear una cuenta empresarial, ponte en contacto con el equipo de ventas. Para obtener más información, vea «Acerca de GitHub Advanced Security».

Nota: Este artículo se migró desde el sitio web de documentación de CodeQL en enero de 2023.

Nota: La función de administración de paquetes de CodeQL, incluidos los paquetes de CodeQL, está actualmente disponible como versión beta y está sujeta a cambios. Durante la versión beta, los paquetes de CodeQL solo están disponibles con paquetes de GitHub: el Container registry. Para usar esta función beta, instala la versión más reciente del paquete de la CLI de CodeQL desde https://github.com/github/codeql-action/releases.

Paquetes de CodeQL y la CodeQL CLI

Nota: En este artículo se describen las características disponibles con el paquete CodeQL CLI 2.10.5 que se incluye en la versión inicial de GitHub Enterprise Server 3.7.

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.

Con los paquetes de CodeQL y los comandos de administración de paquetes de la CodeQL CLI, puedes publicar tus consultas personalizadas e integrarlas en tu análisis del código base.

Hay dos tipos de paquetes de CodeQL: paquetes de consultas y paquetes de biblioteca.

  • Los paquetes de consultas están diseñados para ejecutarse. Cuando se publica un paquete de consultas, el conjunto incluye todas las dependencias transitivas y una caché de compilación. Esto garantiza la ejecución coherente y eficaz de las consultas del paquete.
  • Los paquetes de biblioteca están diseñados para que los usen paquetes de consulta (u otros paquetes de biblioteca) y no contienen consultas. Las bibliotecas no se compilan y no se incluye ninguna caché de compilación cuando el paquete se publica.

Puedes usar el comando pack en la CodeQL CLI para crear paquetes de CodeQL, agregar dependencias a los paquetes e instalar o actualizar dependencias. También puedes publicar y descargar paquetes de CodeQL con el comando pack. Para obtener más información, consulta "Publicación y uso de paquetes de CodeQL".

Creación de un paquete de CodeQL

Puedes crear un paquete de CodeQL ejecutando el comando siguiente desde la raíz de restauración del proyecto:

codeql pack init <scope>/<pack>

Debe especificar:

  • <scope>: el nombre de la organización de GitHub o la cuenta de usuario en la que publicarás el paquete.

  • <pack>: el nombre del paquete que estás creando.

El comando codeql pack init crea la estructura de directorios y los archivos de configuración de un paquete de CodeQL. De forma predeterminada, el comando crea un paquete de consultas. Si quieres crear un paquete de bibliotecas, debes editar el archivo qlpack.yml e incluir la propiedad library:true para declarar explícitamente el archivo como un paquete de bibliotecas.

Modificación de un paquete de QL heredado existente para crear un paquete de CodeQL

Si ya tienes un archivo qlpack.yml, puedes editarlo manualmente para convertirlo en un paquete de CodeQL.

  1. Edita la propiedad name para que coincida con el formato <scope>/<name>, donde <scope> es el nombre de la organización de GitHub o la cuenta de usuario en la que publicarás el paquete.

  2. En el archivo qlpack.yml, incluye una propiedad version con un identificador de SemVer, así como un bloque dependencies opcional.

  3. Migra la lista de dependencias de libraryPathDependencies al bloque dependencies. Especifica el intervalo de versiones para cada dependencia. Si el intervalo no es importante o desconoces la compatibilidad, puedes especificar "\*", lo que indica que cualquier versión es aceptable y tendrá como valor predeterminado la versión más reciente al ejecutar codeql pack install.

Para obtener más información sobre las propiedades, consulta "Acerca de los paquetes de CodeQL".

Adición e instalación de dependencias en un paquete de CodeQL

Puedes agregar dependencias en los paquetes de CodeQL mediante el comando codeql pack add. Debes especificar el ámbito, el nombre y (opcionalmente) un intervalo de versiones compatibles.

codeql pack add <scope>/<name>@x.x.x <scope>/<other-name>

Si no especificas ningún intervalo de versiones, se agregará la versión más reciente. De lo contrario, se agregará la versión más reciente dentro del intervalo especificado.

Este comando actualiza el archivo qlpack.yml con las dependencias solicitadas y las descarga en la caché del paquete. Ten en cuenta que este comando volverá a formatear el archivo y quitará todos los comentarios.

También puedes editar manualmente el archivo qlpack.yml para incluir dependencias e instalarlas con el comando:

codeql pack install

Este comando descarga todas las dependencias en la caché compartida en el disco local.

Notas:

  • La ejecución de los comandos codeql pack add y codeql pack install generará o actualizará el archivo codeql-pack.lock.yml. Este archivo debe estar registrado en el control de versiones. El archivo codeql-pack.lock.yml contiene los números de versión precisos que usa el paquete. Para obtener más información, consulta "Acerca de los archivos codeql-pack.lock.yml".

  • De forma predeterminada, codeql pack install instalará las dependencias de Container registry en GitHub.com. Puedes instalar dependencias desde Container registry de GitHub Enterprise Server mediante la creación de un archivo qlconfig.yml. Para obtener más información, consulta "Publicación y uso de paquetes de CodeQL".