checkstyle检查配置文档

阅读(104)
评论(0)
Beginning

本文转载自:http://www.blogjava.net/amigoxie/archive/2014/05/31/414287.html  


其它部分请参考原文

3.4 checkstyle常见提示速查#

         Checkstyle常见错误和警告提示见下表所示:

错误提示

错误说明

missing a javadoc comment

缺少类注释

Line longer than X characters

行长度超过X个字符(包括空格)

Return count is X(max allowed 3)

一个方法内的返回数量是X(最大值只能为3)

Nested if-else depth is X(max allowed is 3)

最大的if-else嵌套层数为X(最大只能为3)

Array brackets at illegal position

数组的方括号“[]”的位置不正确(检查数组类型的定义是String[] args,而不是String args[]

Line matchs the illegal pattern 'System\.out\.println'

本行包含System.out.println语句

ctor def modifier at indentation level 8 not at corrent indentation 4

缩进不正确,一般是因为没有在Eclipse中使用4个空格代替tab键引起。

'static' modifier out of order with the JLS suggestions

static修饰符没有按照JLS的建议来排序(eg.写成public final static...应该改成public static final)

Name 'X' must match pattern '^[A-Z][A-Z0-9][_A-Z0-9+]$'(正则表达式)

名称不符合正则表达式'^[A-Z][A-Z0-9][_A-Z0-9+]$'(即为大写字母,数字、下划线等)

一般在静态变量没有大写时提示,包名不是全部消息时提示,类名不是大写开头时提示,方法名不是小写开头时提示

Variable access definition in wrong order

变量定义顺序不正确(例如在类成员变量定义时,将private类型的变量定义在public类型的变量之前)

Static variable definition in wrong order

静态变量定义顺序不正确(例如在构造函数之后定义静态变量)

Instance variable definition in wrong order

成员变量定义顺序不正确(例如在构造函数之后定义成员变量)

X is a magic number

X是一个魔术数字(012的数字)

if construct must use '{}'

if结构必须使用'{}'

Got an exception - Unexpected character 0xfffd in identifier

因为没有设置checkstyle配置文件的charsetUTF-8,而类文件使用UTF-8编码,并且含有中文

{ should be on the previous line

{ 应该位于前一行

Methods is missing a javadoc comment

方法前面缺少javadoc注释

Expected @throws tag for Exception

在注释中希望有@throws的说明

. Is preceeded with whitespace

. 前面不能有空格

. Is followed by whitespace

. 后面不能有空格

= is not preceeded with whitespace=

前面缺少空格

= is not followed with whitespace

= 后面缺少空格

} should be on the same line

} 应该与下条语句位于同一行

Unused @param tag for unused

没有参数“unused”,不需注释

Variable X missing javadoc

变量“CA”缺少javadoc注释

Line contains a tab character

行含有”tab 字符

Redundant Public modifier

冗余的“public modifier

final modifier out of order with the JSL suggestion

final修饰符的顺序错误

Avoid using the .* form of import

Import格式避免使用“.*

Redundant import from the same package

从同一个包中Import内容

Unused import-X Import

importX类没有被使用

Duplicate import to line X

重复Import同一个内容

Import from illegal package

从非法包中 Import内容

while construct must use {}

while 语句缺少“{}

Variable X must be private and have accessor method

变量“X”应该是private的,并且有调用它的方法

Variable X must match pattern ^[a-z][a-zA-Z0-9]*$

变量“X”不符合命名规则“^[a-z][a-zA-Z0-9]*$

( is followed by whitespace

( 后面不能有空格

) is proceeded by whitespace

) 前面不能有空格

4、附录

4.1 eclipse_checkstyle.xml文件内容#

         Checkstyle配置文件eclipse_checkstyle如下所示:

<? xml version="1.0" ?>
<! DOCTYPE module PUBLIC
          "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
          "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"
>

< module  name ="Checker" >
         
< property  name ="severity"  value ="warning" />
    
< module  name ="StrictDuplicateCode" >
        
< property  name ="charset"  value ="utf-8"   />    
    
</ module >    

    
< module  name ="TreeWalker" >    
        
<!--  javadoc的检查  -->    
        
<!--  检查所有的interface和class  -->    
        
< module  name ="JavadocType"   />    

        
<!--  命名方面的检查  -->    
        
<!--  局部的final变量,包括catch中的参数的检查  -->    
        
< module  name ="LocalFinalVariableName"   />    
        
<!--  局部的非final型的变量,包括catch中的参数的检查  -->    
        
< module  name ="LocalVariableName"   />    
        
<!--  包名的检查(只允许小写字母)  -->    
        
< module  name ="PackageName" >    
            
< property  name ="format"  value ="^[a-z]+(\.[a-z][a-z0-9]*)*$"   />    
        
</ module >    
        
<!--  仅仅是static型的变量(不包括static final型)的检查  -->    
        
< module  name ="StaticVariableName"   />    
        
<!--  类型(Class或Interface)名的检查  -->    
        
< module  name ="TypeName"   />    
        
<!--  非static型变量的检查  -->    
        
< module  name ="MemberName"   />    
        
<!--  方法名的检查  -->    
        
< module  name ="MethodName"   />    
        
<!--  方法的参数名  -->    
        
< module  name ="ParameterName "   />    
        
<!--  常量名的检查  -->    
        
< module  name ="ConstantName"   />
        
<!--  没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的  -->    
        
< module  name ="UnusedImports"   />    

        
<!--  长度方面的检查  -->    
        
<!--  文件长度不超过1500行  -->    
        
< module  name ="FileLength" >    
            
< property  name ="max"  value ="1500"   />    
        
</ module >    
        
<!--  每行不超过150个字 -->    
        
< module  name ="LineLength" >    
            
< property  name ="max"  value ="150"   />    
        
</ module >    
        
<!--  方法不超过150行  -->    
        
< module  name ="MethodLength" >    
            
< property  name ="tokens"  value ="METHOD_DEF"   />    
            
< property  name ="max"  value ="150"   />    
        
</ module >    
        
<!--  方法的参数个数不超过5个。 并且不对构造方法进行检查 -->    
        
< module  name ="ParameterNumber" >    
            
< property  name ="max"  value ="5"   />    
            
< property  name ="tokens"  value ="METHOD_DEF"   />    
        
</ module >    

        
<!--  空格检查  -->    
        
<!--  允许方法名后紧跟左边圆括号"("  -->    
        
< module  name ="MethodParamPad"   />    
        
<!--  在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格  -->    
        
< module  name ="TypecastParenPad"   />

        
<!--  关键字  -->    
        
<!--    
            每个关键字都有正确的出现顺序。比如 public static final XXX 是对一个常量的声明。如果使用 static 
            public final 就是错误的   
        
-->    
        
< module  name ="ModifierOrder"   />    
        
<!--  多余的关键字  -->    
        
< module  name ="RedundantModifier"   />    

        
<!--  对区域的检查  -->    
        
<!--  不能出现空白区域  -->    
        
< module  name ="EmptyBlock"   />    
        
<!--  所有区域都要使用大括号  -->    
        
< module  name ="NeedBraces"   />
        
<!--  多余的括号  -->    
        
< module  name ="AvoidNestedBlocks" >    
            
< property  name ="allowInSwitchCase"  value ="true"   />    
        
</ module >    

        
<!--  编码方面的检查  -->    
        
<!--  不许出现空语句  -->    
        
< module  name ="EmptyStatement"   />  
        
<!--  不允许魔法数  -->    
        
< module  name ="MagicNumber" >    
            
< property  name ="tokens"  value ="NUM_DOUBLE, NUM_INT"   />    
        
</ module >
        
<!--  多余的throw  -->    
        
< module  name ="RedundantThrows"   />  
        
<!--  String的比较不能用!= 和 ==  -->    
        
< module  name ="StringLiteralEquality"   />    
        
<!--  if最多嵌套3层  -->    
        
< module  name ="NestedIfDepth" >    
            
< property  name ="max"  value ="3"   />    
        
</ module >    
        
<!--  try最多被嵌套2层  -->    
        
< module  name ="NestedTryDepth" >    
            
< property  name ="max"  value ="2"   />    
        
</ module >    
        
<!--  clone方法必须调用了super.clone()  -->    
        
< module  name ="SuperClone"   />    
        
<!--  finalize 必须调用了super.finalize()  -->    
        
< module  name ="SuperFinalize"   />    
        
<!--  不能catch java.lang.Exception  -->    
        
< module  name ="IllegalCatch" >    
            
< property  name ="illegalClassNames"  value ="java.lang.Exception"   />   
        
</ module >    
        
<!--  确保一个类有package声明  -->    
        
< module  name ="PackageDeclaration"   />    
        
<!--  一个方法中最多有3个return  -->    
        
< module  name ="ReturnCount" >    
            
< property  name ="max"  value ="3"   />    
            
< property  name ="format"  value ="^$"   />    
        
</ module >    
        
<!--    
            根据 Sun 编码规范, class 或 interface 中的顺序如下: 1.class 声明。首先是 public,   
            然后是protected , 然后是 package level (不包括access modifier ) 最后是private .   
            (多个class放在一个java文件中的情况) 2.变量声明。 首先是 public, 然后是protected然后是 package 
            level (不包括access modifier ) 最后是private . (多个class放在一个java文件中的情况)   
            3.构造函数 4.方法   
        
-->    
        
< module  name ="DeclarationOrder"   />  
        
<!--  同一行不能有多个声明  -->    
        
< module  name ="MultipleVariableDeclarations"   />    
        
<!--  不必要的圆括号  -->    
        
< module  name ="UnnecessaryParentheses"   />     

        
<!--  杂项  -->    
        
<!--  禁止使用System.out.println  -->    
        
< module  name ="GenericIllegalRegexp" >    
            
< property  name ="format"  value ="System\.out\.println"   />    
            
< property  name ="ignoreComments"  value ="true"   />
        
</ module >
        
<!--  检查并确保所有的常量中的L都是大写的。因为小写的字母l跟数字1太象了  -->    
        
< module  name ="UpperEll"   />    
        
<!--  检查数组类型的定义是String[] args,而不是String args[]  -->    
        
< module  name ="ArrayTypeStyle"   />
        
<!--  检查java代码的缩进 默认配置:基本缩进 4个空格,新行的大括号:0。新行的case 4个空格  -->    
        
< module  name ="Indentation"   />    
    
</ module >  
</ module >         
Ending
本文如果对您有帮助欢迎打赏作者,多少随意一分也是爱!

作者:Java夜未眠

出处:https://www.cnblogs.com/liangxianning/p/17058256.html

版权声明:本博客所有文章除特别声明外,均采用「 MIT 许可协议。」许可协议进行许可

关于博主: 评论和私信会可能回复较慢,点击上面加人图标加我为好友吧

posted @   Java夜未眠  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
more_horiz
keyboard_arrow_up light_mode
选择主题
menu
点击右上角即可分享
微信分享提示