跳至主要内容

CodeQL 查询包

您可以从不同的内置 CodeQL 查询套件中进行选择,以用于您的 CodeQL 代码扫描设置。

谁可以使用此功能?

CodeQL 可用于以下仓库类型

关于 CodeQL 包

CodeQL 包用于创建、共享、依赖和运行 CodeQL 查询与库。您可以通过下载他人创建的包并在代码库中运行它们来自定义 CodeQL 分析。

每个 CodeQL 包都需要在其根目录中包含一个 qlpack.yml 文件,以指定

  • 如何编译查询
  • 对其他 CodeQL 包和库的依赖
  • 查询套件定义

有关 qlpack.yml 属性的更多信息,请参阅 使用 CodeQL 包自定义分析

此外,CodeQL 包可以包含

  • 自定义查询(.ql 文件)
  • 库文件
  • 查询套件
  • 元数据

CodeQL CLI 捆绑包包含由 GitHub 专家、安全研究员和社区贡献者维护的查询。如果您想运行其他组织开发的查询,CodeQL 查询包提供了一种高效可靠的方式来下载和运行这些查询;而模型包(公开预览)可用于扩展代码扫描分析,以识别默认情况下不受支持的库和框架。

CodeQL 包的类型

CodeQL 包有三种类型:查询包、库包和模型包。

  • 查询包包含一组可在 CodeQL 数据库上评估的预编译查询。查询包旨在直接运行。当查询包发布时,捆绑包会包括所有传递依赖以及每个查询的预编译表示,除了查询源代码之外。这确保了包中查询的一致且高效的执行。

  • 库包旨在供查询包(或其他库包)使用,本身不包含查询。库不会单独编译。

  • 模型包可用于扩展代码扫描分析,以识别默认情况下不受支持的库和框架。模型包目前处于公开预览阶段,可能会有变动。在公开预览期间,模型包可用于 C/C++、C#、Java/Kotlin、Python、Ruby 和 Rust 分析。有关创建您自己的模型包的更多信息,请参阅 创建和使用 CodeQL 包

在哪里可以找到查询包

所有受支持语言的标准 CodeQL 包已发布在 容器注册表 中。如果您使用标准方式(通过 CodeQL CLI 捆绑包)安装了 CodeQL CLI,核心查询包已经下载并可供使用。它们包括:

  • codeql/cpp-queries
  • codeql/csharp-queries
  • codeql/go-queries
  • codeql/java-queries
  • codeql/javascript-queries
  • codeql/python-queries
  • codeql/ruby-queries
  • codeql/swift-queries

有关已发布查询包与不同 CodeQL 版本之间兼容性的更多信息,请参阅 CodeQL 查询包参考

您也可以使用 CodeQL CLI 创建自己的 CodeQL 包、为包添加依赖项,并安装或更新依赖。

发布和共享 CodeQL 包

您可以通过以下方式与更广泛的 CodeQL 社区共享自定义查询:

  • 发布到 GitHub Packages:使您的包公开可用,供其他用户发现和使用。
  • 贡献至 CodeQL 仓库:通过向官方仓库提交拉取请求,提交能惠及更广社区的查询。

有关发布和下载 CodeQL 包的更多信息,请参阅 发布和使用 CodeQL 包

有关向 CodeQL 贡献的指南,请参阅 贡献 CodeQL

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