Standalone Perforce changelist review bot for the Ceramica project.
P4 Review Bot 是一个独立运行的 Perforce changelist 审查工具。它轮询已提交的 changelist,读取描述、文件列表和文本 diff,加载 TechDoc.rules.yaml 中的确定性规则并逐条评估,把结果写入 review-last.json,最后按 changelist 向 Discord 发送通知。
工作原理
工具把“人肉检查 changelist”变成一条可复现的流水线:
- 轮询 Perforce:通过
p4 changes -s submitted获取已提交的 changelist。 - 读取提交内容:提取 changelist 描述、涉及文件路径、文本 diff。
- 加载规则:用 Node.js +
js-yaml把TechDoc.rules.yaml解析成规则集合。 - 规则评估:按
submission / naming / organization分类逐条检查。 - 写回结果:输出到
review-last.json,便于后续读取和回放。 - 发送通知:可选把结果发到 Discord,并按
warning / error / blocker分级展示。
规则系统
规则不是写死在 PowerShell 里,而是从 YAML 动态加载。每条规则包含:
idcategoryseverityapplies_tocheckexceptionsmessage
以三个提交规则为例:
CER-SUBMIT-001:changelist 描述必须以作者名结尾。CER-SUBMIT-002:描述不能为空或使用默认文本。CER-SUBMIT-003:生成的本地文件不得提交到 depot。
这种结构让规则可以独立修改,而不需要改动主脚本。
输出与通知
- 没有
warning / error / blocker:发送绿色 success embed。 - 有
warning:黄色 embed。 - 有
error:红色 embed。 - 有
blocker:加粗红色错误。 info:写入review-last.json,但不发到 Discord。
每个 changelist 会单独发一条消息,并在对应 embed 上方 @ 作者。
运行示例

运行
|
技术栈
- Windows PowerShell 5.1+
- Perforce
p4.exe - Node.js /
js-yaml - Discord Webhook
链接
- GitHub 仓库:https://github.com/FFFeiya/P4ReviewBot
- 项目规则来源:
rules/TechDoc.rules.yaml - 项目说明:
README.md