Checkstyle 是什么
Checkstyle 是 Java 代码规范检查器:按规则集检查 Javadoc、命名、导入顺序、行宽、复杂度等项目,内置 google_checks.xml 与 sun_checks.xml 两套预设,也支持自定义规则集。通过 Maven 或 Gradle 插件接入之后,可以让违规直接导致构建失败。
基本信息
| 预设规则集 | google_checks.xml / sun_checks.xml |
|---|---|
| 集成方式 | Maven 或 Gradle 插件,可配置为构建失败 |
| 典型模块 | Javadoc、命名、导入顺序、行宽、复杂度 |
| 职责边界 | 规范与结构类检查,格式交给格式化工具 |
典型使用场景
- 存量项目引入:先裁剪规则集,再逐步收紧
- 新项目定规范:采用预设并用格式化工具对齐格式
- 多模块仓库:统一规则集文件,各模块共用
- 评审自动化:把常见规范问题交给检查器
- 与格式化工具分工:格式由 Spotless 之类负责,规范由它负责
规则集管理建议
- 选一个预设作为基线,只做必要裁剪
- 裁剪规则时在文件里写清理由
- 格式类规则尽量交给格式化工具
- 规则集变更单独提交,便于回溯影响范围
Gradle 片段
Gradle 片段
checkstyle {
config = resources.text.fromFile("config/checkstyle/checkstyle.xml")
}
// 命令行:./gradlew checkstyleMain预设与关注点
| 预设 | 特点 |
|---|---|
| google_checks | 对应 Google Java 风格,行宽 100、缩进 2 空格 |
| sun_checks | 传统约定,行宽与命名要求更严格 |
| 自定义规则集 | 按团队标准裁剪,随项目一起入库 |
存量项目先裁剪规则集再逐步收紧,避免一次性上千条违规让团队直接失去信心。
在评审中的用法:规则集文件随代码一起入库,本地与流水线共用同一份,评审者因此可以只关注检查覆盖不到的设计与语义问题。
把 Javadoc 类检查与文档要求区分开:工具只能检查格式是否存在,内容是否准确仍然要靠评审把关。
规则集变更应当像代码一样评审:一次收紧多少条、哪些目录先试点,都值得写进变更说明里。
与格式化工具的规则重叠:缩进与对齐两侧都检查,结论稍有差异就会来回改动。