这里的有些check有个公共的属性tokens意思是该check应用的范围例如同样是检查方法的长度普通方法可能最多可以有行而构造函数则最多只能有行这时虽然同样是使用MethodLength这个check但是可以用tokens这个属性进行区分如下xml文件的片段
这其中应用了两次MethodLength第一次的tokens定义为METHOD_DEF即普通的方法第二次的tokens定义为CTOR_DEF即构造函数并且在此定义了与缺省值不同的值即这样CheckStyle可以根据方法的种类不同而执行不同的check策略CheckStyle也定义了大量的诸如CTOR_DEF形式的tokens类型应用于不同的check中的tokens其定义在compuppycrawltoolscheckstyleapiTokenTypes类中这些Tokens实际上是对源代码文件进行拆分后做对应的时候的一些标志类似编译中的语法分析CheckStyle的原理应该就是在对源代码做语法分析后针对这些Tokens的内容比对预先设定好的代码写作策略并给出对比的结果TokenTypes类内容很多这里就不一一列举了
下面是对具体的check的描述这些check可以被分为了类如下所示
===== CHECK STYLE ========
Annotations JDK中的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规范代码》中予以详细说明