跳至主要内容

查询参考文件

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

谁可以使用此功能?

CodeQL 可用于以下存储库类型

关于查询参考文件

查询参考文件是一个文本文件,用于定义要测试的一个查询的位置。

当您想要告诉 test run 子命令运行不在测试目录中的查询时,可以使用查询参考文件。有两种方法可以指定要作为测试运行的查询

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

定义查询参考文件

每个查询参考文件(.qlref)都包含一行,用于定义在哪里可以找到一个查询。该位置必须相对于包含该查询的 CodeQL 包的根目录定义。通常,这要么是包含 .qlref 的 CodeQL 包,要么是测试包的 dependencies 块中指定的 CodeQL 包,要么是 CodeQL 包的传递依赖项。

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

示例

用于测试 JavaScript 警报查询的查询参考文件:DeadAngularJSEventListener.qlref

javascript/ql/test 中 CodeQL 包的 qlpack.yml 文件,https://github.com/github/codeql/blob/main/javascript/ql/test/qlpack.yml,将 codeql/javascript-queries 定义为依赖项。因此,查询参考文件定义了查询相对于 codeql/javascript-queries CodeQL 包的位置

AngularJS/DeadAngularJSEventListener.ql

有关另一个示例,请参阅“测试自定义查询”。