CheckStyle使用手册版权所有侵权必究CheckStyle使用手册东南融通系统工程有限公司版权所有侵权必究声明东南融通系统工程有限公司©2008~2010,版权所有,保留一切权利。非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本书内容的部分或全部,并不得以任何形式传播。CheckStyle使用手册目录1CHECKSTYLE概述................................................................................................32CHECKSTYLE安装................................................................................................43CHECKSTYLE配置使用.........................................................................................64编写自定义的CHECKSTYLE规则........................................................................125CHECKSTYLE常用的检查规则............................................................................19东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册1CheckStyle概述checkStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。checkStyle检验的主要内容CheckStyle默认提供一下主要检查内容:1.Javadoc注释2.命名约定3.标题4.Import语句5.体积大小6.空白7.修饰符8.块9.代码问题10类设计11混合检查(包活一些有用的比如非必须的System.out和printstackTrace)从上面可以看出,checkStyle提供了大部分功能都是对于代码规范的检查,而没有提供象PMD和Jalopy那么多的增强代码质量和修改代码的功能。但是,对于团队开发,尤其是强调代码规范的公司来说,它的功能已经足够强大。与其它分析工具比较:工具目的主要检查内容FindBugs基于BugPatterns概念,查找javabytecode中的潜在bug。主要检查bytecode中的bugpatterns,也允许用户自定义特定的bugpatterns。PMD检查java源文件中的潜在问题。主要包括:-空try/catch/finally/switch语句块-未使用的局部变量、参数和private方法-空if/while语句-过于复杂的表达式,如不必要的if语句等-复杂类CheckStyle检查java源文件是否与代码规范相符。主要包括-Javadoc注释-命名规范-Headers-Imports-Size冲突和度量,如过长的方法-Whitespace-Modifiers-Blocks-CodingProblems-ClassDesign东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册-重复代码-MiscellaneousChecks-OptionalChecks2CheckStyle安装IntelliPlatform中checkstyle插件以links的方式安装。点击windows-preferences-Checkstyle,可见到如下界面,说明ckeckstyle运行正常。东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册如果没有发现checkstyle插件,关闭intelliplatform,右键点击intelliplatform,如图目标出加上-clean参数。然后重新启动intelliplatform。东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册3CheckStyle配置使用(checkstyle有两个渠道可以进行配置,一个是全局的,一个是单个项目(Project)的。全局的可以在整个Eclipse的workbench中生效,而单个项目的配置可以在指定的项目中生效,它优先于全局的配置。)全局配置:点击windows-preferences-Checkstyle配置检查规则checkstyle配置的导入/导出东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册我们也可以导出以后,经过修改量身定做自己的规范,比如我们已经按照规范做好了一个代码规范文件,并且取名为LongtopChecks,那么我们可以把这个规范导入,在location中加入自定义的xml文件:点击图中的“New...”Button,出现CheckConfiguration画面。东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册点击下图中的“SetasDefault”Button,设置LongtopChecks为默认的检查规范。东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册使用Checkstyle来扫描项目。点击【工程项目】右键--》Checkstyle--》CheckCodewithCheckstyle扫描完后,我们可以通过问题显示视图,查看具体的每一项问题,在查看前,需要先过滤checkstyle信息,看下图,右上角的小图标,点击它,进入设置窗口。东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册点击相应的条目,就可以打开代码,对应到代码里的问题处。东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册4编写自定义的CheckStyle规则因为checkstyle自带的检查非常严格,随便一个项目都可以弄出几千个Warning。所以,想用它,一定要使用自己的定制检查。1)可视化定制点击windows-preferences-Checkstyle东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册保存编辑好的规则,再次扫描项目。东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册2)编辑XML文件配置比如,我们的代码需要符合下列规则:长度方面:文件长度不超过1500行,每行不超过120个字,方法不超过60行.命名方面:类名不能小写开头,方法名不能大写开头,常量不能有小写字母。编码方面:不能用魔法数(MagicNumber),if昀多嵌套3层。那么,我们的检查配置文件(如命名成my_check.xml)应该是这样的:?xmlversion=1.0encoding=UTF-8?!DOCTYPEmodulePUBLIC-//PuppyCrawl//DTDCheckConfiguration1.2//EN=Checkermodulename=TreeWalker!--长度方面的检查--!--文件长度不超过1500行--modulename=FileLengthpropertyname=maxvalue=1500//module!--每行不超过120个字--modulename=LineLengthpropertyname=maxvalue=120//module!--方法不超过60行--modulename=MethodLengthpropertyname=tokensvalue=METHOD_DEF/propertyname=maxvalue=60//module!--命名方面的检查,它们都使用了Checkstyle默认的规则。--!--类名(class或interface)的检查--modulename=TypeName/!--方法名的检查--modulename=MethodName/!--常量名的检查--modulename=ConstantName/!--编码方面的检查--!--不能用魔法数--modulename=MagicNumber/!--if昀多嵌套3层--modulename=NestedIfDepthpropertyname=maxvalue=3//module/module/module东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册如何配置检查可以看出,想增加一个检查,就是增加一个module/结点。Checkstyle中的各种检查的增加,都是以增加配置文件的内容来实现的。比如想检查方法的长度,就需要在modulename=TreeWalker节点下增加:modulename=MethodLengthpropertyname=tokensvalue=METHOD_DEF/propertyname=maxvalue=60//module如果没有特殊说明,一般是增加在modulename=TreeWalker结点下。如果一个module节点的属性可以有多个值备选,那么这些值之间一般用,连接。比如tokens=LITERAL_STRING,LITERAL_INT让Checkstyle使用指定的检查配置文件点击windows-preferences-Checkstyle东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册再次扫描项目东南融通系统工程有限公司版权所有侵权必究CheckStyle使用手册5CheckStyle常用的检查规则checkstyle自带了两个配置文件:checkstyle_checks.xml和sun_checks.xml。前者是checkstyle作者定义的,后者是严格符合Sun编码规范的。可惜它们的检查太过严格,任何一个项目都会搞出上千个Warning来。所以这里提供了一个配置文件,包含了比较常用的检查,去掉了对空格位置,大括号位置等国内不注重的内容,建议个人使用。如果是公司使用,建议把它再精简些。因为对公司来说,这个配置文件还是比较苛刻的。下面是一个典型的checkstyle配置文件,应该适合于大多数情况的要求。每个检查前的注释说明了它的作用。!DOCTYPEmodulePUBLIC-//PuppyCrawl//DTDCheckConfiguration1.2//EN=Checker!--重复代码的检查,超过8行就认为重复,UTF-8格式本检查一定要放在TreeWalker节点前,否则在Checkclipse中会无法使用。(在ant下可以)--modulename=StrictDuplicateCodepropertyname=minvalue=8/propertyname=charsetvalue=UTF-8//modulemodulename=TreeWalker!--javadoc的检查--!--检查所有的interface和class--modulename=JavadocType/!--检查所有方法的javadoc,可以不声明Ru