我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

在容器中运行 CodeQL 代码扫描

通过确保所有进程都在同一容器中运行,您可以在容器中运行 代码扫描。

代码扫描 适用于所有公共仓库以及启用了 GitHub Advanced Security 的组织拥有的私有仓库。 更多信息请参阅“关于 GitHub Advanced Security”。

关于使用容器化构建的 代码扫描

如果为编译语言设置 代码扫描,并且在容器化环境中构建代码,则分析可能会失败,并返回错误消息“No source code was seen during the build(在构建过程中没有看到源代码)”。 这表明 CodeQL 在代码编译过程中无法监视代码。

您必须在构建代码的容器中运行 CodeQL。 无论您使用的是 CodeQL CLI、CodeQL runner 还是 GitHub Actions,这都适用。 对于 CodeQL CLI 或 CodeQL runner,请参阅“在 CI 系统中运行 CodeQL CLI”或“在 CI 系统中运行 CodeQL runner”以了解更多信息。 如果您使用 GitHub Actions,请配置工作流程以在同一容器中运行所有操作。 更多信息请参阅“示例工作流程”。

依赖项

如果您使用的容器缺少某些依赖项(例如,Git 必须安装并添加到 PATH 变量),您可能难以运行 代码扫描。 如果遇到依赖项问题,请查看通常包含在 GitHub 虚拟环境中的软件列表。 有关更多信息,请在以下位置查看特定于版本的 readme 文件:

示例工作流程

此示例工作流程在容器化环境中使用 GitHub Actions 运行 CodeQL 分析。 container.image 的值标识要要使用的容器。 在此示例中,映像名称为 codeql-container,标记为 f0f91db。 更多信息请参阅“GitHub Actions 的工作流程语法”。

name: "CodeQL"

on: 
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    - cron: '15 5 * * 3'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      security-events: write
      actions: read

    strategy:
      fail-fast: false
      matrix:
        language: [java]

    # Specify the container in which actions will run
    container:
      image: codeql-container:f0f91db

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v1
        with:
          languages: ${{ matrix.language }}
      - name: Build
        run: |
          ./configure
          make
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v1

此文档对您有帮助吗? 隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。