跳至主要内容

错误:“在构建期间未看到源代码”

当 CodeQL 未能找到任何源代码时,您需要解决此问题以解除代码扫描分析的阻塞。

如果您的工作流因 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. 编译型语言的编译失败: 您的代码扫描工作流尝试编译一种编译型语言(C、C++、C#、Go 或 Java),但代码未被编译。当工作流为某语言指定 build-mode: autobuild 或包含 autobuild 步骤时,CodeQL 会尽力检测合适的构建方式并构建您的代码。根据具体的构建环境,autobuild 过程可能无法成功构建代码。如果您已删除 autobuild 步骤且未手动包含构建步骤,编译也可能失败。有关定义构建步骤的更多信息,请参阅 编译语言的 CodeQL 代码扫描

  4. 未检测到缓存的组件: 您的工作流构建一种编译型语言(C、C++、C#、Go 或 Java)以创建用于分析的 CodeQL 数据库,但出于提升性能的考虑,构建的部分内容被缓存(通常在 Gradle 或 Bazel 等构建系统中会出现)。因为 CodeQL 通过观察编译器的活动来了解仓库中的数据流,所以要进行分析,CodeQL 需要完整的构建过程。

  5. 编译未在 initanalyze 步骤之间进行: 您的工作流构建一种编译型语言(C、C++、C#、Go 或 Java),但编译并未在工作流的 initanalyze 步骤之间执行。CodeQL 必须在这两个步骤之间进行构建,以便观察编译器活动并执行分析。

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

    • 将构建过程与 CodeQL 放在不同的容器中运行。更多信息,请参阅 在容器中运行 CodeQL 代码扫描
    • 使用 GitHub Actions 之外的分布式构建系统(守护进程)进行构建。
    • CodeQL 并不了解您使用的特定编译器。

如果您在特定编译器或配置上遇到其他问题,请通过 GitHub 支持门户 与我们联系。

有关指定构建步骤的更多信息,请参阅 编译语言的 CodeQL 代码扫描

© . This site is unofficial and not affiliated with GitHub, Inc.