要想按照自己的需求,定义Checkstyle配置文件,需要先了解Checkstyle配置文件的构成。在《代码规范工具-Checkstyle使用手册》一文中,我提及到两个Checkstyle提供的配置文件sun_checks.xml和sun_checks_eclipse.xml,那么现在下看下这两个文件的构成吧。sun_checks.xml和sun_checks_eclipse.xml所在的路径为:将Checkstyle安装包解压,在解压目录下,进入plugins, plugins目录下面有一个net.sf.eclipsecs.core_5.5.0.201111092104安装包,将该安装包解压,大家就可以看到sun_checks.xml和sun_checks_eclipse.xml这两个配置文件了。打开这两个配置文件后,我们大概可以看到:他们其实结构上几乎是一模一样的,因为sun_checks_eclipse.xml相当于sun_checks.xml的更加严格的规范限定版本,因此,我们只需要看sun_checks.xml文件即可。
1 Checkstyle的检查原理
sun_checks.xml是由多个module节点构成,因此可以发现:Checkstyle配置是通过指定modules来应用到java文件的。modules是树状结构,以一个名为Checker的module作为root节点,一般的checker都会包括TreeWalker子module。在xml配置文件中通过module的name属性来区分module,module的Properties可以控制如何去执行这个module,每个property都有一个默认值,所有的check都有一个severity属性,用它来指定check的level。
TreeWalker为每个java文件创建一个语法树,在节点之间调用submodules的Checks。
2 standard checks中的一些具体用法
2.1 Javadoc Comments
l JavadocPackage
检查每个java package中是否有java注释文件,默认是允许一个package-info.java,也可以通过allowLegacy属性配置允许package.html。
l JavadocType
检查类和接口的javadoc。默认不检查author 和version tags。
l JavadocMethod
检查方法和构造函数的javadoc。默认不检查未使用的异常抛出。
l JavadocVariable
检查变量的javadoc。
l JavadocStyle
检查javadoc的格式。比如:javadoc的第一行是否以句号结束,javadoc除了tags外是否有description,检查javadoc中的html格式。
l WriteTag
输出javadoc中的tag。
2.2 Naming Conventions
l AbstractClassName
检查抽象类名。
l ClassTypeParameterName
检查类的Parameter名。
l ConstantName
检查常量名。
l LocalFinalVariableName
检查局部的final类型变量名,包括catch的参数。
l LocalVarableName
检查局部的非final类型的变量名,包括catch的参数。
l MemberName
检查非静态变量。
l MethodName
检查方法名。</