概述
CheckStyle检查代码是否符合制定的规范。CheckStyle检查是基于源码的,无需编译,执行速度快。
CheckStyle的主要流程是:
- 对Java文件进行词法语法分析,生成语法树。
- 载入配置文件(checkstyle-metadata.xml以及自定义的配置文件)register check事件。
- 按照深度优先遍历对语法树进行解析,按照注册的事件,在到达某些节点(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中实现的。
CheckStyle有针对不同IDE和构建工具的各种插件,如 maven-checkstyle-plugin
插件,配置很简单:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<!--内置4种规范:config/sun_checks.xml、config/maven_checks.xml、config/turbine_checks.xml、config/avalon_checks.xml、其中sun_checks.xml为默认值。修改默认配置-->
<configLocation>google_checkstyle.xml</configLocation>
</configuration>
<executions>
<execution>
<id>checkstyle</id>
<phase>validate</phase>
<goals>