checkstyle 静态代码检查

本文介绍了使用checkstyle工具进行代码静态检查以提高代码质量。checkstyle是一个可以帮助程序员遵守编码标准的工具,通过自动化检查避免潜在问题。它可以自定义配置,并支持多种编码标准。文章详细阐述了checkstyle的配置、模块、属性及其用法,以及如何在Eclipse等IDE中集成和运行checkstyle。
摘要由CSDN通过智能技术生成

提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免。类似于编码规范上的内容,如果全靠编码人员进行自行检查,那么无疑需要很大的工作量,如果可以使用代码的静态检查工具进行检查的话,那么将大大的提高编码的效率。

本文是提高代码质量系列文章的第二篇,主要介绍了如何使用checkstyle工具进行代码的自动化检查,以规避一些潜在的问题并找出代码的逻辑错误。

1.         什么是checkstyle?

Checkstyle是一个用于帮助编写Java代码的程序员来遵守特定的编码标准。Checkstyle可以自动进行代码的检查,因为代码检查非常重要,但是又很枯燥,所以可以自动的进行代码检查无疑节省了很多的工作量。Checkstyle尤其适用于强制使用编码标准的项目。

Checkstyle是完全可以进行自定义配置的,并且可以支持几乎任何的编码标准。例如提供了支持Sun Code Conventions编码标准的样例配置文件以及一些其他的样例配置文件。

Checkstyle可以检查源代码的很多方面,checkstyle的本意是检查代码的布局及样式,但是从版本3之后,就已经追加了更多的检查项目。现在的checkstyle版本已经可以检查诸如设计问题,重复代码,以及double checked locking等bug。具体请参考标准检查项可选检查项

可以在SourceForge的下载页面下载Checkstyle的最新版本。

相关工具:如果将Checkstyle集成到构建过程中的话,那么将起到最大的作用。Checkstyle的发布版本包含以下内容:

→       Ant Task

→       命令行工具

另外,也有很多第三方的插件可供使用,例如Eclipse、WSAD、IntelliJ IDEA、NetBeans等流程的Java开发IDE。

2.         CheckStyle的配置

Checkstyle的配置用来指定哪些模块适用于Java源文件。模块是一个以Checker模块为根元素的树结构。modules的下一层元素包括如下的内容:

®       FileSetChecks:一些以输入文件为参数的模块,并引发错误消息。

®       Filters:过滤审核事件的模块,包括错误消息。

®       AuditListeners:报告被接受的事件。

很多检查是TreeWalker FileSetCheck模块的子模块。TreeWalker通过逐个的将Java源文件转换成抽象的语法树,然后循环它的每个子模块来处理检查结果。每个子模块检查各自特定的方面。

Checkstyle从XML文件获取配置,在XML文档中指定了配置的模型的层次以及他们的属性。当使用命令行执行Checkstyle命令(或者在ant任务中使用Checkstyle的时候)是需要提供一个包含配置文档的文件。Checkstyle的发布包中的doc目录中包含了一个样例的配置文件sun_checks.xml可以检查Sun的编码规范。

Modules

XML配置文档中由元素的name属性指定的module元素。下面是一个典型的配置片段:

<module name="Checker">

    <module name="PackageHtml"/>

    <module name="TreeWalker">

        <module name="AvoidStarImport"/>

        <module name="ConstantName"/>

        <module name="EmptyBlock"/>

    </module>

</module>

在上面的配置中:

®       根模块Checker包含了子模块FileSetChecks PackageHtml和TreeWalker。(PackageHtml模块检查所有的包都要有文档)

®       模块TreeWalker包含了子模块AvoidStarImport、ConstantName和EmptyBlock。这些子模块分别检查Java源文件是否有星号引入语句、合法的常两名以及是否包含空块。

对于每个配置模块,checkstyle通过module元素的name属性指定要加载的类。加载模块的类的规则如下:

®       根据指定的包名,例如加载类com.puppycrawl.tools.checkstyle.TreeWalker,<module name =” com.puppycrawl.tools.checkstyle.TreeWalker”>,这有助于第三方的模块集成到配置中。

®       checkstyle预定义的包名,例如com.puppycrawl.tools.checkstyle.checks和com.puppycrawl.tools.checksty

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值