checkstyle用法
来源:互联网 发布:netpas云墙 mac下载 编辑:程序博客网 时间:2024/05/18 05:11
一、简介
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。
二、安装
安装有两种方式,和SVN类似,即离线安装和在线安装。接下来分别介绍这两种安装方式
2.1离线安装
- 去官网下载CheckStyle插件,官网地址:https://sourceforge.net/projects/eclipse-cs/files/Eclipse%20Checkstyle%20Plug-in/
- 在某个目录(D:\Java)创建checkstyle\eclipse子目录,将之前下载的插件下的features和plugins两个文件下拷贝到该目录下(D:\Java\checkstyle\eclipse)
- 接着在eclipse的links目录下新建checkstyle.xml文件,在该文件中添加一行写上需要链接的插件地址,例如:path=D:/Java/checkstyle
注:此种方式便于管理外部Eclipse插件
2.2在线安装
- 打开eclipse,点击“help->Install New Software…”
- 单击“Add”,输入Name:CheckStyle和Location:http://eclipse-cs.sourceforge.net/update/
- 单击“OK”,出来两个选项,勾选上然后单击“Next”
- 出现安装详情,单击“Next”,遇到需要同意协议的,选择同意,直到最后
- 安装过程中,会有安全提示窗口,点击“OK”
- 重启后就可以使用了
三、使用
选择某个项目,点击右键选择“Checkstyle”,会出现如下菜单:
Ⅰ Configure project(s) from blueprint:指定工程加入Checkstyle检查
Ⅱ Activate Checkstyle:激活Checkstyle
Ⅲ Deactivate Checkstyle:取消激活Checkstyle
Ⅴ Check code with Checkstyle:使用Checkstyle检查代码
Ⅳ Clear Checkstyle violations:去掉Checkstyle的检查提示
选择“Check code with Checkstyle”对所选中的项目进行检查,检查后对有问题的类会使用警告或错误标识。参考提示信息如下:
Checkstyle默认换号是两个空格,我们在项目中一般都是一个tab或四个空格(这里注意,一个tab在eclipse中默认是8个空格),此时就需要我们自定义检查内容
接下分别介绍Checkstyle中错误信息的含义和自定义检查内容
四、常见提示速查
Checkstyle常见错误和警告提示见下表所示:
五、自定义检查内容
Checkstyle提供的默认检查不一定就适用于我们的开发习惯,因此我们可以根据自己的开发习惯指定Checkstyle检查的格式。下面给出制定Checkstyle检查示例
<?xml version="1.0"?><!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"><module name="Checker"> <property name="severity" value="warning" /> <module name="StrictDuplicateCode"> <property name="charset" value="utf-8" /> </module> <module name="TreeWalker"> <!-- javadoc的检查 --> <!-- 检查所有的interface和class --> <module name="JavadocType" /> <!-- 命名方面的检查 --> <!-- 局部的final变量,包括catch中的参数的检查 --> <module name="LocalFinalVariableName" /> <!-- 局部的非final型的变量,包括catch中的参数的检查 --> <module name="LocalVariableName" /> <!-- 包名的检查(只允许小写字母) --> <module name="PackageName"> <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" /> </module> <!-- 仅仅是static型的变量(不包括static final型)的检查 --> <module name="StaticVariableName" /> <!-- 类型(Class或Interface)名的检查 --> <module name="TypeName" /> <!-- 非static型变量的检查 --> <module name="MemberName" /> <!-- 方法名的检查 --> <module name="MethodName" /> <!-- 方法的参数名 --> <module name="ParameterName " /> <!-- 常量名的检查 --> <module name="ConstantName" /> <!-- 没用的import检查,比如: 1.没有被用到 2.重复的 3.import java.lang的 4.import 与该类在同一个package的 --> <module name="UnusedImports" /> <!-- 长度方面的检查 --> <!-- 文件长度不超过1500行 --> <module name="FileLength"> <property name="max" value="1500" /> </module> <!-- 每行不超过120个字 --> <module name="LineLength"> <property name="max" value="120" /> </module> <!-- 方法不超过150行 --> <module name="MethodLength"> <property name="tokens" value="METHOD_DEF" /> <property name="max" value="150" /> </module> <!-- 方法的参数个数不超过5个。 并且不对构造方法进行检查 --> <module name="ParameterNumber"> <property name="max" value="5" /> <property name="tokens" value="METHOD_DEF" /> </module> <!-- 空格检查 --> <!-- 允许方法名后紧跟左边圆括号"(" --> <module name="MethodParamPad" /> <!-- 在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格 --> <module name="TypecastParenPad" /> <!-- 关键字 --> <!-- 每个关键字都有正确的出现顺序。比如 public static final XXX 是对一个常量的声明。如果使用 static public final 就是错误的 --> <module name="ModifierOrder" /> <!-- 多余的关键字 --> <module name="RedundantModifier" /> <!-- 对区域的检查 --> <!-- 不能出现空白区域 --> <module name="EmptyBlock" /> <!-- 所有区域都要使用大括号 --> <module name="NeedBraces" /> <!-- 多余的括号 --> <module name="AvoidNestedBlocks"> <property name="allowInSwitchCase" value="true" /> </module> <!-- 编码方面的检查 --> <!-- 不许出现空语句 --> <module name="EmptyStatement" /> <!-- 不允许魔法数 --> <module name="MagicNumber"> <property name="tokens" value="NUM_DOUBLE, NUM_INT" /> </module> <!-- 多余的throw --> <module name="RedundantThrows" /> <!-- String的比较不能用!= 和 == --> <module name="StringLiteralEquality" /> <!-- if最多嵌套3层 --> <module name="NestedIfDepth"> <property name="max" value="3" /> </module> <!-- try最多被嵌套2层 --> <module name="NestedTryDepth"> <property name="max" value="2" /> </module> <!-- clone方法必须调用了super.clone() --> <module name="SuperClone" /> <!-- finalize 必须调用了super.finalize() --> <module name="SuperFinalize" /> <!-- 不能catch java.lang.Exception --> <module name="IllegalCatch"> <property name="illegalClassNames" value="java.lang.Exception" /> </module> <!-- 确保一个类有package声明 --> <module name="PackageDeclaration" /> <!-- 一个方法中最多有10个return --> <module name="ReturnCount"> <property name="max" value="10" /> <property name="format" value="^$" /> </module> <!-- 根据 Sun 编码规范, class 或 interface 中的顺序如下: 1.class 声明。首先是 public, 然后是protected, 然后是 package level (不包括access modifier ) 最后是private . (多个class放在一个java文件中的情况) 2.变量声明。 首先是 public, 然后是protected然后是 package level (不包括access modifier ) 最后是private. (多个class放在一个java文件中的情况) 3.构造函数 4.方法 --> <module name="DeclarationOrder" /> <!-- 同一行不能有多个声明 --> <module name="MultipleVariableDeclarations" /> <!-- 不必要的圆括号 --> <module name="UnnecessaryParentheses" /> <!-- 杂项 --> <!-- 禁止使用System.out.println --> <module name="GenericIllegalRegexp"> <property name="format" value="System\.out\.println" /> <property name="ignoreComments" value="true" /> </module> <!-- 检查并确保所有的常量中的L都是大写的。因为小写的字母l跟数字1太象了 --> <module name="UpperEll" /> <!-- 检查数组类型的定义是String[] args,而不是String args[] --> <module name="ArrayTypeStyle" /> <!-- 检查java代码的缩进 默认配置:基本缩进 4个空格,新行的大括号:0。新行的case 4个空格 --> <module name="Indentation" /> </module></module>
- checkstyle用法
- Checkstyle一些具体用法
- Checkstyle一些具体用法
- Checkstyle
- CheckStyle
- Checkstyle
- Checkstyle
- Checkstyle
- CheckStyle
- checkstyle
- checkStyle
- 你不知道的Eclipse用法:使用CheckStyle实施编码标准
- CHECKSTYLE使用
- CC checkstyle
- CheckStyle使用手册
- CheckStyle使用手册
- Checkstyle介绍
- Checkstyle+Eclipse
- 【数据结构】栈的应用—逆波兰表达式
- VS2013 C++ 动态链接库的生成
- 揭秘互联网营销的骗局,卷跑上百万!
- 大公司最喜欢问的Java集合类面试题
- iOS之控制台打印不完全的解决方法
- checkstyle用法
- JavaScript RegExp 对象
- 51nod 1119 机器人走方格V2 lucas定理
- 线性基的学习
- 【Noip2012】Vigenere密码
- C++基础-string截取、替换、查找子串函数
- 在Unity中实现GPS定位(获取用户地理位置,不使用第三方插件)
- 读书笔记
- qsort的compare函数