跳至主要内容

在 Visual Studio Code 中测试 CodeQL 查询

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

关于在 VS Code 中测试查询

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

CodeQL 扩展会自动在 “Testing” 视图中注册自己。该视图显示当前工作区中找到的所有测试,并提供用于浏览和运行工作区中测试的用户界面。

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

要查看运行单元测试的更详细输出,请打开 CodeQL Tests 日志。有关信息,请参阅 在 Visual Studio Code 中访问 CodeQL 日志

测试查询结果

  1. 在 Visual Studio Code 中,打开侧边栏的 “Testing” 视图。

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

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

  3. 图标显示测试是通过还是失败。如果失败,点击 “Test Results” 中的测试以显示预期输出与实际输出之间的差异。

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

  4. 比较结果。如果您想用实际输出更新测试,请在 “Testing” 视图中右键单击该测试,然后点击 Accept Test Output(接受测试输出)。

监控查询性能

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

如果您想检查查询性能,请启用 “Running Queries: Debug” 设置,以包含计时和元组计数。这些信息将显示在 “Output” 视图的 CodeQL “Query Server” 选项卡的日志中。元组计数很有用,因为它指示查询计算的 谓词 的规模。有关更改设置的更多信息,请参阅 自定义设置

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

有关监控 CodeQL 查询性能的更多信息,请参阅 排查查询性能问题QL 程序的评估(均在 CodeQL 文档中)。

后续步骤

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

© . This site is unofficial and not affiliated with GitHub, Inc.