跳至主要内容

在 Visual Studio Code 中测试 CodeQL 查询

您可以使用 Visual Studio Code 扩展运行 CodeQL 查询的单元测试。

关于在 VS Code 中测试查询

为了确保您的 CodeQL 查询产生预期结果,您可以运行测试以比较预期的查询结果与实际结果。

CodeQL 扩展会自动向“测试”视图注册自身。此视图显示在当前工作区中找到的所有测试,并提供一个 UI 用于浏览和运行工作区中的测试。

有关创建 CodeQL 测试的更多信息,请参阅“测试自定义查询”。

要查看运行单元测试的更详细输出,请打开 CodeQL 测试日志。有关信息,请参阅“访问日志”。

测试查询结果

  1. 在 Visual Studio Code 中,在侧栏中打开“测试”视图。

  2. 要运行特定测试,请将鼠标悬停在文件或文件夹名称上,然后单击播放按钮。要运行工作区中的所有测试,请单击视图顶部的播放按钮。如果测试运行时间过长,您可以单击视图顶部的停止按钮以取消测试。

    Screenshot of the "Testing" view, with the "Run Test" button (to run all tests) outlined in dark orange.

  3. 图标显示测试是否通过或失败。如果失败,请单击“测试结果”中的测试以显示预期输出与实际输出之间的差异。

    Screenshot of the "Test Results" view displaying the differences between the expected output and actual output for a test.

  4. 比较结果。如果要使用实际输出更新测试,请右键单击“测试”视图中的测试,然后单击**接受测试输出**。

监控查询性能

当您想在大型数据库上运行查询或作为持续集成系统的一部分运行查询时,查询性能非常重要。

如果要检查查询性能,请启用“正在运行的查询:调试”设置以包含计时和元组计数。然后,这将显示在“输出”视图的 CodeQL“查询服务器”选项卡中的日志中。元组计数很有用,因为它指示查询计算的谓词的大小。有关更改设置的更多信息,请参阅“自定义设置”。

评估查询时,查询服务器会缓存它计算的谓词。因此,当您想比较两次评估的性能时,应在每次运行之前运行**CodeQL:清除缓存**以清除查询服务器的缓存。这可确保您比较的是等效数据。

有关监控 CodeQL 查询性能的更多信息,请参阅 CodeQL 文档中的“排查查询性能故障”和“QL 程序的评估”。

后续步骤

当您确定查询找到了您要识别的结果时,可以使用变体分析在大规模运行它。有关在许多 CodeQL 数据库中大规模运行分析的信息,请参阅“使用多仓库变体分析大规模运行 CodeQL 查询”。