关于 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-queriescodeql/csharp-queriescodeql/go-queriescodeql/java-queriescodeql/javascript-queriescodeql/python-queriescodeql/ruby-queriescodeql/swift-queries
有关已发布查询包与不同 CodeQL 版本之间兼容性的更多信息,请参阅 CodeQL 查询包参考。
您也可以使用 CodeQL CLI 创建自己的 CodeQL 包、为包添加依赖项,并安装或更新依赖。
发布和共享 CodeQL 包
您可以通过以下方式与更广泛的 CodeQL 社区共享自定义查询:
- 发布到 GitHub Packages:使您的包公开可用,供其他用户发现和使用。
- 贡献至 CodeQL 仓库:通过向官方仓库提交拉取请求,提交能惠及更广社区的查询。
有关发布和下载 CodeQL 包的更多信息,请参阅 发布和使用 CodeQL 包。
有关向 CodeQL 贡献的指南,请参阅 贡献 CodeQL。