代码扫描和 CodeQL

已完成

根据想要使用的分析工具以及想要如何生成警报,有几个不同的选项可用于在存储库中设置代码扫描。 三个主要方法是:

  • 使用默认设置快速配置 CodeQL 分析,以便对存储库进行代码扫描。 默认设置自动选择要分析的语言、要运行的查询套件和触发扫描的事件。 如果需要,可以手动选择要运行的查询套件和要分析的语言。 启用 CodeQL 后,GitHub Actions 将执行工作流运行以扫描代码。 有关详细信息,请参阅“配置代码扫描的默认设置”。
  • 使用高级设置将 CodeQL 工作流添加到存储库。 这会生成一个可自定义的工作流文件,该文件使用 github/codeql-action 运行 CodeQL CLI。 有关详细信息,请参阅“配置代码扫描的高级设置”。
  • 直接在外部 CI 系统中运行 CodeQL CLI,并将结果上传到 GitHub。 有关详细信息,请参阅“对现有 CI 系统使用代码扫描”。[2]

在前面,我们了解了如何开始使用默认设置和配置。 现在,你将了解如何使用高级设置设置代码扫描,以及如何对多个存储库执行代码扫描工作流的批量设置。

使用 GitHub Actions 和 CodeQL 扫描代码

若要使用高级设置来设置代码扫描,请执行以下操作:

  1. 转至存储库的“设置”选项卡
  2. 在左侧面板中,导航到“代码安全和分析”,单击“设置”下拉列表,然后选择“高级”。 在启用代码扫描之前,可能需要启用 GitHub Advanced Security。
  3. 你将使用生成的工作流文件访问新页面。 此文件默认命名为 codeql.yml,它是一个可配置的工作流程文件,需要将其提交到你的存储库才能开始运行代码扫描。
  4. 若要自定义代码扫描的方式,请编辑工作流程。 通常,无需对 CodeQL 分析工作流进行任何更改即可提交该工作流。
  5. 使用右上角的“提交更改...”按钮,并在弹出框中键入提交消息
  6. 选择是直接提交到默认分支,还是创建新分支并启动拉取请求。
  7. 单击“提交更改”。

在默认的 CodeQL 分析工作流中,代码扫描配置为在每次将更改推送到默认分支或任何受保护的分支,或者针对默认分支提出拉取请求时分析代码。 因此,代码扫描现在将开始。

用于代码扫描的 on:pull_requeston:push 触发器各自用于不同的目的。

批量设置代码扫描

可以使用脚本同时在多个存储库中设置代码扫描。 如果要使用脚本发起将 GitHub Actions 工作流添加到多个存储库的拉取请求,请参考 jhutchings1/Create-ActionsPRs[3] 存储库,了解使用 PowerShell 的示例,或参考 nickliffen/ghas-enablement[4],了解使用 NodeJS 的示例。