首页/开发/代码质量与评审速查/CODEOWNERS:把评审责任绑定到目录
代码评审64 条

CODEOWNERS:把评审责任绑定到目录

CODEOWNERS 文件为路径指定默认评审人:PR 修改到对应路径时自动请求 owner 评审,与分支保护配合可要求必须批准。

CODEOWNERS 是什么

CODEOWNERS 是把评审责任绑定到目录的配置文件:为路径指定默认评审人,改动命中该路径时自动请求对应负责人评审。它与分支保护配合可以要求「必须由代码负责人批准」才能合并,从而把「谁该看这段代码」从口头约定变成可执行的规则。

基本信息

文件位置常见于仓库根目录、.github/ 或 docs/ 目录
匹配规则按行从上到下匹配,最后命中的规则生效
可指定的对象个人账号或团队,需要具备仓库的写权限
配合规则开启「需要代码负责人批准」后才具备强制力

CODEOWNERS 示例

CODEOWNERS 示例
# 按最后匹配生效;顺序从通用到具体
*                       @team/core
/docs/                  @team/docs
/payment/               @team/payments @alice
*.proto                 @team/api

编写要点

  • 顺序从通用到具体:最后匹配的规则生效,具体路径写在后面。
  • 责任落到小组或具体的人:owner 团队过大等于没有 owner。
  • 高风险目录必须有明确负责人(支付、权限、数据迁移脚本)。
  • 配置文件本身也要有 owner:随意放宽规则等于降低整库门槛。
  • 定期清理:团队重组后及时更新,避免请求发给已解散的团队。
  • 新增目录要同步登记:新模块如果没被规则覆盖,会默认漏掉负责人。
  • 规则放宽必须走评审:CODEOWNERS 的修改等同于调整整库的门槛。
  • 每年核对一次 owner 与团队分工:人员变动后不更新,责任会落到已离开的人身上。

常见配置问题

问题后果
规则顺序写反具体路径被后面的通配符规则覆盖
指向过大的团队无人觉得是自己的责任,评审被搁置
owner 离职未更新请求无人响应,改动长期挂着
只配文件不配目录新增文件不命中规则,自动漏掉负责人
owner 团队过大等于没有 owner:维护责任要落到具体小组或个人身上。
不同平台的语法细节有差异(路径写法、是否支持章节分组):迁移仓库时要重新核对规则是否仍按预期生效。

易错点

  • 规则顺序写反:具体路径被后面的通配符规则覆盖,负责人没被请求。
  • 无人维护的 CODEOWNERS:评审请求发给已解散的团队,改动长期挂起。
  • 把责任指向整个团队:没人认为是自己的事,评审被无限期搁置。
  • 配置了 owner 但没启用强制批准:规则存在却不生效,形成虚假的安全感。

数据来源与参考

  • GitHub Docs · About code owners
  • GitLab Docs · Code Owners
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌