这里的有些check有个公共的属性tokens,意思是该check应用的范围,例如同样是检查方法的长度,普通方法可能最多可以有150行,而构造函数则最多只能有60行。这时,虽然同样是使用MethodLength这个check,但是可以用tokens这个属性进行区分,如下xml文件的片段:
这其中应用了两次MethodLength,***次的tokens定义为METHOD_DEF,即普通的方法;第二次的tokens定义为CTOR_DEF,即构造函数,并且在此定义了与缺省值不同的值,即60。这样CheckStyle可以根据方法的种类不同而执行不同的check策略。CheckStyle也定义了大量的诸如CTOR_DEF形式的tokens类型,应用于不同的check中的tokens,其定义在com.puppycrawl.tools.checkstyle.api.TokenTypes类中。这些Tokens实际上是对源代码文件进行拆分后做对应的时候的一些标志,类似编译中的语法分析,CheckStyle的原理应该就是在对源代码做语法分析后,针对这些Tokens的内容,比对预先设定好的代码写作策略,并给出对比的结果。TokenTypes类内容很多,这里就不一一列举了。
下面是对具体的check的描述。这些check可以被分为了15类,如下所示:
===== CHECK STYLE ========
----- Annotations -------- JDK5中的Annotation相关(未展开)
----- Block Checks ------- 代码块相关
----- Class Design ------- 类设计相关
----- Coding ------------- 编码相关
----- Duplicate Code ----- 冗余代码
----- Headers ------------ 源文件的头
----- Imports ------------ 引入包相关
----- Javadoc Comments --- JavaDoc相关
----- Metrics ------------ 复杂度分析
----- Miscellaneous ------ 其它
----- Modifiers ---------- 修饰符相关
----- Naming Conventions - 命名规范
----- Regexp ------------- 正则表达式相关
----- Size Violations ---- 文件大小等相关
----- Whitespace --------- 空格处理相关
==========================
具体的内容由于比较多,我写在了一个单独的WORD文档中。有了这些预置的check,基本可以满足规范编码的要求了。在Myeclipse的环境下,可以通过对Formatter的定义,在format的过程中可以自动满足一些check的要求,这部分我会在《应用CheckStyle检查代码和Formatter规范代码》中予以详细说明。
【编辑推荐】