Skip to main content

错误:“生成期间未看到源代码”或“进程 '/opt/hostedtoolcache/CodeQL/0.0.0-20200630/x64/codeql/codeql' 失败,退出代码为 32”

当 CodeQL 找不到任何源代码时,需要解决此问题以取消阻止 code scanning 分析。

如果工作流失败并出现 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 无法监视代码。 此问题有六个可能的原因:

  1. 存储库可能不包含以 CodeQL 支持的语言编写的源代码。 检查受支持的语言列表,如果是这种情况,请删除 CodeQL 工作流。 有关详细信息,请参阅“关于使用 CodeQL 进行代码扫描”。

  2. 自动语言检测发现了受支持的语言,但仓库中没有该语言的可分析代码。 一个典型的例子是,我们的语言检测服务发现了一个与特定的编程语言相关的文件,例如 .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 高级设置进行分析”中的工作流提取。

  3. code scanning 工作流正在分析一种编译语言(C、C++、C#、Go 或 Java),但代码尚未编译。 默认情况下,CodeQL 分析工作流包含 autobuild 步骤,但是,此步骤是一个尽力而为的过程,可能无法成功构建你的代码,具体取决于你的特定构建环境。 如果你删除了 autobuild 步骤但没有手动添加构建步骤,编译也可能会失败。 有关指定生成步骤的详细信息,请参阅“对编译语言进行 CodeQL 代码扫描”。

  4. 工作流正在分析一种编译语言(C、C++、C#、Go 或 Java),但构建的某些部分会缓存以提高性能(最有可能发生在 Gradle 或 Bazel 等构建系统中)。 因为 CodeQL 观察编译器的活动以了解仓库中的数据流,因此 CodeQL 需要进行完整的构建才能执行分析。

  5. 工作流正在分析一种编译语言(C、C++、C#、Go 或 Java),但编译不会在工作流中的 initanalyze 步骤之间进行。 CodeQL 需要这两个步骤之间发生构建以观察编译器的活动并执行分析。

  6. 编译代码(使用 C、C++、C#、Go 或 Java)已成功编译,但 CodeQL 未能检测到编译器调用。 最常见原因是:

    • 在独立于 CodeQL 的容器中运行构建过程。 有关详细信息,请参阅“在容器中运行 CodeQL 代码扫描”。
    • 使用 GitHub Actions 外部的分布式构建系统,使用守护进程构建。
    • CodeQL 不知道您使用的特定编译器。

如果您在特定编译器或配置方面遇到其他问题,请联系 GitHub 支持

有关指定生成步骤的详细信息,请参阅“对编译语言进行 CodeQL 代码扫描”。