Skip to main content

此版本的 GitHub Enterprise Server 将于以下日期停止服务 2026-03-17. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

关于 CodeQL 代码扫描用于已编译的语言

了解 CodeQL 如何分析已编译语言、提供哪些生成选项,以及如何在需要时自定义数据库生成流程。

谁可以使用此功能?

具有写入访问权限的用户 if advanced setup is already enabled

Code scanning 可用于以下存储库类型:

  • GitHub.com 上的公共存储库
  • GitHub Team、GitHub Enterprise Cloud 或 GitHub Enterprise Server 上的组织拥有的存储库,已启用 GitHub Advanced Security

关于 CodeQL 分析工作流程 和编译语言

Code scanning 的工作原理是针对一个或多个 CodeQL 数据库运行查询。 每个数据库都包含仓库中代码的单一语言表示形式。 对于编译语言 C/C++、C#、Go、Java、Kotlin、Rust(公共预览版)、和 Swift,填充此数据库的过程通常涉及生成代码和提取数据。

启用 code scanning 时,默认和高级设置都会使用最简单的可用方法生成 CodeQL 数据库用于分析。 对于 Java,CodeQL 数据库直接从代码库生成,而无需生成(none 生成模式)。 对于其他编译语言,CodeQL 使用 autobuild 生成模式生成代码库。 或者,也可以使用 manual 生成模式明确指定生成命令,以仅分析这些自定义命令生成的文件。

CodeQL 生成模式

CodeQL 操作支持三种不同的编译语言生成模式:

  •         `none` - CodeQL 数据库是直接从代码库创建的,无需构建代码库(支持所有解释语言,并且额外支持  Java)。
    
  •         `autobuild` - CodeQL 检测最可能的构建方法,并使用它尝试构建代码库并创建数据库进行分析(支持 C/C++、C#、Go、Java、Kotlin 和 Swift)。
    
  •         `manual` - 你可以在工作流中定义用于代码库的构建步骤(支持 C/C++、C#、Go、Java、Kotlin 和 Swift)。
    

有关与语言相关的autobuild行为、运行程序要求和手动构建指南,请参阅编译语言的 CodeQL 生成选项和步骤