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-08-28 16:24
最后编辑:张三  更新时间:2025-09-05 19:40