首页/开发/代码质量与评审速查/Checkstyle:Java 规范检查器
规范与静态检查65 条

Checkstyle:Java 规范检查器

Checkstyle 检查 Java 代码规范:内置 google_checks.xml 与 sun_checks.xml 预设,覆盖 Javadoc、命名、import 顺序、行宽等;可集成进构建。

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 类检查与文档要求区分开:工具只能检查格式是否存在,内容是否准确仍然要靠评审把关。
规则集变更应当像代码一样评审:一次收紧多少条、哪些目录先试点,都值得写进变更说明里。
与格式化工具的规则重叠:缩进与对齐两侧都检查,结论稍有差异就会来回改动。

易错点

  • 直接套用 sun_checks 到存量项目:海量违规,团队很快放弃
  • 与格式化工具的规则冲突:修改互相打架,提交来回拉扯
  • 规则集放在 CI 服务器而不在仓库里:本地与流水线结论不一致
  • 只看违规数量不看类型:格式类占了绝大多数,复杂度问题被淹没
  • 规则集改动不经评审直接生效:全库突然开始报错,责任与原因都找不到
  • 检查失败时直接调大阈值:复杂度问题被合法化,后面再想收紧难度更大

数据来源与参考

  • Checkstyle 官方文档(checkstyle.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌