守护规则全集 · 24 条
这些规则帮团队少犯错——每一条都是构建期真正执行的断言。
本清单由构建生成,与实际执行一致 · 2026-10-10T01:08:01.331Z
| 域 | 拦什么 | 怎么拦 | 违反时报什么 |
|---|---|---|---|
| 分层与依赖方向 | app 层直接 import infra.mapper | 架构断言 | 构建失败,报错点名文件与行号 |
| 依赖方向 | Handler 返回 app 层类型造成反向依赖 | 架构断言 | 构建失败 |
| 禁用模式 | @Autowired 字段注入 / Controller 直连 Mapper | 禁用模式断言 | 构建失败并点名类名 |
| 禁用模式 | System.out / new Date() / domain 引用 Spring Web | 禁用模式断言 | 构建失败并点名类名 |
| 契约一致性 | 契约登记接口数与实际接口数不符 | 一致性测试 | 构建失败并打印差集 |
| 权限码一致性 | 引用了未登记的权限码常量 | 一致性测试 | 构建失败并列出所有引用点 |
| 权限码一致性 | 代码中出现字面量权限码 | 全仓扫描 | 构建失败并列出文件与行号 |
| 鉴权默认拒绝 | 新增接口未标注鉴权 | 启动期守卫 | 启动失败;匿名访问返回固定错误码 |
| 数据访问 | XML 手写查询漏掉逻辑删除条件 | SQL 断言 | 测试失败并打印真实 SQL |
| 事务边界 | Repository 层出现 @Transactional | 架构断言 | 构建失败并点名方法 |
| 迁移脚本 | 修改已执行的迁移脚本 | changeset 校验 | 构建失败并点名脚本 |
| 构建可复现 | 未格式化代码提交 | 提交钩子 + CI | 提交被拦下 |
| 分层与依赖方向 | domain 层直接依赖 app 层 DTO | 架构断言 | 构建失败并点名文件与行号 |
| 依赖方向 | common 层反向引用业务模块 | 架构断言 | 构建失败并点名文件与行号 |
| 禁用模式 | new Thread 与自建线程池 | 禁用模式断言 | 构建失败并点名类名 |
| 契约一致性 | 错误码号段与登记不一致 | 一致性测试 | 构建失败并打印差集 |
| 数据访问 | 未标注字段进入查询条件 | 条件白名单 | 条件被丢弃并告警 |
| 数据访问 | 模糊查询未转义通配符 | 框架自动转义 | 不报错,但杜绝注入式匹配 |
| 数据访问 | 分页缺少稳定排序导致翻页抖动 | 排序白名单 + 兜底排序 | 不报错,行序稳定 |
| 迁移脚本 | 新增 changeset 序号回退或重复 | changeset 校验 | 构建失败并点名脚本 |
| 日志与脱敏 | 日志中出现手机号 / 密码明文 | 序列化脱敏 | 不报错,输出已脱敏 |
| 可观测 | 异步入口丢失 traceId | 执行器透传 | 不报错,五个入口取值全等 |
| 构建可复现 | 依赖未锁版本 | 版本目录锁定 | 构建失败 |
| 构建可复现 | 测试骨架缺失导致生成物无法过构建 | 生成器自带测试 | 构建失败 |
域
分层与依赖方向
2 条
依赖方向
2 条
禁用模式
3 条
契约一致性
2 条
权限码一致性
2 条
鉴权默认拒绝
1 条
数据访问
4 条
事务边界
1 条
迁移脚本
2 条
构建可复现
3 条
日志与脱敏
1 条
可观测
1 条
顺带一提:过不了架构校验的代码,合不进去。