Skip to main content

配置代码扫描的高级设置

可以为存储库配置高级设置,以使用高度可自定义的 code scanning 配置查找代码中的安全漏洞。

谁可以使用此功能?

具有管理员角色的存储库所有者、组织所有者、安全管理员和用户

Code scanning 可用于以下存储库类型:

  • GitHub.com 上的公共存储库
  • 启用了 GitHub Advanced Security 的 GitHub Enterprise Cloud 上的组织拥有的存储库

关于 code scanning 的高级设置

需要自定义 code scanning 时,code scanning 的高级设置非常有用。 通过创建和编辑工作流文件,可以定义如何生成已编译语言、选择要运行的查询、选择要扫描的语言、使用矩阵生成等。 还可以访问用于控制工作流的所有选项,例如:更改扫描日程安排、定义工作流触发器、指定要使用的专业运行器。 有关 GitHub Actions 工作流的详细信息,请参阅“关于工作流程”。

还可以使用第三方工具配置 code scanning。 有关详细信息,请参阅“使用第三方操作配置 code scanning”。

如果使用多个配置运行代码扫描,则警报有时会有多个分析源。 如果警报有多个分析源,你可在警报页上查看每个分析源的警报状态。 有关详细信息,请参阅“关于代码扫描警报”。

如果不需要高度可自定义的 code scanning 配置,请考虑使用 code scanning 的默认设置。 有关默认设置资格的详细信息,请参阅“配置代码扫描的默认设置”。

先决条件

如果存储库满足这些要求,则其符合使用高级设置的条件。

  • 使用 CodeQL 支持的语言,或者你计划使用第三方工具生成代码扫描结果。
  • 已启用 GitHub Actions。
  • 公开可见,或已启用 GitHub Advanced Security。

使用 CodeQL 为 code scanning 配置高级设置

可以通过创建和编辑工作流文件来自定义 CodeQL 分析。 选择高级设置会生成一个基础工作流文件,让你可以使用标准工作流语法以及指定用于进行 CodeQL 操作的选项来进行自定义。 请参阅“关于工作流程”和“自定义代码扫描的高级设置”。

使用操作运行 code scanning 将消耗分钟数。 有关详细信息,请参阅“关于 GitHub Actions 的计费”。

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  3. 在边栏的“Security”部分中,单击“ Code security”****。

  4. 向下滚动到“Code scanning”部分,选择“设置”,然后单击“高级” 。

    Note

    如果要从默认设置切换到高级设置,请在“Code scanning”部分中,选择“”,然后单击 “切换到高级”****。 在出现的弹出窗口中,单击“禁用 CodeQL”。

    “Code security”设置的“Code scanning”部分的屏幕截图。 “高级设置”按钮以橙色轮廓突出显示。

  5. 要自定义 code scanning 扫描代码的方式,请编辑工作流程。

    通常,可以提交 CodeQL 分析工作流程 而无需对其进行任何更改。 但是,许多第三方工作流需要额外的配置,因此请在提交之前读取工作流中的注释。

    有关详细信息,请参阅 自定义代码扫描的高级设置对编译语言进行 CodeQL 代码扫描

  6. 单击“提交更改…”以显示提交更改窗体。

    用于创建新文件的窗体的屏幕截图。 在文件名右侧,标有“提交更改...”的绿色按钮以深橙色框出。

  7. 在“提交消息”字段中,键入提交消息。

  8. 选择是直接提交到默认分支,还是创建新分支并启动拉取请求。

  9. 单击“提交新文件”将工作流文件提交到默认分支或单击“建议新文件”将文件提交到新分支 。

  10. 如果创建了新分支,请单击“创建拉取请求”并打开拉取请求,将更改合并到默认分支。

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

用于代码扫描的 on:pull_requeston:push 触发器各自用于不同的目的。 请参阅“自定义代码扫描的高级设置”和“触发工作流程”。

有关批量启用的信息,请参阅“使用 CodeQL 大规模为代码扫描配置高级设置”。

使用第三方操作配置 code scanning

GitHub Enterprise Cloud 包括第三方操作的工作流模板,以及 CodeQL 操作。 使用工作流模板比编写工作流更轻松。

使用操作运行 code scanning 将消耗分钟数。 有关详细信息,请参阅“关于 GitHub Actions 的计费”。

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在存储库名称下,单击 “操作”。

    “github/docs”存储库的选项卡的屏幕截图。 “操作”选项卡以橙色边框突出显示。

  3. 如果存储库已配置并运行至少一个工作流,请单击“新建工作流”以显示工作流模板。 如果当前没有为存储库配置工作流程,请转到下一步。

    存储库的“操作”选项卡的屏幕截图。 “新建工作流”按钮用深橙色框标出。

  4. 在“选择工作流”或“GitHub Actions 入门”视图中,向下滚动到“安全性”类别,然后单击要配置的工作流下的“配置”。 可能需要单击“查看全部”以查找要配置的安全工作流。

    工作流模板的“安全性”类别的屏幕截图。 “配置”按钮和“查看全部”链接通过橙色轮廓突出显示。

  5. 按照工作流中的任何说明,根据你的需要对其进行自定义。 有关工作流的更多常规帮助,请单击工作流页面右窗格中的“文档”。

    显示打开工作流模板文件以便编辑的屏幕截图。 “文档”按钮以橙色轮廓突出显示。

    有关详细信息,请参阅 使用工作流模板自定义代码扫描的高级设置

后续步骤

当工作流至少成功运行一次后,可以开始检查并解决 code scanning 警报。 有关 code scanning 警报的详细信息,请参阅“关于代码扫描警报”和“评估存储库的代码扫描警报”。

若要了解 code scanning 在拉取请求上如何作为检查运行,请参阅“鉴定拉取请求中的代码扫描警报”。

可以在工具状态页上找到有关 code scanning 配置的详细信息,包括每次扫描的时间戳和扫描的文件百分比。 有关详细信息,请参阅“关于代码扫描的工具状态页”。

其他阅读材料