一、编码格式规范(CheckStyle)
a、安装checkstyle 的Eclipse插件
1.下载地址:http://pan.baidu.com/s/1o6LOSwM
2.解压net.sf.eclipsecs-updatesite_5.6.1.201306282206-bin.zip文件,到系统路径下。如:D:\eclipse-plugins\cs(注:一定不用起名为checkstyle,不知道为什么此名就是安装不成功),此文件夹下有两个文件夹features、plugins。
3.我们使用link的方式安装。在Eclipse的dropins文件夹下新建checkstyle.link文件,内容为:path=D:\\eclipse-plugins\\cs
关闭Eclipse,重启。然后在Eclipse的window》Preferences下就可以看到checkstyle菜单,安装成功,如下图
b、使用checkstyle
导入CheckStyle规则my_checkStyle.xml,eclipse——Windows——preferences
2.右击项目,选择preferences
3.右击项目选择如下选择
4.经CheckStyle检查过的代码如下
c、相关文档
1.源代码https://github.com/checkstyle/checkstyle
2.文档http://checkstyle.sourceforge.net
例.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<property name="severity" value="warning"/>
<!-- 文件长度不超过1500行 -->
<module name="FileLength">
<property name="max" value="1500"/>
<message key="maxLen.file" value="文件长度不超过1500行。"/>
</module>
<module name="TreeWalker">
<!--
(1)module节点,指检查项,如MethodName (检查方法命名)
module中有两个比较重要的节点,它们分别是Checker(checkStyle配置文件的根节点,必须存在)、TreeWalker(树遍历器),TreeWalker会自动去检查指定范围内的每一个java源文件,TreeWalker内部会定义很多module。
(2)property节点
对应module 检查项中具体检查属性,如果使用默认值,property节点可以省略;
(3)message节点
checkStyle检查出来,是否打印出message消息,message节点可以省略
-->
<!--java.lang.Deprecated注解或@deprecated的Javadoc标记不能同时存在-->
<module name="MissingDeprecated"/>
<!--出现{@inheritDoc}的Javadoc标签时,java.lang.Override注解不能出现。-->
<module name="MissingOverride"/>
<!--除了程序真正的入口点之外,源码中其他所有的main()方法都应当被删除或注释掉。-->
<module name="UncommentedMain"/>
<!--代码中含有注释的行中只包含注释。不建议行尾注释-->
<module name="TrailingComment"/>
<!-- import检查-->
<!-- 检查是否从非法的包中导入了类 -->
<module name="IllegalImport"/>
<!-- 检查是否导入了多余的包 -->
<module name="RedundantImport"/>
<!-- 没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的 -->
<module name="UnusedImports">
<message key="import.unused" value="没用的import."/>
</module>
<!-- Javadoc注释检查 -->
<!-- 检查构造函数的javadoc -->
<!--<module name="JavadocType">
<property name="allowUnknownTags" value="true"/>
<message key="javadoc.missing" value="类注释:缺少Javadoc注释。"/>
</module>-->
<!-- 命名检查 Naming -->
<!-- 抽象类名称 -->
<module name="AbstractClassName">
<message key="illegal.abstract.class.name" value="抽象类名称 ''{0}'' 要匹配''{1}''的格式."/>
</module>
<!-- 局部的final变量,包括catch中的参数的检查 -->
<module name="LocalFinalVariableName">
<message key="name.invalidPattern" value="局部final变量 ''{0}'' 要匹配''{1}''的格式(建议除首单词外的单词的首字母大写)."/>
</module>
<!-- 局部的非final型的变量,包括catch中的参数的检查 -->
<module name="LocalVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
<message key="name.invalidPattern" value="局部的非final型的变量 ''{0}'' 要匹配''{1}''的格式(建议除首单词外的单词的首字母大写)."/>
</module>
<!-- 仅仅是static型的变量(不包括static final型)的检查 -->
<module name="StaticVariableName">
<message key="name.invalidPatt