Nota: La funcionalidad de administración de paquetes de CodeQL, incluidos los de CodeQL, se encuentra disponible actualmente en versión beta y está sujeta a cambios. Durante la versión beta, los paquetes de CodeQL solo están disponibles si se usa GitHub Packages: el Container registry. Para usar esta funcionalidad beta, instala la versión más reciente del paquete de la CodeQL CLI desde https://github.com/github/codeql-action/releases.
Configuración del archivo qlpack.yml
antes de publicarlo
Puedes comprobar y modificar los detalles de configuración del paquete de CodeQL antes de la publicación. Abre el archivo qlpack.yml
en su editor de texto preferido.
library: # set to true if the pack is a library. Set to false or omit for a query pack
name: <scope>/<pack>
version: <x.x.x>
description: <Description to publish with the package>
default-suite: # optional, one or more queries in the pack to run by default
- query: <relative-path>/query-file>.ql
default-suite-file: default-queries.qls # optional, a pointer to a query-suite in this pack
license: # optional, the license under which the pack is published
dependencies: # map from CodeQL pack name to version range
-
name:
debe seguir el formato<scope>/<pack>
, donde<scope>
es la organización de GitHub en la que vas a publicar yes el nombre del paquete. -
Se permite un máximo de un elemento
default-suite
odefault-suite-file
. Estas son dos maneras diferentes de definir un conjunto predeterminado de consultas que se va a ejecutar, la primera de ellas especificando las consultas directamente en el archivo qlpack.yml y la segunda especificando un conjunto de consultas en el paquete.
En ejecución codeql pack publish
Cuando estés a punto para publicar un paquete en GitHub Container registry, puedes ejecutar el comando siguiente en la raíz del directorio del paquete:
codeql pack publish
El paquete publicado se mostrará en la sección paquetes de la organización de GitHub que especifica el ámbito del archivo qlpack.yml
.
En ejecución codeql pack download <scope>/<pack>
Para ejecutar un paquete que haya creado otra persona, primero debes descargarlo; para ello, ejecuta el comando siguiente:
codeql pack download <scope>/<pack>@x.x.x
<scope>
: el nombre de la organización de GitHub desde la que lo descargarás.<pack>
: el nombre del paquete que quieres descargar.@x.x.x
: un número de versión opcional. Si se omite, se descargará la versión más reciente.
Este comando acepta argumentos para varios paquetes.
Si escribes scripts que especifican un número de versión determinado de un paquete de consultas que se va a descargar, ten en cuenta que al actualizar la versión de CodeQL a una versión más reciente, es posible que también tengas que cambiar a una versión más reciente del paquete de consultas. Las versiones más recientes de CodeQL pueden proporcionar un rendimiento degradado cuando se usan con paquetes de consulta anclados a una versión muy antigua. Para obtener más información, consulta "Acerca de la compatibilidad con paquetes de CodeQL".
Uso de un paquete de CodeQL para analizar una base de datos de CodeQL
Para analizar una base de datos de CodeQL con un paquete de CodeQL, ejecuta el comando siguiente:
codeql database analyze <database> <scope>/<pack>@x.x.x:<path>
<database>
: la base de datos de CodeQL que se va a analizar.<scope>
: el nombre de la organización de GitHub en la que se va a publicar el paquete.<pack>
: el nombre del paquete que estás usando.@x.x.x
: un número de versión opcional. Si se omite, se usará la versión más reciente.:<path>
: una ruta de acceso opcional a una consulta, directorio o conjunto de consultas. Si se omite, se usará el conjunto de consultas predeterminado del paquete.
El comando analyze
ejecutará el conjunto predeterminado de los paquetes de CodeQL especificados. Puedes especificar varios paquetes de CodeQL que se usarán para analizar una base de datos de CodeQL. Por ejemplo:
codeql <database> analyze <scope>/<pack> <scope>/<other-pack>
Nota: El comando codeql pack download
almacena el paquete que descarga en una ubicación interna que no está pensada para la modificación local. Si el paquete se modifica después de la descarga se puede producir un comportamiento inesperado (con problemas difíciles de solucionar). Para obtener más información acerca de la personalización de paquetes, consulta "Creación y uso de paquetes de CodeQL".
Acerca de la compatibilidad con paquetes de CodeQL
Cuando se publica un paquete de consultas, incluye representaciones precompiladas de todas las consultas que contiene. La ejecución de estas consultas precompiladas suele ser mucho más rápida que compilar el origen de QL desde cero durante el análisis. Pero las consultas precompiladas también dependen de ciertos elementos internos del evaluador de QL, por lo que si la versión de CodeQL que realiza el análisis es muy diferente de la versión que ejecutó codeql pack publish
, puede que sea necesario compilar las consultas desde el origen en lugar de durante el análisis. La recompilación se produce automáticamente y no afectará a los resultados del análisis, pero puede hacer que el análisis sea considerablemente más lento.
Por lo general, se puede suponer que si un paquete se publica con una versión de CodeQL, las consultas precompiladas que contiene se pueden usar directamente mediante versiones posteriores de CodeQL, siempre y cuando no hayan transcurrido más de 6 meses entre las fechas de lanzamiento. Nos esforzaremos de forma razonable para mantener nuevas versiones compatibles durante más tiempo que el indicado anteriormente, pero no podemos garantizarlo.
También se puede suponer que un paquete que ha publicado la versión pública más reciente de CodeQL la podrá utilizar la versión de CodeQL que usa code scanning y GitHub Actions, aunque a menudo sea una versión un poco más antigua.
Como excepción a lo anterior, los paquetes publicados con versiones de CodeQL anteriores a la versión 2.12.0 no son compatibles con ninguna versión, ya sea anterior o posterior. Estas versiones anteriores no escribieron consultas precompiladas en un formato que admita la compatibilidad entre versiones. Los paquetes que han publicado estas versiones pueden seguirlos usando versiones más recientes, pero el análisis será más lento porque las consultas deben volver a compilarse primero.
Como usuario de un paquete de consultas publicado, puedes comprobar que CodeQL usa las consultas precompiladas que contiene inspeccionando la salida del terminal de una ejecución de análisis que usa el paquete de consultas. Si contiene líneas con un aspecto similar a las siguientes, significa que las consultas precompiladas se usaron correctamente:
[42/108] Loaded /long/path/to/query/Filename.qlx.
Pero si en su lugar tienen un aspecto similar al siguiente, significa que se produjo un error en el uso de las consultas precompiladas:
Compiling query plan for /long/path/to/query/Filename.ql.
[42/108 comp 25s] Compiled /long/path/to/query/Filename.ql.
Los resultados del análisis seguirán siendo buenos en este caso, pero para obtener un rendimiento óptimo, es posible que tengas que actualizar a una versión más reciente de la CodeQL CLI o del paquete de consultas.
Si publicas paquetes de consulta en el Container registry en el GitHub.com para que otros usuarios los usen, se recomienda usar una versión reciente de CodeQL para ejecutar codeql pack publish
y publicar una versión nueva del paquete con una versión actualizada de CodeQL antes de que la versión que usaste alcance los 6 meses de antigüedad. De este modo, puedes asegurarte de que los usuarios del paquete que mantienen sus CodeQL actualizados se van a beneficiar de las consultas precompiladas del paquete.
Si publicas paquetes de consultas con la intención de usarlos en una instalación de GitHub Enterprise Server que usa sus archivos binarios de CodeQL agrupados, usa la misma versión de CodeQL para ejecutar codeql pack publish
. Es posible que las versiones más recientes generen consultas compiladas previamente que la de GitHub Enterprise Server no reconozca. El administrador de GitHub Enterprise Server puede optar por actualizar a una versión más reciente de CodeQL con frecuencia. Si es así, sigue su ejemplo.
Autenticación en Container registries
de GitHub
Puedes publicar paquetes y descargar paquetes privados autenticándote en el Container registry de GitHub adecuado.
Puedes autenticarte en el Container registry en el GitHub.com de dos maneras:
- Pasa la opción
--github-auth-stdin
a la CodeQL CLI y, después, proporciona un token de GitHub Apps o personal access token mediante la entrada estándar. - Establece la variable de entorno
GITHUB_TOKEN
en un token de GitHub Apps o personal access token.
Acerca de los archivos qlpack.yml
Al ejecutar comandos relacionados con consultas, CodeQL examina primero los directorios del mismo nivel que el directorio de instalación (y sus subdirectorios) en busca de archivos qlpack.yml
.
A continuación, comprueba la caché de los paquetes de CodeQL que se han descargado. Esto significa que, al desarrollar consultas localmente, los paquetes locales del directorio de instalación invalidan los paquetes del mismo nombre en la caché de paquetes, para que puedas probar los cambios locales.
Los metadatos de cada archivo qlpack.yml
indican a CodeQL cómo compilar las consultas del paquete, de qué bibliotecas depende el paquete y dónde se encuentran las definiciones del conjunto de consultas.
El contenido del paquete de CodeQL (consultas o bibliotecas usadas en el análisis de CodeQL) está incluido en el mismo directorio que qlpack.yml
o en sus subdirectorios.
El directorio que contiene el archivo qlpack.yml
actúa como directorio raíz para el contenido del paquete de CodeQL. Es decir, para todos los archivos .ql
y .qll
del paquete, CodeQL resolverá todas las instrucciones de importación relativas al directorio que contiene el archivo qlpack.yml
en la raíz del paquete.
Propiedades de qlpack.yml
Se admiten las propiedades siguientes en los archivos qlpack.yml
.
name
-
Propiedad requerida por todos los paquetes.
-
Define el ámbito del paquete, dónde se publica el paquete de CodeQL y el nombre del paquete definido mediante caracteres alfanuméricos y guiones. Debe ser único, ya que CodeQL no puede diferenciar entre paquetes de CodeQL con nombres idénticos. Usa el nombre del paquete para especificar las consultas que se ejecutarán mediante
database analyze
y para definir las dependencias entre los paquetes de CodeQL (consulta los ejemplos siguientes). Por ejemplo:name: octo-org/security-queries
version
-
Propiedad requerida por todos los paquetes que se publican.
-
Define una versión semántica para este paquete de CodeQL que debe cumplir la especificación SemVer v2.0.0. Por ejemplo:
version: 0.0.0
dataExtensions
- Propiedad requerida por los paquetes de modelos.
- Toma una lista de patrones globales que especifican dónde se encuentran los archivos de extensión de datos en relación con la raíz del paquete de consultas o del paquete de biblioteca.
dependencies
-
Propiedad requerida por los paquetes de consulta y biblioteca que definen dependencias de paquetes de CodeQL en otros paquetes. Los paquetes de modelos no pueden definir dependencias ni usar
extensionTargets
en su lugar. -
Define una asignación de referencias del paquete al intervalo de versiones semánticas que es compatible con este paquete. Es compatible con la CodeQL CLI v2.6.0 y versiones posteriores. Por ejemplo:
dependencies: codeql/cpp-all: ^0.0.2
defaultSuiteFile
-
Propiedad requerida por los paquetes que exportan un conjunto de consultas predeterminadas que se van a ejecutar.
-
Define la ruta de acceso a un archivo de conjunto de consultas relativa a la raíz del paquete, que contiene todas las consultas que se ejecutan de forma predeterminada cuando este paquete se pasa al comando
codeql database analyze
. Es compatible con la CLI v2.6.0 y versiones posteriores. Solo se puede definir un elementodefaultSuiteFile
odefaultSuite
. Por ejemplo:defaultSuiteFile: cpp-code-scanning.qls
defaultSuite
-
Propiedad requerida por los paquetes que exportan un conjunto de consultas predeterminadas que se van a ejecutar.
-
Define un conjunto de consultas insertado que contiene todas las consultas que se ejecutan de forma predeterminada cuando este paquete se pasa al comando
codeql database analyze
. Es compatible con la CLI v2.6.0 y versiones posteriores. Solo se puede definir un elementodefaultSuiteFile
odefaultSuite
. Por ejemplo:defaultSuite: queries: . exclude: precision: medium
extensionTargets
- Propiedad requerida por los paquetes de modelos.
- Declara a qué consulta se empaquetan las extensiones del paquete de modelos. El paquete de extensiones insertará sus extensiones de datos en cada paquete denominado en el diccionario
extensionTargets
, si el paquete está dentro del intervalo de versiones especificado y se usa en la evaluación.
groups
-
Opcional.
-
Define agrupaciones lógicas de paquetes en un área de trabajo de CodeQL. El uso de grupos es una manera de aplicar operaciones de paquete a subconjuntos de paquetes de un área de trabajo. Por ejemplo, el siguiente paquete se ha definido para formar parte de los grupos
java
yexperimental
:groups: - java - experimental
Al ejecutar
codeql pack publish --groups java,-experimental
, se publicarán todos los paquetes del grupojava
, excepto los paquetesexperimental
. Puedes ejecutar el comandocodeql pack ls --groups [-]<group>[,[-]<group>...]
para enumerar los paquetes de un área de trabajo que coincidan con el conjunto de grupos especificado.Un paquete de CodeQL en el área de trabajo determinada se incluye en la lista si:
- Está en al menos uno de los grupos enumerados sin un signo menos (esta condición se cumple automáticamente si no hay grupos enumerados sin el signo menos) y
- No está en ningún grupo enumerado con un signo menos.
library
-
Propiedad requerida por los paquetes de biblioteca.
-
Define un valor booleano que indica si este paquete es un paquete de biblioteca. Los paquetes de biblioteca no contienen consultas y no se compilan. Los paquetes de consultas pueden omitir este campo o establecerlo explícitamente en
false
. Por ejemplo:library: true
suites
-
Opcional para los paquetes que definen conjuntos de consultas.
-
Indica la ruta de acceso a un directorio del paquete que contiene los conjuntos de consultas que quieres que sean conocidos para la CodeQL CLI, definida en relación con el directorio del paquete. Los usuarios de paquetes de CodeQL pueden ejecutar conjuntos "conocidos" almacenados en este directorio si especifican el nombre del paquete, sin necesidad de proporcionar su ruta de acceso completa. Esto no se admite para los paquetes de CodeQL que se descargan del registro de contenedor. Para más información sobre los conjuntos de consultas, consulta "Creación de conjuntos de consultas de CodeQL". Por ejemplo:
suites: octo-org-query-suites
tests
-
Opcional para los paquetes que contienen pruebas de CodeQL. Se omite para los paquetes sin pruebas.
-
Indica la ruta de acceso a un directorio dentro del paquete que contiene pruebas, definida en relación con el directorio del paquete. Usa
.
para especificar todo el paquete. Las consultas de este directorio se ejecutan como pruebas cuandotest run
se ejecuta con la opción--strict-test-discovery
. Las definiciones de conjuntos de consultas que usan instruccionesqueries
oqlpack
para solicitar todas las consultas de un paquete determinado omiten estas consultas. Si falta esta propiedad, el elemento.
se da por supuesto. Por ejemplo:tests: .
extractor
-
Propiedad requerida por todos los paquetes que contienen pruebas de CodeQL.
-
Define el extractor de lenguaje de CodeQL que se usará al ejecutar las pruebas de CodeQL en el paquete. Consulta "Pruebas de consultas personalizadas" para más información sobre las pruebas de consultas. Por ejemplo:
extractor: javascript-typescript
authors
-
Opcional.
-
Define los metadatos que se mostrarán en la página de búsqueda de paquetes, en la sección de paquetes de la cuenta en la que se publica el paquete de CodeQL. Por ejemplo:
authors: author1@github.com,author2@github.com
license
-
Opcional.
-
Define los metadatos que se mostrarán en la página de búsqueda de paquetes, en la sección de paquetes de la cuenta en la que se publica el paquete de CodeQL. Para obtener una lista de las licencias permitidas, consulta Lista de licencias de SPDX en la especificación de SPDX. Por ejemplo:
license: MIT
description
-
Opcional.
-
Define los metadatos que se mostrarán en la página de búsqueda de paquetes, en la sección de paquetes de la cuenta en la que se publica el paquete de CodeQL. Por ejemplo:
description: Human-readable description of the contents of the CodeQL pack.
libraryPathDependencies
-
Opcional, en desuso. Utilice la propiedad
dependencies
en su lugar. -
Antes se usaba para definir los nombres de los paquetes de CodeQL de los que depende este paquete de CodeQL, como una matriz. Esto proporciona al paquete acceso a las bibliotecas, el esquema de la base de datos y los conjuntos de consultas definidos en la dependencia. Por ejemplo:
libraryPathDependencies: codeql/javascript-all
dbscheme
-
Propiedad requerida solo por los paquetes de lenguaje principales.
-
Define la ruta de acceso al esquema de la base de datos para todas las bibliotecas y consultas escritas para este lenguaje de CodeQL (consulta el ejemplo siguiente). Por ejemplo:
dbscheme: semmlecode.python.dbscheme
upgrades
-
Propiedad requerida solo por los paquetes de lenguaje principales.
-
Indica la ruta de acceso a un directorio dentro del paquete que contiene scripts de actualización de la base de datos, definida en relación con el directorio del paquete. Las actualizaciones de la base de datos se usan internamente para asegurarse de que una base de datos creada con una versión diferente de la CodeQL CLI es compatible con la versión actual de la CLI. Por ejemplo:
upgrades: .
warnOnImplicitThis
-
Opcional. El valor predeterminado es
false
si la propiedadwarnOnImplicitThis
no está definida. -
Define un valor booleano que especifica si el compilador debe emitir advertencias sobre las llamadas de predicado de miembro con receptores de llamadas implícitos
this
, es decir, sin un receptor explícito. Compatible con CodeQL CLI versión 2.13.2 y versiones posteriores. Por ejemplo:warnOnImplicitThis: true
Acerca de los archivos codeql-pack.lock.yml
Los archivos codeql-pack.lock.yml
almacenan las versiones de las dependencias transitivas resueltas de un paquete de CodeQL. El comando codeql pack install
crea este archivo si aún no existe, que debe agregarse al sistema de control de versiones. La sección dependencies
del archivo qlpack.yml
contiene intervalos de versiones que son compatibles con el paquete. El archivo codeql-pack.lock.yml
bloquea las versiones en dependencias precisas. Esto garantiza que la ejecución de codeql pack install
en este paquete siempre recuperará las mismas versiones de las dependencias, incluso si existen versiones compatibles más recientes.
Por ejemplo, si un archivo qlpack.yml
contiene las dependencias siguientes:
dependencies:
codeql/cpp-all: ^0.1.2
my-user/my-lib: ^0.2.3
other-dependency/from-source: "*"
El archivo codeql-pack.lock.yml
contendrá algo similar a lo siguiente:
dependencies:
codeql/cpp-all:
version: 0.1.4
my-user/my-lib:
version: 0.2.4
my-user/transitive-dependency:
version: 1.2.4
La dependencia codeql/cpp-all
está bloqueada en la versión 0.1.4. La dependencia my-user/my-lib
está bloqueada en la versión 0.2.4. La dependencia my-user/transitive-dependency
, que es transitiva y no se especifica en el archivo qlpack.yml
, está bloqueada en la versión 1.2.4. Falta other-dependency/from-source
en el archivo de bloqueo, ya que se resuelve desde el origen. Esta dependencia debe estar disponible en la misma área de trabajo de CodeQL que el paquete. Para obtener más información sobre las áreas de trabajo de CodeQL y resolver las dependencias del origen, consulta "Acerca de las áreas de trabajo de CodeQL".
En la mayoría de los casos, el archivo codeql-pack.lock.yml
solo es pertinente para los paquetes de consultas, ya que los paquetes de biblioteca no son ejecutables y normalmente no necesitan que se corrijan sus dependencias transitivas. La excepción a esto son los paquetes de biblioteca que contienen pruebas. En este caso, el archivo codeql-pack.lock.yml
se usa para asegurarse de que las pruebas siempre se ejecutan con las mismas versiones de dependencias, con el fin de evitar errores falsos cuando hay dependencias no coincidentes.
Ejemplos de paquetes de CodeQL personalizados
Cuando escribas consultas o pruebas personalizadas, debes guardarlas en paquetes de CodeQL personalizados. Para simplificar, intenta organizar cada paquete lógicamente. Para obtener más información, vea «Creación y uso de paquetes de CodeQL». Guarda los archivos para las consultas y las pruebas en paquetes independientes y, siempre que sea posible, organiza los paquetes personalizados en carpetas específicas para cada lenguaje de destino. Esto es especialmente útil si piensas publicar los paquetes de CodeQL para que puedan compartirse con otros usuarios o emplearse en el examen de código. Para obtener más información, vea «Acerca del examen de código con CodeQL».
Paquetes de CodeQL para bibliotecas personalizadas
Un paquete personalizado de CodeQL con bibliotecas de C++ personalizadas, sin consultas ni pruebas, podría incluir un archivo qlpack.yml
que contenga lo siguiente:
name: my-github-user/my-custom-libraries
version: 1.2.3
library: true
dependencies:
codeql/cpp-all: ^0.1.2
codeql/cpp-all
es el nombre del paquete de CodeQL para el análisis de C/C++ incluido en el repositorio de CodeQL. El intervalo de versiones ^0.1.2
indica que este paquete es compatible con todas las versiones de codeql/cpp-all
que son mayores o iguales que 0.1.2
y menores que 0.2.0
. Cualquier archivo de biblioteca de CodeQL (un archivo con una extensión .qll
) definido en este paquete estará disponible para las consultas definidas en cualquier paquete de consultas que incluya este paquete en su bloque de dependencias.
La propiedad library
indica que se trata de un paquete de biblioteca y que no contiene ninguna consulta.
Paquetes de CodeQL para consultas personalizadas
Un paquete personalizado de CodeQL con consultas y bibliotecas de C++ personalizadas podría incluir un archivo qlpack.yml
que contenga lo siguiente:
name: my-github-user/my-custom-queries
version: 1.2.3
dependencies:
codeql/cpp-all: ^0.1.2
my-github-user/my-custom-libraries: ^1.2.3
suites: my-custom-suites
codeql/cpp-all
es el nombre del paquete de CodeQL para el análisis de C/C++ incluido en el repositorio de CodeQL. El intervalo de versiones ^0.1.2
indica que este paquete es compatible con todas las versiones de codeql/cpp-all
que son mayores o iguales que 0.1.2
y menores que 0.2.0
. my-github-user/my-custom-libraries
es el nombre de un paquete de CodeQL que contiene bibliotecas personalizadas de CodeQL para C++. Cualquier archivo de biblioteca de CodeQL (un archivo con una extensión .qll
) definido en este paquete estará disponible para las consultas del paquete my-github-user/my-custom-queries
.
La propiedad suites
indica un directorio donde se pueden encontrar conjuntos de consultas "conocidos". Estos conjuntos se pueden usar en la línea de comandos si se hace referencia solo a su nombre, y no a su ruta de acceso completa. Para más información sobre los conjuntos de consultas, consulta "Creación de conjuntos de consultas de CodeQL".
Paquetes de CodeQL para pruebas personalizadas
En el caso de los paquetes de CodeQL que contienen archivos de prueba, debes incluir también una propiedad extractor
para que el comando test run
sepa cómo crear bases de datos de prueba. También podría interesarte especificar la propiedad tests
.
El siguiente archivo qlpack.yml
indica que my-github-user/my-query-tests
depende de my-github-user/my-custom-queries
una versión mayor o igual que 1.2.3 y menor que 2.0.0. También declara que la CLI debe usar el extractor (extractor
) de Java al crear bases de datos de prueba. La línea tests: .
declara que todos los archivos .ql
del paquete se deben ejecutar como pruebas cuando codeql test run
se ejecuta con la opción --strict-test-discovery
. Normalmente, los paquetes de prueba no contienen una propiedad version
. Esto evita que se publiquen accidentalmente.
name: my-github-user/my-query-tests
dependencies:
my-github-user/my-custom-queries: ^1.2.3
extractor: java-kotlin
tests: .
Para obtener más información sobre la ejecución de pruebas, consulta "Pruebas de consultas personalizadas".
Ejemplos de paquetes de CodeQL en el repositorio de CodeQL
Cada uno de los lenguajes del repositorio de CodeQL tiene cuatro paquetes principales deCodeQL:
-
Paquete de biblioteca principal para el lenguaje, con el esquema de base de datos que usa el lenguaje, así como bibliotecas de CodeQL y consultas en
<language>/ql/lib
. -
Paquete de consultas principal para el lenguaje, que incluye las consultas predeterminadas para el lenguaje junto con sus conjuntos de consultas en
<language>/ql/src
. -
Pruebas para las consultas y bibliotecas de lenguaje principales en
<language>/ql/test
. -
Consultas de ejemplo para el lenguaje en
<language>/ql/examples
.
Paquete de biblioteca principal
Este es un archivo qlpack.yml
de ejemplo para el paquete de lenguaje principal de bibliotecas de análisis de C/C++:
name: codeql/cpp-all
version: x.y.z-dev
dbscheme: semmlecode.cpp.dbscheme
library: true
upgrades: upgrades
Notas adicionales sobre las propiedades siguientes:
-
library
: indica que se trata de un paquete de biblioteca sin consultas ejecutables. Está concebido únicamente para usarse como una dependencia para otros paquetes. -
dbscheme
yupgrades
: estas propiedades son internas para CodeQL CLI y solo deben definirse en el paquete de QL principal para un lenguaje.
Paquete de consultas principal
Este es un archivo qlpack.yml
de ejemplo para el paquete de consultas principal de consultas de análisis de C/C++:
name: codeql/cpp-queries
version: x.y.z-dev
dependencies:
codeql/cpp-all: "*"
codeql/suite-helpers: "*"
suites: codeql-suites
defaultSuiteFile: codeql-suites/cpp-code-scanning.qls
Notas adicionales sobre las propiedades siguientes:
-
dependencies
: este paquete de consultas depende decodeql/cpp-all
ycodeql/suite-helpers
. Dado que estas dependencias se resuelven en el origen, no importa con qué versión del paquete de CodeQL son compatibles. Para obtener más información sobre cómo resolver dependencias del origen, consulta "Dependencias de origen". -
suites
: indica el directorio que contiene conjuntos de consultas "conocidos". -
defaultSuiteFile
: nombre del archivo de conjunto de consultas predeterminado que se usa cuando no se especifica ningún conjunto de consultas.
Pruebas del paquete principal de CodeQL
Este es un archivo qlpack.yml
de ejemplo para el paquete de pruebas principal de pruebas de análisis de C/C++:
name: codeql/cpp-tests
dependencies:
codeql/cpp-all: "*"
codeql/cpp-queries: "*"
extractor: cpp
tests: .
Notas adicionales sobre las propiedades siguientes:
-
dependencies
: este paquete depende de los paquetes principales de consultas y biblioteca de CodeQL para C++. -
extractor
: especifica que todas las pruebas usarán el mismo extractor de C++ para crear la base de datos para las pruebas. -
tests
: especifica la ubicación de las pruebas. En este caso, las pruebas se encuentran en la carpeta raíz (y todas las subcarpetas) del paquete. -
version
: no hay ninguna propiedadversion
para el paquete de pruebas. Esto impide que los paquetes de pruebas se publiquen accidentalmente.