CheckStyle中文文档(自己乱翻译的)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > CheckStyle中文文档(自己乱翻译的)

CheckStyle中文文档(自己乱翻译的)

 2010/9/19 22:57:09  tntxia  http://tntxia.javaeye.com  我要评论(0)
  • 摘要:CheckStyle是一个很有趣的开源框架,他可以帮助检查Java代码中的代码规范,传统的代码检查是一种很无聊的工作,而且无法全面的去检查,而大公司一般都会定期的进行代码检查,不想做也不行,怕被别人找麻烦。而CheckStyle就是一个可以帮助我们自动去检查Java代码的工具,替我们分担了不少无聊(但也是重要)的工作。CheckStyle是一个高度可配置(通过XML配置需要检查的规范),他不但是免费的软件,而且还是一个开源的软件在CheckStyle的软件包里面还包括很多有名的代码规范
  • 标签:CheckStyle 文文档 自己乱翻译

CheckStyle是一个很有趣的开源框架,他可以帮助检查Java代码中的代码规范,传统的代码检查是一种很无聊的工作,而且无法全面的去检查,而大公司一般都会定期的进行代码检查,不想做也不行,怕被别人找麻烦。而CheckStyle就是一个可以帮助我们自动去检查Java代码的工具,替我们分担了不少无聊(但也是重要)的工作。

?

CheckStyle是一个高度可配置(通过XML配置需要检查的规范),他不但是免费的软件,而且还是一个开源的软件

?

在CheckStyle的软件包里面还包括很多有名的代码规范,如Sun Code Conventions (Sun公司的代码规范),其他的例子其实也都是有名的代码规范。

?

CheckStyle可以检查你的代码中的很多方面,以前它只是用来检查规范,但在版本3后,很多的规则被添加进来,以致它开始可以用来检查Java代码中的一些程序缺陷。

?

CheckStyle的源程序以及编译好的软件包可以在SourceForge里面下载,下载的地址是:

?

http://sourceforge.net/project/showfiles.php?group_id=29721

?

你也可以从SVN上去获取CheckStyle最新的代码

?

相关工具:

?

CheckStyle可以在命令行或者Ant里运行

?

另外,Eclipse和NetBean上都可以找到CheckStyle的插件

?

?

CheckStyle最新的版本是5.1

?

CheckStyle的配置

?

CheckStyle的配置主要配置哪些规则会被应用到代码的检查中,规则用XML来配置,所以规则都会添加在Root 的Module里面,也就是说Root是最根本的级别。

?

TreeWalker:在TreeWalker里面定义的Module会在轮流在源码所以解析成的语法树里面去验证规则

?

接下来是一个典型的配置文档

?

<module name="Checker">
    <module name="JavadocPackage"/>
    <module name="TreeWalker">
        <module name="AvoidStarImport"/>
        <module name="ConstantName"/>
        <module name="EmptyBlock"/>
    </module>
</module>

?

JavadocPackage是一个很奇怪的检查,他检查文件的目录上是不是有一个package-info.java,一个是Java1.5后的一个新功能,目录是让所有的包都有一个共同的注释

?

Module TreeWalker里面有三个子Module,分别是AvoidStarImport(不允许*导入,也就是类要一个一个导),ConstantName(变量命名规则,这个规则基本上是通用的),EmptyBlock。

?

对于每一个Module,CheckStyle都会加载一个规则类来处理,以下是几条CheckStyle加载类的规则

?

1. 直接导入,如果是已经定义了包名的规则类,CheckStyle直接把这个包与类名导入

?

2. 如果没有定义包名,则会自动在包com.puppycrawl.tools.checkstyle.checks找到相应的类

?

3. 会自动在类名后自动加Check,如果类名后没有Check的话

?


Module的属性

?

我们是可以在Module里面定义属性的,这样我们才可以更好的定义规则。

?

比如:

?

<module name="MethodLength">
    <property name="max" value="60"/>
</module>

?

这个Module表示检查方法的长度不可以超过60行,这里定义了一个max属性

?

TreeWalker下的规则

?

TreeWalker下的规则都是和语法树有关的规则

?

比如:

?

<module name="MethodLength"/>

?

这里是检查方法的长度,方法属于语法树的范围,默认的属性是{METHOD_DEF, CTOR_DEF} (构造方法与普通方法都检查),如果改成这样

<module name="MethodLength">
    <property name="tokens" value="METHOD_DEF"/>
</module>
        <module name="MethodLength">
    <property name="tokens" value="CTOR_DEF"/>
    <property name="max" value="60"/>
</module>

?

这样就会把普通方法与构造方法分开来检查

发表评论
用户名: 匿名