DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

使用CheckStyle做代码检查


命令行应用

官网文档对命令行用法讲解的很详细,基本分为以下几步。

安装

下载独立运行包(checkstyle-5.6-bin.zip),解压到d:\apps下;

写配置文件

可以在eclipse中用插件eclipse-cs写出来,然后查到这个配置的文件名,然后拷贝出来作为配置文件;

cc.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">

注意内如果有名为severity的子标签,值为ignore表示该项检查被忽略(无效),如果要执行此项检查可以去掉该子标签或者把值改为warning:

...

在Jenkins上执行Checkstyle检查时需要将severity设置为wanning,因为默认违反规则将被作为error,导致ant脚本执行结果被标记为失败,从而整个BVT执行失败。

执行代码检查

下面的命令检查了E:\workspace\JDK6UTF8\Godu3NewBuffer\src目录中所有代码的圈复杂度:

E:\workspace\JDK6UTF8\Godu3NewBuffer>java -jar d:\Apps\checkstyle-5.6\checkstyle-5.6-all.jar -c cc.xml -r src -o result.txt

其中-c后面写规则(配置)文件名,-r后面写待检查的文件/目录名,-o后面是结果输出文件名,-f xml表示输出为xml文件(默认是plain文本文件),如果不需要保存到文件中,只是查看一下结果,去掉-o,结果输出到屏幕上;

以Ant任务形式运行

  1. 将上述zip包中的checkstyle-5.6-all.jar文件拷贝到$ANT_HOME/lib下;

  2. 下面是一个简单的checkstyle任务,更多的检查方法参考Ant Task of Checkstyle

作为Eclipse插件

安装

这个插件叫eclipse-cs,先是在线装,连不上,改为下载zip包,解压到dropins目录的方法安装成功。

使用

CheckStyle的功能是通过一个具体的配置(configuration)来发挥作用的,对于被检查的项目,在属性里activate checkstyle,它就会在每次构建(build)项目的时候自动运行,如果是自动构建,则每次保存文件都会触发checkstyle执行代码检查。

使用CheckStyle分为两步,首先是Window->Preference里新建一个configuration,用来定义要检查的项目(如代码的圈复杂度、javadoc格式等),然后在被检查的项目属性里指定使用这个configuration,并定义检查的范围(例如只检查打开的文件、指定具体的包等)。

进行代码复杂度检查

第一步配置执行复杂度检查的configuration: Window -> Preference -> CheckStyle -> Global check configurations -> new,打开新建conf的窗口,写一个名字然后点OK:

在configuration窗体里选中 Metrics -> Cyclomatic Complexity:

点Add后出现配置窗体,在这里输入严重级别和判断标准,默认值为10,即当圈复杂度超过10时标记出来,确认退出。

第二步是在被检查的项目属性的checkstyle窗体中配置参数,首先是激活checkstyle,然后是选择一个configuration,最后是配置那些文件不进行检查,配好后确认就OK了。

检查结果的汇总在Window -> Show View -> Checkstyle violations中,还提供了一个饼图窗口;

GODU的新版本有些方法复杂度已经超过20了,汗,后面得好好重构才行。下面是checkstyle推荐的复杂度判断标准:

Generally 1-4 is considered good, 5-7 ok, 8-10 consider re-factoring, and 11+ re-factor now!

总结

Eclipse插件没有生成报告功能,优点是提供了离线安装包,安装过程对我等天朝草民来说比较简单;

与PMD相比,CheckStyle适合在写代码的同时打开代码检查功能进行“实时监控”,如果是代码已写完,需要对整体质量进行评估,或者找问题点,则PMD比较适合,因为它具备PMD视图,可以对结果汇总。



Published

Mar 20, 2013

Last Updated

Mar 20, 2013

Category

Tech

Tags

  • checkstyle 4
  • eaten: [wordpress.post] 5
  • Java 106

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor