https://java-self-testing.github.io/java-self-testing-book/02-code-review/#213-archunit
通用
这些规则可以组合起来,形成一个 多模块项目的 ArchUnit 检查体系:
分层依赖:Controller -> Service -> Repository
命名规范:Service、Controller、Repository、DTO、Entity
注解约束:保证 Spring / JPA 注解一致
类型使用限制:Multipart、Servlet、DTO、Entity
继承约束:Controller 必须继承 BaseController
包访问控制:internal 包只允许内部访问
见模块 eladmin-system中的DependencyRulesTest等类。
每个方法不要超过50行。
可尝试问gpt有哪些常见的规则。
规则
分层
controller
|- service
|- component
|- dao
service用于和db相关的业务,而component用于一些和db无关的业务,如调用api。它可以被service层直接调用。
controller层的类要有固定注解,如@RestController,名字要以Controller结尾。
service 层的类要有固定注解,如@Service,名字要以Service或ServiceImpl结尾。
HttServletRequest类只能出现在controller层或Filter/Interceptor中,文件上传的MultiPart对象也只能出现在controller层。
依赖
Controller 只能依赖 service 层 或 common 层,只能依赖service或component
* - 不允许依赖 repository / dao
* - 不允许依赖其他模块的 controller
工具类必须是 final 且有私有构造器
classes().that().haveSimpleNameEndingWith("Utils")
.should().beFinal()
.andShould().haveOnlyPrivateConstructors()
.check(importedClasses);
禁止方法参数过多
防止方法职责过重(如超过 5 个参数)。
methods().should().haveAtMostParameters(5)
.check(importedClasses);
最后编辑:张三 更新时间:2025-09-05 19:40