Skip to main content

CodeQL 查询包

你可以从不同的内置 CodeQL 查询套件中进行选择,用于你的 CodeQLcode scanning 设置。

谁可以使用此功能?

CodeQL 可用于以下存储库类型:

关于 CodeQL 包

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

每个 CodeQL 包都需要其根目录中的一个 qlpack.yml 文件,该目录指定:

  • 如何编写查询
  • 依赖于其他 CodeQL 包和库
  • 查询套件定义

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

此外,包 CodeQL 可以包含:

  • 自定义查询(.ql 文件)
  • 库文件
  • 查询套件
  • Metadata

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

CodeQL包类型

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

  • 查询包包含一组可在 CodeQL 数据库上执行的预编译查询。 查询包是为运行而设计的。 发布查询包时,除了查询源外,捆绑包还包括每个查询的所有可传递依赖项和预编译表示形式。 这可确保一致且高效地执行包中的查询。

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

  • 模型包可用于扩展 code scanning 分析,以识别默认情况下不支持的库和框架。 模型包当前处于公开预览阶段,后续可能会发生变化。 在公开预览期间,模型包可用于进行C/C++、C#、Java/Kotlin、Python、Ruby 和 Rust分析。 有关创建自己的模型包的详细信息,请参阅 创建并使用 CodeQL 包

在何处查找查询包

所有受支持语言的标准CodeQL包都发布在Container registry中。 如果您以标准方式使用 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做贡献