# 查询引用文件

可以使用查询引用文件来定义要在测试中运行的查询的位置。

## 关于查询用的引用文件

查询引用文件是文本文件，用于定义要测试的一个查询的位置。

如果要告知 `test run` 子命令运行不属于测试目录的查询，请使用查询引用文件。
可通过两种方式指定要作为测试运行的查询：

1. 使用查询引用文件指定要测试的查询的位置。
   在为旨在识别真实代码库中的问题的警报和路径查询创建测试时，这非常有用。 可以创建多个测试代码目录，每个目录都侧重于查询的不同方面。 然后将查询引用文件添加到每个测试代码目录，以指定要测试的查询。
2. 将查询直接添加到测试目录。
   在显式编写查询以测试 QL 库的行为时，这些查询通常很有用。 通常，这些查询只包含对库谓词的几个调用，将它们包装在一个 `select` 语句中，以便测试其输出。

## 定义查询引用文件

每个查询引用文件 (`.qlref`) 都包含一行，用于定义查找一个查询的位置。 必须相对于包含查询的 CodeQL 包的根目录定义位置。
通常，这通常是以下三者之一：包含 CodeQL 的 `.qlref` 包、测试包的 CodeQL 块中指定的 `dependencies` 包，或 CodeQL 包的传递依赖项。

应在所有操作系统的路径中使用正斜杠，以确保系统之间的兼容性。

### Example

用于测试 JavaScript 警报查询的查询引用文件：[DeadAngularJSEventListener.qlref](https://github.com/github/codeql/blob/main/javascript/ql/test/query-tests/AngularJS/DeadAngularJSEventListener/DeadAngularJSEventListener.qlref)

位于 `qlpack.yml` 用于 <https://github.com/github/codeql/blob/main/javascript/ql/test/qlpack.yml> 包的 CodeQL 文件 `javascript/ql/test` 定义了 `codeql/javascript-queries` 作为依赖项。 因此，查询引用文件定义查询相对于 `codeql/javascript-queries`CodeQL 包的位置：

```shell
AngularJS/DeadAngularJSEventListener.ql
```

如需另一个示例，请参阅 [测试自定义查询](/zh/enterprise-server@3.22/code-security/how-tos/find-and-fix-code-vulnerabilities/scan-from-the-command-line/test-custom-queries)。