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:
- 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.
- 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".