如果工作流失败并出现 Error: "No source code was seen during the build"
或 The process '/opt/hostedtoolcache/CodeQL/0.0.0-20200630/x64/codeql/codeql' failed with exit code 32
,表示 CodeQL 无法监视代码。 此问题有六个可能的原因:
-
存储库可能不包含以 CodeQL 支持的语言编写的源代码。 检查受支持的语言列表,如果是这种情况,请删除 CodeQL 工作流。 有关详细信息,请参阅“关于使用 CodeQL 进行代码扫描”。
-
自动语言检测发现了受支持的语言,但仓库中没有该语言的可分析代码。 一个典型的例子是,我们的语言检测服务发现了一个与特定的编程语言相关的文件,例如
.h
或.gyp
文件,但存储库中没有相应的可执行代码。 要解决此问题,可通过更新language
矩阵中的语言列表来手动定义要分析的语言。 例如,以下配置将仅分析 Go 和 JavaScript。strategy: fail-fast: false matrix: # Override automatic language detection by changing the list below. # Supported options are listed in a comment in the default workflow. language: ['go', 'javascript-typescript']
有关详细信息,请参阅“某些语言未使用 CodeQL 高级设置进行分析”中的工作流提取。
-
code scanning 工作流正在分析一种编译语言(C、C++、C#、Go 或 Java),但代码尚未编译。 默认情况下,CodeQL 分析工作流包含
autobuild
步骤,但是,此步骤是一个尽力而为的过程,可能无法成功构建你的代码,具体取决于你的特定构建环境。 如果你删除了autobuild
步骤但没有手动添加构建步骤,编译也可能会失败。 有关指定生成步骤的详细信息,请参阅“对编译语言进行 CodeQL 代码扫描”。 -
工作流正在分析一种编译语言(C、C++、C#、Go 或 Java),但构建的某些部分会缓存以提高性能(最有可能发生在 Gradle 或 Bazel 等构建系统中)。 因为 CodeQL 观察编译器的活动以了解仓库中的数据流,因此 CodeQL 需要进行完整的构建才能执行分析。
-
工作流正在分析一种编译语言(C、C++、C#、Go 或 Java),但编译不会在工作流中的
init
和analyze
步骤之间进行。 CodeQL 需要这两个步骤之间发生构建以观察编译器的活动并执行分析。 -
编译代码(使用 C、C++、C#、Go 或 Java)已成功编译,但 CodeQL 未能检测到编译器调用。 最常见原因是:
- 在独立于 CodeQL 的容器中运行构建过程。 有关详细信息,请参阅“在容器中运行 CodeQL 代码扫描”。
- 使用 GitHub Actions 外部的分布式构建系统,使用守护进程构建。
- CodeQL 不知道您使用的特定编译器。
如果您在特定编译器或配置方面遇到其他问题,请联系 GitHub 支持。
有关指定生成步骤的详细信息,请参阅“对编译语言进行 CodeQL 代码扫描”。