关于 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 生成选项和步骤。