Skip to main content

Archivos de referencia de consulta

Puedes usar archivos de referencia de consulta para definir la ubicación de una consulta que quieres ejecutar en las pruebas.

¿Quién puede utilizar esta característica?

CodeQL está disponible para los siguientes tipos de repositorios:

Acerca de los archivos de referencia de consulta

Un archivo de referencia de consulta es un archivo de texto que define la ubicación de una consulta que se va a probar.

Los archivos de referencia de consulta se usan cuando se quiere indicar al subcomando test run que ejecute una consulta que no forma parte de un directorio de prueba. Puedes especificar de dos maneras las consultas que quieres ejecutar como pruebas:

  1. Usa un archivo de referencia de consulta para especificar la ubicación de una consulta que se va a probar. Esto resulta útil al crear pruebas para consultas de alertas y rutas de acceso diseñadas para identificar problemas en códigos base reales. Puedes crear varios directorios de código de prueba, cada uno de ellos centrado en aspectos distintos de la consulta. Después, agrega un archivo de referencia de consulta a cada directorio de código de prueba para especificar la consulta que se va a probar.
  2. Agrega la consulta directamente a un directorio de pruebas. Normalmente, esto es útil cuando se escriben consultas explícitamente para probar el comportamiento de bibliotecas de QL. A menudo, estas consultas contienen solo unas pocas llamadas a predicados de biblioteca y las encapsulan en una instrucción select para que se pueda probar su salida.

Definición de un archivo de referencia de consulta

Cada archivo de referencia de consulta, .qlref, contiene una sola línea que define dónde se busca una consulta. La ubicación debe definirse en relación con la raíz del paquete de CodeQL que contiene la consulta. Normalmente, se trata del paquete de CodeQL que contiene el archivo .qlref, un paquete de CodeQL especificado en el bloque dependencies para el paquete de prueba, o bien de una dependencia transitiva del paquete de CodeQL.

Debes usar barras diagonales en la ruta de acceso en todos los sistemas operativos para garantizar la compatibilidad entre sistemas.

Ejemplo

Archivo de referencia de consulta para probar una consulta de alerta de JavaScript: DeadAngularJSEventListener.qlref

El archivo qlpack.yml, https://github.com/github/codeql/blob/main/javascript/ql/test/qlpack.yml, para el paquete de CodeQL en javascript/ql/test define codeql/javascript-queries como una dependencia. Por lo tanto, el archivo de referencia de consulta define la ubicación de la consulta en relación con el paquete de CodeQL codeql/javascript-queries:

AngularJS/DeadAngularJSEventListener.ql

Para obtener otro ejemplo, consulta "Pruebas de consultas personalizadas".