关于 CodeQL 包
CodeQL 包用于创建、共享、依赖和运行 CodeQL 查询和库。 可以通过下载其他人创建的包并在代码库上运行这些包来自定义 CodeQL 分析。
每个 CodeQL 包的根目录中都需要一个 qlpack.yml 文件,该文件需指定:
- 如何编译查询
- 对其他 CodeQL 包和库的依赖关系
- 查询套件定义
有关 qlpack.yml 属性的详细信息,请参阅 使用 CodeQL 包自定义分析。
此外,一个CodeQL包可以包含:
- 自定义查询(
.ql文件) - 库文件
- 查询套件
- 元数据
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-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 贡献内容。