<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
Checkstyle Configuration for Nop Platform 2.0
设计原则:
1. 只检测真正的 BUG 和潜在缺陷,不强制编码风格
2. 风格相关规则已按 nop-entropy 项目实际编码习惯配置
3. 自动生成文件(_gen/、_前缀文件)由 sonar.exclusions 排除,此处不重复处理
4. 与 SonarQube 互补:Checkstyle 做编译前快速拦截,SonarQube 做深度分析
-->
<module name="Checker">
<property name="charset" value="UTF-8"/>
<property name="severity" value="warning"/>
<property name="fileExtensions" value="java"/>
System.out/err 检测
cli/、boot/、benchmark 模块合法使用 System.out,通过 suppression 过滤
-->
<module name="RegexpSingleline">
<property name="format" value="System\.(out|err)\.print"/>
<property name="message" value="核心模块请使用 SLF4J Logger 替代 System.out/err"/>
</module>
<module name="TreeWalker">
<module name="EmptyBlock">
<property name="option" value="text"/>
</module>
<module name="EmptyCatchBlock">
<property name="exceptionVariableName" value="expected"/>
</module>
<module name="CovariantEquals"/>
<module name="NoFinalizer"/>
<module name="StringLiteralEquality"/>
<module name="IllegalToken">
<property name="tokens" value="LITERAL_NATIVE"/>
</module>
<module name="UnusedImports"/>
<module name="RedundantImport"/>
<module name="MissingDeprecated"/>
圈复杂度:放宽到 15
项目框架代码逻辑分支多,原值 10 产生大量噪音
-->
<module name="CyclomaticComplexity">
<property name="max" value="15"/>
</module>
方法长度:150 行
项目实际大部分方法在 50 行内,150 行是合理的上限
-->
<module name="MethodLength">
<property name="max" value="150"/>
<property name="countEmpty" value="false"/>
</module>
参数数量:7 个
Nop 平台 API 方法参数较多,7 个是合理上限
-->
<module name="ParameterNumber">
<property name="max" value="7"/>
</module>
匿名内部类长度:放宽到 40 行
项目中 Lambda 和 Stream 使用广泛,20 行限制太严格
-->
<module name="AnonInnerLength">
<property name="max" value="40"/>
</module>
MagicNumber:允许 -1, 0, 1, 2, 3, 10, 100
项目大量使用常见字面量,这些数字语义清晰无需常量化
-->
<module name="MagicNumber">
<property name="ignoreNumbers" value="-1, 0, 1, 2, 3, 10, 100"/>
<property name="ignoreHashCodeMethod" value="true"/>
</module>
IllegalThrows:保留检测,但允许 throws Exception
Nop 平台统一使用 NopException 体系,标注 throws Exception 是合法模式
-->
<module name="IllegalThrows">
<property name="illegalClassNames" value="java.lang.Error, java.lang.RuntimeException, java.lang.Throwable"/>
</module>
Star import:允许 static star import(项目常用 import static xxx.*)
普通星号导入仍然禁止
-->
<module name="AvoidStarImport">
<property name="allowStaticMemberImports" value="true"/>
</module>
</module>
</module>