Skip to main content

为拉取请求设置代码质量阈值

通过阻止低于在存储库或组织级别设置的阈值的拉取请求,自动强制实施代码质量标准。

谁可以使用此功能?

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

GitHub Team 或 GitHub Enterprise Cloud

可以通过向规则集添加 Code Quality 阈值来阻止不符合代码质量标准的拉取请求。 如果拉取请求不满足阈值,则无法合并请求。

可以为以下项设置阈值:

  • CodeQL 发现结果,按您要求解决的结果的最低严重性级别排序。
  • 代码覆盖率,按测试必须覆盖的最低代码百分比。

可以在 存储库 级别或 组织 级别强制实施这些阈值,以一次性跨多个存储库应用相同的标准。 当您希望在各个团队之间采用统一的质量标准时,请选择组织级别;当单个项目需要自己的标准时,请选择仓库级别。 Code Quality AI 检测不能设置为阈值。

先决条件

注意

仅当存储库具有一个或多个受支持语言的代码时,阈值才会产生影响,请参阅 启用 GitHub Code Quality

确认 Code Quality 在拉取请求中成功运行

在添加或更新规则集以纳入 Code Quality 的阈值之前,请确认 代码质量 工作流正在运行,并将结果反馈到拉取请求中。 否则,规则集可能会阻止所有拉取请求的合并。

  1. 打开最近的拉取请求,滚动到拉取请求底部的“检查”摘要。
  2. 确认“CodeQL - 代码质量”检查已成功运行并报告其状态。

有关详细信息,请参阅“基于 CodeQL 的代码质量分析”。

添加或更新规则集以包含 Code Quality

以下步骤在存储库级别创建或更新规则集。 若要一次性跨多个存储库强制实施相同的阈值,请改为创建具有相同 “需要代码质量结果 ”规则的组织规则集。 请参阅“创建组织中存储库的规则集”。

  1. 导航到存储库的“设置”选项卡。
  2. 在左侧边栏中的“代码和自动化”下,展开 “规则”,然后单击“ 规则集”。
  3. 如果还没有用于保护默认分支的规则集,请展开 “新建规则集 ”,然后单击“ 新建分支规则集”。 或者,打开默认分支的现有规则集并移动到步骤 5。
  4. 如果要创建新的规则集:
    • 定义规则集的名称。
    • 将“强制状态”设置为“活动”。
    • 在“目标分支”下,添加“包括默认分支”的目标。
  5. 在“分支规则”下,启用“要求代码质量结果”。
  6. 设置“严重级别”以定义拉取请求合并到默认分支之前必须解决的代码质量结果的最低严重级别。 例如:
    • 将“错误”设置为阻止含有未解决代码质量错误的拉取请求合并。
    • 设置“警告及以上”以阻止包含未解决的代码质量警告错误的拉取请求合并。
    • 设置“注释和更高”以阻止未解析的代码质量注释警告错误的拉取请求被合并。
    • 设置“All”以阻止包含任何未解决的代码质量问题的拉取请求被合并。
  7. 完成定义或编辑规则集后,单击“ 创建 ”或“ 保存更改”。

设置代码覆盖率阈值

还可以阻止低于代码覆盖率阈值的拉取请求。 这使用单独的 “限制代码覆盖率 ”规则,而不是上面使用的 “需要代码质量结果 ”规则,存储库必须首先上传代码覆盖率数据。 有关完整过程,请参阅 为拉取请求设置代码覆盖率阈值

后续步骤

了解GitHub Code Quality如何在拉取请求上工作以防止代码质量问题到达默认分支。 请参阅“防止代码质量问题到达默认分支”。