Skip to main content

在 Visual Studio Code 中测试 CodeQL 查询

可使用 CodeQL 扩展名对 Visual Studio Code 查询运行单元测试。

关于在 VS Code

中测试查询

要确保 CodeQL 查询生成预期结果,可以运行测试,将预期查询结果与实际结果进行比较。

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

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

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

测试查询结果

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

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

    “测试”视图的屏幕截图,其中“运行测试”按钮(用于运行所有测试)以深橙色框出。

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

    以下是显示测试的预期输出和实际输出之间的差异的“测试结果”视图的屏幕截图。

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

监视查询的性能

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

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

计算查询时,查询服务器会缓存其计算的谓词。 因此,当您想要比较两个评估的性能时,应在每次运行之前运行 CodeQL:清除 Cache 以清除查询服务器的缓存。 这样可以确保正在比较相同的数据。

有关监视 CodeQL 查询性能的详细信息,请参阅 CodeQL 文档中的“查询性能疑难解答”和“QL 程序评估”。

后续步骤

确定查询找到要标识的结果时,可使用变体分析来大规模运行。 有关跨多个 数据库大规模运行分析的信息,请参阅“通过多库变体分析大规模运行 CodeQL 查询”。