checkstyle
现装介绍
目前 使用的CheckStyle 版本是checkstyle-6.16.1-all.jar。
目前的CheckStyle的验证方式是 通过 git hook 的方式来进行,验证。即,在push 代码的时候,通过一段shell 脚本来验证 本次变更中 哪些Java代码是 不合规范的。
Each module has a severity property that a Checkstyle audit assigns to all violations of the check. The default severity level of a check is error.
旧的CheckStyle 梳理
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!--
Checkstyle-Configuration: easyop-cs-2.0
Description: easyop checkstyle rule 2.0, since 2018-02-01
-->
<module name="Checker">
<property name="severity" value="error"/>
<module name="TreeWalker">
<!-- 当配置为 TreeWalker 子模块时,保存当前文件内容以供全局访问。例如,过滤器可以通过此模块访问当前文件内容。 -->
<module name="FileContentsHolder"/>
<!-- 参数分配通常被认为是糟糕的编程实践。强制开发人员将参数声明为 final 通常是繁重的。检查确保永远不会分配参数将两全其美。 -->
<module name="ParameterAssignment">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!-- 不许使用未被简化的条件表达式 -->
<module name="SimplifyBooleanExpression">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!-- 检查静态的非final变量名是否符合指定的模式,默认"^[a-z][a-zA-Z0-9]*$" -->
<module name="StaticVariableName">
<property name="severity" value="error"/>
</module>
<!-- 检查方法名称是否符合指定的模式,默认"^[a-z][a-zA-Z0-9]*$" -->
<module name="MethodName">
<property name="severity" value="error"/>
</module>
<!-- 不许内部赋值 String s = Integer.toString(i = 2) -->
<module name="InnerAssignment">
<property name="severity" value="error"/>
</module>
<!-- 检查未使用的导入包 -->
<module name="UnusedImports">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!-- 检查字符串字面值是否与==或!=一起使用。因为==将比较对象引用,而不是字符串的实际值,所以应该使用String.equals() -->
<module name="StringLiteralEquality">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!-- 检查接口和annotation中是否有多余修饰符,如接口方法不必使用public -->
<module name="RedundantModifier">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!-- 检查指定的类型是否声明为要抛出。声明一个方法会引发java.lang.Error或java.lang.RuntimeException几乎是不可接受的 -->
<module name="IllegalThrows">
<property name="severity" value="error"/>
</module>
<!--检查长匿名内部类长度,最大30 -->
<module name="AnonInnerLength">
<property name="severity" value="error"/>
<property name="max" value="30"/>
</module>
<!-- 检查实例变量名称是否符合指定的模式,默认"^[a-z][a-zA-Z0-9]*$" -->
<module name="MemberName">
<property name="severity" value="error"/>
</module>
<!-- 检查常量名称是否符合指定的模式,默认"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$" -->
<module name="ConstantName">
<property name="severity" value="error"/>
</module>
<!-- 包名的检查(只允许小写字母),默认^[a-z]+(\.[a-zA-Z_][a-zA-Z_0-9_]*)*$ -->
<module name="PackageName">
<property name="severity" value="error"/>
</module>
<!-- 检查default是否在switch语句中的所有case之后。 -->
<module name="DefaultComesLast">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!-- 检查某一个类中equals() 和 hashCode() 方法是否同时被重写,即一个被重写,另外一个也必须被重写。通常将二者看成一个override 操作。 -->
<module name="EqualsHashCode">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!--不许使用未被简化的布尔返回值
if (valid()){
return false;
}else{
return true;
} -->
<module name="SimplifyBooleanReturn">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!-- 检查局部变量或参数是否不影响同一类中定义的字段。 -->
<module name="HiddenField">
<property name="severity" value="error"/>
<property name="tokens" value="VARIABLE_DEF"/>
<property name="ignoreConstructorParameter" value="true"/>
<property name="ignoreSetter" value="true"/>
</module>
<!-- 检查局部final变量名称是否符合指定的模式。try语句中的catch参数和资源被认为是局部的、最终的变量,默认"^[a-z][a-zA-Z0-9]*$" -->
<module name="LocalFinalVariableName">
<property name="severity" value="error"/>
</module>
<!-- 函数的分支复杂度,不超过10 -->
<module name="CyclomaticComplexity">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!-- 检查类成员的可见性。只有static final、不可变或由指定注释成员注释的才可以是public;除非设置了protectedAllowed或packageAllowed属性,否则其他类成员必须是私有的。 -->
<module name="VisibilityModifier">
<property name="severity" value="warning"/>
<property name="packageAllowed" value="true"/>
<property name="protectedAllowed" value="true"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
<!-- 检查局部的非final变量名是否符合指定的模式。catch参数被认为是一个局部变量,默认"^[a-z][a-zA-Z0-9]*$" -->
<module name="LocalVariableName">
<property name="severity" value="error"/>
<property name="format" value="^[a-z][_a-zA-Z0-9]*$"/>
</module>
<!-- 检查方法参数名称是否符合指定的模式,默认"^[a-z][a-zA-Z0-9]*$" -->
<module name="ParameterName">
<property name="severity" value="error"/>
</module>
<!-- 布尔表达式的复杂度,不超过5 -->
<module name="BooleanExpressionComplexity">
<property name="severity" value="error"/>
<property name="max" value="5"/>
</module>
<!-- 检查长方法和构造函数,默认最大150行。不统计空行。 -->
<module name="MethodLength">
<property name="severity" value="error"/>
<property name="countEmpty" value="false"/>
</module>
<!-- 将嵌套的if-else块限制到指定的深度 -->
<module name="NestedIfDepth">
<property name="severity" value="info"/>
<property name="max" value="5"/>
</module>
<!-- 将嵌套的try-catch-finally块限制到指定的深度。默认1 -->
<module name="NestedTryDepth">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!-- 方法的参数个数,默认为7。 -->
<module name="ParameterNumber">
<property name="severity" value="error"/>
</module>
<!-- 查找嵌套块(在代码中自由使用的块)。 -->
<module name="AvoidNestedBlocks">
<property name="severity" value="error"/>
</module>
<!-- 检查字符串字面值的任何组合是否位于equals()比较的左侧。还检查分配给某些字段的字符串字面量(例如someString。= (anotherString =“文本”) -->
<module name="EqualsAvoidNull">
<property name="severity" value="error"/>
</module>
<!-- 检查优先使用工厂方法的非法实例化。 根据项目的不同,对于某些类,最好通过工厂方法创建实例而不是调用构造函数。 -->
<module name="IllegalInstantiation">
<property name="severity" value="error"/>
</module>
<!-- 检查 for 循环控制变量在 for 块内没有被修改 -->
<module name="ModifiedControlVariable">
<property name="severity" value="error"/>
</module>
<!-- Class或Interface名检查,默认^[A-Z][a-zA-Z0-9]*$ -->
<module name="TypeName"/>
<!-- 检查数组类型定义的样式 -->
<module name="ArrayTypeStyle"/>
<!-- 检查long型定义是否有大写的“L” -->
<module name="UpperEll"/>
<!-- 检查所有的interface和class allowUnknownTags:控制在无法识别 Javadoc 标记时是否忽略违规。 -->
<module name="JavadocType">
<property name="allowUnknownTags" value="true"/>
</module>
<!-- 多余的导入语句 -->
<module name="RedundantImport"/>
<!-- 检查空块。此检查不验证顺序块。 -->
<module name="EmptyBlock">
<property name="severity" value="error"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<!-- 检查每个变量声明是否在其自己的语句中并在其自己的行上。 -->
<module name="MultipleVariableDeclarations"/>
<!-- 限制方法、构造函数和 lambda 表达式中返回语句的数量。 -->
<module name="ReturnCount">
<property name="max" value="4"/>
</module>
<!-- 验证 Javadoc 注释以帮助确保它们的格式正确。 -->
<module name="JavadocStyle">
<property name="severity" value="ignore"/>
<property name="checkFirstSentence" value="false"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
</module>
</module>
<!-- 文件长度不超过1500行 -->
<module name="FileLength">
<property name="severity" value="error"/>
</module>
</module>CheckStyle 升级
maven 配置。
CheckStyle 升级
Last updated
Was this helpful?