|
CheckStyle,正如名字所表示的,是用来检查Java Style的。它的开发站点(http://checkstyle.sourceforge.net/index.html)上的说明是“Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. ” 由于其开源,这个工具在公司开发项目时的code review方面有很好的应用(当然,WSAD/RAD本身也有比较强大的code review 功能,但是笔者不知道能不能够自定义)。本文主要是想讲一下在CheckStyle的基础上,自定义Style(以及检查这种Style)的方法,并顺便讲一下它的Elipse插件开发。CheckStyle当前最新的版本是4.3,本文中涉及的为4.2。
首先,CheckStyle的主要流程是:
1。对Java文件进行词法语法分析,生成语法树。
2。载入配置文件(checkstyle-metadata.xml以及自定义的配置文件),register check事件。
3。按照深度优先遍历对语法树进行解析,按照注册的事件,在到达某些节点 ( AST ) 时进行style检查(AST,A child-Sibling Tree,是语法树中的某个节点,其类型在TokenTypes类中定义。)
我们所说的自定义Style的检查,就是在第二步设定的。这里牵涉到一个叫com.puppycrawl.tools.checkstyle.api.Check 的类,我们通常需要重载其中的两个函数:public int[] getDefaultTokens()和public void visitToken(DetailAST ast). 这两个函数的含义为,在遍历语法树的过程中,每当到达getDefaultTokens函数所返回的AST类型, 程序就进入visitToken进行具体的检查和分析,即,真正的分析检查过程是在visitToken中实现的。
比如代码:
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; width: 95%; padding-top: 4px;">public int[] getDefaultTokens() {
return new int[] { TokenTypes.METHOD_DEF };
} |
|