- 浏览: 189013 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (153)
- 小技巧 (14)
- spring (3)
- struts2 (20)
- hibernate (0)
- java api (2)
- java se (8)
- jsp/servlet (4)
- oracle (0)
- mysql (1)
- ms sqlserver (1)
- js (30)
- jquery (8)
- ajax (2)
- .net (1)
- 软件 (1)
- j2ee (25)
- 网址收藏 (3)
- web综合 (9)
- web打印控件 (3)
- fckeditor (2)
- Groovy (1)
- PHP (5)
- 项目管理 (1)
- SEO (1)
- PostgreSQL (5)
- CKeditor (1)
- Fusion chart (1)
- 网页播放器 (1)
- 曾遇bug (3)
- java日志 (1)
- linux/Unix/CentOs (5)
- VBA (1)
- C# (0)
- 日期控件 (1)
- tomcat (2)
- cookies (1)
- java7 (1)
- JAVA文件操作 (2)
- hibernate;ehcache (2)
- 缓存 (1)
- dd (0)
- DB (1)
- android (2)
最新评论
-
flyingbin:
沙发,不过从头到尾没怎么看懂~
Windows密码本地破解通用方法 -
jfeimao:
credentialsToPrincipalResolvers ...
CAS(单点登陆)---总结一 -
haige18:
这两张图片引用的是网易的地址,现在资源有可能被删除了,所以就显 ...
Struts2中的Value Stack/Stack Context -
fengzhisha0914:
我的图片也不显示了..为何...
Struts2中的Value Stack/Stack Context -
greatwqs:
java.lang.IllegalStateException ...
java.lang.IllegalStateException:Cannot forward after response has been committed
介绍
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从 而使得开发人员从这项重要,但是枯燥的任务中解脱出来。
CheckStyle默认提供一下主要检查内容:
•Javadoc注释
•命名约定
•标题
•Import语句
•体积大小
•空白
•修饰符
•块
•代码问题
•类设计
•混合检查(包活一些有用的比如非必须的 System.out和printstackTrace)
从上面可以看出,CheckStyle提供了大部分功能都是对于代码规范 的检查,而没有提供象PMD和Jalopy那么多的增强代码质量和修改代码的功能。但是,对于团队开发,尤其是强调代码规范的公司来说,它的功能已经足够强大。
Eclipse插件安装和使用
步骤一:http://sourceforge.net/projects/checkclipse/下载checkstyle的eclipse插件checkclipse。下载后,将包放入eclipse的plugins文件夹下,然后重启eclipse。在Windows—>preferences下找到checkclipse。如下图:
勾选Set Project Dir as Checkjstyle Basedir
步骤二:右键选中你要进行checkstyle的项目文件,选择“properties”。如下图:
勾选Enable Checkstyle和Set Project ClassLoader.
然后再Checkstyle Configuraion File中选择项目中checkstyle的配置文件。这里我把配置文件时放置在项目根目录下,所以点击右侧“Browse”按钮,在项目根目录下选择该文件。按“OK”按钮。
这样整个项目的代码将根据配置文件中设置的原则进行出错提示.结果如下图:
由图可知对不符合代码规范的代码会有错误提示,并且有提示信息。
Maven插件安装和使用
首先,修改要检查代码库top级的pom.xml文件,在build部分配置CheckStyle的Maven插件,以便于下载安装对应版本的插件(Maven会自动从其镜像库中下载),方法如下:
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>2.3</version> </plugin> </plugins> </build> ... </project>
maven-checkstyle-plugin的最新版本为2.5,其对应的CheckStyle核心版本为5.0;maven-checkstyle-plugin 2.3对应的CheckStyle核心版本为4.4。查看插件的pom文件,可看到如下内容,其中的版本号就为对应的CheckStyle的版本号。
<dependency> <groupId>checkstyle</groupId> <artifactId>checkstyle</artifactId> <version>4.4</version> </dependency>
接下来,将自定义的规则配置文件拷贝到top级目录,在reporting部分的CheckStyle插件配置中引用配置。
<reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <configuration> <configLocation>my_checks.xml</configLocation> </configuration> </plugin> </plugins> </reporting>
也可以将配置文件放在子文件夹下,配置中带上相对路径即可。
<reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <configuration> <configLocation>build-tools/src/main/resources/xx/my_checks.xml</configLocation> </configuration> </plugin> </plugins> </reporting>
如果使用插件自带的规则文件,可以作如下配置。maven-checkstyle-plugin插件自带的规则有sun_checks.xml、maven_checks.xml等,可查看插件包。
<reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <configuration> <configLocation>config/maven_checks.xml</configLocation> </configuration> <version>2.3</version> </plugin> </plugins> </reporting>
在reporting部分增加jxr插件,生成代码报告,这样在CheckStyle报告 中点击问题对应的链接就可以直接看到出错的代码。
<reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <configuration> <configLocation>my_checks.xml</configLocation> </configuration> <version>2.3</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jxr-plugin</artifactId> </plugin> </plugins> </reporting>
在build和reporting部分增加javadoc插件,如果pom文件中已经配置,则只需作相应修改。charset、encoding、docencoding配置用于解决生成的javadoc文件中文乱码问题;aggregate配置为true则javadoc报告会集中显示所有子模块的javadoc。
<reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.4</version> <configuration> <aggregate>true</aggregate> <charset>UTF-8</charset> <encoding>UTF-8</encoding> <docencoding>UTF-8</docencoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <configuration> <configLocation>my_checks.xml</configLocation> </configuration> <version>2.3</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jxr-plugin</artifactId> </plugin> </plugins> </reporting>
在maven插件中使用 install命令将pom文件中配置的插件下载安装到本地,然后使用checkstyle:checkstyle命令进行检查并生成报告,运行完毕,各项目目录下会生成target目录,target\site\checkstyle.html即为该项目的问题报告。
需要注意的是checkstyle:checkstyle仅生成CheckStyle相关报告,因此不能从报告中直接链接到错误代码;需要同时生成jxr源代码,使用site。
如果运行checkstyle:checkstyle或site过程中出现如下错误,则应该修改CheckStyle规 则配置文件,去除其中的中文字符。
“[ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] An error has occurred in Checkstyle report generation. Embedded error: Failed during checkstyle configuration Invalid byte 1 of 1-byte UTF-8 sequence. ”
最佳实践
自定义的checkstyle配置文件
以下代码是自定义的checkstyle配置文件内容,相关说明都已经用注释形式写在文件中。代码如下:
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"> <module name="Checker"> <!-- 重复代码的检查,超过8行就认为重复,UTF-8格式 本检查一定要放在"TreeWalker"节点前,否则在 Checkclipse中会无法使用。(在ant下可以) --> <module name="StrictDuplicateCode"> <property name="min" value="8" /> <property name="charset" value="UTF-8" /> </module> <module name="TreeWalker"> <!-- javadoc的检查 --> <!-- 检查所有的interface和class --> <module name="JavadocType" /> <!-- 命名方面的检查,它们都使用了Sun官方定的规则。 --> <!-- 局部的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方面的检查 --> <!-- import中避免星号"*" --> <module name="AvoidStarImport" /> <!-- 没用的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> <!-- 方法不超过30行 --> <module name="MethodLength"> <property name="tokens" value="METHOD_DEF" /> <property name="max" value="30" /> </module> <!-- 方法的参数个数不超过3个。 并且不对构造方法进行检查--> <module name="ParameterNumber"> <property name="max" value="3" /> <property name="tokens" value="METHOD_DEF" /> </module> <!-- 空格检查 --> <!-- 允许方法名后紧跟左边圆括号"(" --> <module name="MethodParamPad" /> <!-- 在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格 --> <module name="TypecastParenPad" /> <!-- 不允许使用"tab"键 --> <module name="TabCharacter" /> <!-- 关键字 --> <!-- 每个关键字都有正确的出现顺序。比如 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" /> <!-- 每个类都实现了equals()和hashCode() --> <module name="EqualsHashCode" /> <!-- 不许使用switch,"a++"这样可读性很差的代码 --> <module name="IllegalToken" /> <!-- 不许内部赋值 --> <module name="InnerAssignment" /> <!-- 绝对不能容忍魔法数 --> <module name="MagicNumber"> <property name="tokens" value="NUM_DOUBLE, NUM_INT" /> </module> <!-- 循环控制变量不能被修改 --> <module name="ModifiedControlVariable" /> <!-- 多余的throw --> <module name="RedundantThrows" /> <!-- 不许使用未被简化的条件表达式 --> <module name="SimplifyBooleanExpression" /> <!-- 不许使用未被简化的布尔返回值 --> <module name="SimplifyBooleanReturn" /> <!-- 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" /> <!-- 一个方法中最多有3个return --> <module name="ReturnCount"> <property name="max" value="3" /> <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="ParameterAssignment" /> <!-- 确保某个class 在被使用时都已经被初始化成默认值(对象是null,数字和字符是0,boolean 变量是false.) --> <module name="ExplicitInitialization" /> <!-- 不许有同样内容的String --> <module name="MultipleStringLiterals" /> <!-- 同一行不能有多个声明 --> <module name="MultipleVariableDeclarations" /> <!-- 不必要的圆括号 --> <module name="UnnecessaryParentheses" /> <!-- 各种量度 --> <!-- 布尔表达式的复杂度,不超过3 --> <module name="BooleanExpressionComplexity" /> <!-- 类数据的抽象耦合,不超过7 --> <module name="ClassDataAbstractionCoupling" /> <!-- 类的分散复杂度,不超过20 --> <module name="ClassFanOutComplexity" /> <!-- 函数的分支复杂度,不超过10 --> <module name="CyclomaticComplexity" /> <!-- NPath复杂度,不超过200 --> <module name="NPathComplexity" /> <!-- 杂项 --> <!-- 禁止使用System.out.println --> <module name="GenericIllegalRegexp"> <property name="format" value="System\.out\.println" /> <property name="ignoreComments" value="true" /> </module> <!-- 不许使用main方法 --> <module name="UncommentedMain" /> <!-- 检查并确保所有的常量中的L都是大写的。因为小写的字母l跟数字1太象了 --> <module name="UpperEll" /> <!-- 检查数组类型的定义是String[] args,而不是String args[] --> <module name="ArrayTypeStyle" /> <!-- 检查java代码的缩进 默认配置:基本缩进 4个空格,新行的大括号:0。新行的case 4个空格。 --> <module name="Indentation" /> </module> <!-- 检查翻译文件 --> <module name="Translation" /> </module>
CheckStyle应用的最佳实践
采用CheckStyle以后,编码规范的检查就变得及其简单,可以作为一项切实可行的实践加以执行。
一般情况下,在项目小组中引入CheckStyle可以按照下面的步骤进行:
1. 强调Code Review与Code Conventions的重要作用;
2. 介绍CheckStyle;
3. 初步应用CheckStyle:参照CheckStyle附带的配置文件,酌情加以剪裁,在项目的Maven配置文件中,添加CheckStyle任务,可以 单独执行;
4. 修改、定型CheckStyle的配置文件:按照基本配置文件执行一段时间(2~3周),听取开发人员的反馈意见,修改配置信息;
5. 作为开发过程的日常实践,强制执行CheckStyle:稳定CheckStyle的配置信息,同时将CheckStyle任务作为Build的依赖任务 或者配置SCM(目前,CheckStyle可以与SVN有效集成),使得代码在加入系统 之前必须通过检查。
同时需要指出的是,CheckStyle的有效执行需要依赖的条件:
•IDE Format Code的强大功能:由于CheckStyle本身并没有提供很强大的Code Format等功能,因此,需要借助IDE的帮助,从而使得在发生错误的时候,可以很容易的进行修复。
IDE格式配置使用介绍
在eclipse中的windowpreferencesjavacode style中可以导入自定义的java编码风格文件。如下图:
点击“Clean Up”,在右侧可以看见一个Import按钮,导入自定义的cleanup文件,点击“OK”即可。左侧的“Formatter”也是如法炮制。具体自定义的checkstyle,cleanup,formatter文件可参考压缩包文件中的公司代码规范文件夹。
来自:http://darkranger.iteye.com/blog/657737
发表评论
-
Eclipse不能自动编译 java文件
2013-01-16 16:16 983方法参考如下: (1) Window Preferen ... -
spring 启动报错信息及导致问题原因
2013-01-15 11:18 1939spring启动报错: org.springframewo ... -
订机票网站
2013-01-13 21:36 813国外特价机票网站:亚洲航空:http://www.airasi ... -
PostgreSQL 存储过程调试
2012-12-12 16:03 2296在PG-2000DBA的培训中学到的一点是可以用pgAd ... -
只有原创或翻译文章才能发表到论坛和博客、新闻频道首页
2012-07-24 17:16 0public class MySessionContext ... -
IE6在打开窗口中提交表单无返回的解决方法
2012-06-15 15:47 876最近项目中使用了window.open()函数打开新窗口,并 ... -
org.apache.catalina.connector.ClientAbortException
2012-04-27 11:37 10523当我们用Servlet导出图片,或用JSP导出excel时,会 ... -
解决cmd命令行被禁用
2012-04-25 11:11 9691.[HKEY_CURRENT_USER\Software\P ... -
Java将中文转换成拼音,用于字母的模糊查询
2012-04-23 15:05 1869/** * 将汉字转换为拼音 * ... -
Windows密码本地破解通用方法
2012-04-22 23:45 1149其实这个方法很多人都知道,不过最近尝试了破解最新的win7 6 ... -
tomcat6多域名配置
2012-04-22 22:24 1577tomcat6多域名配置,不多说了,看配置文件server.x ... -
解决办法:Access restriction: The type JPEGImageEncoder is not accessible due to rest
2010-11-13 14:45 827在Eclipse中处理图片,需要引入两个包:import co ... -
win7 无线设置教程
2010-10-26 11:56 747win7 共享网络小方法 -
myeclipse 加载工作空间问题
2010-10-25 10:31 1929使用myeclipse IDE 自动导入spring 包之后, ...
相关推荐
这个"Checkstyle 使用手册 以及常用方法"涵盖了Checkstyle的基本使用和一些常见功能的详细解释。 首先,了解如何配置和运行Checkstyle至关重要。Checkstyle可以通过命令行、IDE插件(如Eclipse、IntelliJ IDEA)...
### CheckStyle 使用手册知识点详述 #### 一、CheckStyle 概述 - **定义**:CheckStyle 是 SourceForge 下的一个开源项目,旨在为 Java 开发者提供一套自动化工具,帮助他们遵循一定的编码规范和标准。 - **核心...
在Ant构建脚本中,可以使用类似以下的代码片段来运行Checkstyle任务: ```xml <taskdef resource="checkstyletask.properties" classpathref="checkstyle-all-3.4.jar"/> <target name="checkstyle_check" depends=...
Excel格式的Checkstyle5.5中文手册。
通过使用CheckStyle,开发团队可以减少代码审查的工作量,提高代码质量,并降低维护成本。这款工具能够检查出代码中的常见错误,如不一致的命名约定、未使用的变量、不必要的导入等。 CheckStyle的中文文档对于中国...
这个"Checkstyle_4.3_中文手册 pdf"是Checkstyle 4.3版本的中文指南,对于理解并使用Checkstyle进行代码质量管理非常有帮助。 在Checkstyle 4.3版本中,主要包含以下知识点: 1. **Checkstyle基础**:Checkstyle...
在【安装】部分,我们了解到Checkstyle可以通过在IDE如MyEclipse中安装插件来使用。安装步骤简单,首先在IDE的dropins目录下创建一个checkstyle文件夹,然后将解压后的Checkstyle文件复制到该文件夹中,最后重启IDE...
checkstyle 中文文档checkstyle 中文文档checkstyle 中文文档checkstyle 中文文档checkstyle 中文文档checkstyle 中文文档checkstyle 中文文档checkstyle 中文文档
- `docs`目录:可能包含用户手册、API文档等,帮助用户了解Checkstyle的使用方法和规则详情。 - `scripts`目录(如果有的话):可能包含用于执行Checkstyle检查的脚本或命令行工具。 2. **checkstyle-5.6-src.zip...
此外,CheckStyle的详细手册HTML版提供了完整的规则说明和示例,对于深入理解和定制规则非常有帮助。 CheckStyle支持的检查规则包括但不限于: - 命名规则:如类名、方法名、变量名应遵循的规范。 - 注释规则:...
"checkstyle-5.3-bin" 包含的是 Checkstyle 5.3 版本的二进制文件,这个版本被认为是相当稳定且广泛使用的。 Checkstyle 的核心功能包括但不限于以下几点: 1. **编码风格检查**:Checkstyle 可以检查代码是否符合...
10. **文档更新**:与新版本一同发布的通常是更新后的用户手册和API文档,帮助开发者更好地理解和使用Checkstyle 5.2的新功能。 在实际使用Checkstyle 5.2时,你需要下载并配置相应的jar文件,将自定义的配置文件与...
IDEA代码格式化插件
Eclipse Checkstyle 插件 ,内付安装使用手册 Checkstyle是一款检查java程序代码样式的工具,可以有效的帮助我们检视代码以便更好的遵循代码编写标准,特别适用于小组开发时彼此间的样式规范和统一
5. **使用教程**: 可能会有一份详细的用户手册,解释如何运行CheckStyle,如何解读检查结果,以及如何解决报告的问题。 使用CheckStyle的主要好处包括: - **代码一致性**: 所有团队成员都遵循同一套编码标准,有...
5. **Ant任务**:对于使用Ant构建的项目,Checkstyle提供了Ant任务,方便集成到构建过程中。 在解压后的"checkstyle-5.5"目录中,你可能找到以下组件: 1. **checkstyle.jar**:主程序包,包含了Checkstyle的所有...
这份"CheckStyle手册"提供了详细的安装和使用指南,确保用户能够顺利地将CheckStyle集成到他们的开发环境中。 首先,让我们深入了解CheckStyle的配置过程。配置CheckStyle涉及创建或修改一个名为`checkstyle.xml`的...