让插件帮你优化代码
对代码审查研究有一段时间,觉得代码审查并不是一个一触而就的工作,对于一个适应了快速开发而缺少代码审查的团队来说,突然让他们花时间去审查别人的代码,我想很多人都会存在抵制情绪,也不知该如何下手,这样无疑会增加人力开销,同时也不会取得太理想的效果。所以在我看来,代码审查需要建立在一个书写代码规范的基础之上。
对于每一个成熟的开发团队来说,一定会有自己的代码规范,如果大家都按照规范的书写,那无疑会使代码很规范,大大减少维护成本和再次开发成本。但是实际当中是,很多人会忽视这些规范,缺少注释,按照各自喜欢的风格写代码,最后的结果可想而知。经常在想,我们再抱怨前人写的代码乱糟糟的时候,会不会不久的某一天也有人抱怨我们的代码没有条理呢。
根据我自己的切身体会来说为什么会忽视代码规范,一是容易忘记,二是想根据思路尽快写完测试功能正确性,不愿中途花精力去做些调整和注释的事,我想很多程序员都会遇到这样的问题。既然我们不能指望程序员自觉的按规范来书写代码,那么我们可以通过一些IDE自带的插件来帮助我们书写出规范的代码。也许初期会有些不习惯,会突然多出一些警告和错误,但花很少的时间,你就可以解决掉所有的警告和错误提示,让你的代码完全的符合规范,那时你会觉得心里很爽很踏实的,至少不再那么担心某一天会有人抱怨你的代码乱了。
我在网上看到也有不少插件可以检测代码的规范性,但是插件安装太多反而会将简单的事情复杂化,我们的目的是想花大家愿意花的时间去规范我们的代码,而不是要大张旗鼓的去规范代码。经过我自己的筛选,我认为有二款插件结合使用可以达到一个不错的效果。
一、CheckStyle
1.介绍
Checkstyle是一个开发工具,可以帮助编程人员编写符合编码规范的java 代码。程序员都非常讨厌程序的check工作,checkstyle能够自动地完成这项烦琐但又非常重要的工作,从而节省了的程序员的时间,也提高了检查的质量。Checkstyle已经成了加强编码规范的首选工具。
工具 | 目的 | 检查项 |
CheckStyle检查源文件主要关注格式 |
检查Java源文件是否与代码规范相符 |
主要包括: Javadoc注释 命名规范 多余没用的Imports Size度量,如过长的方法 缺少必要的空格Whitespace 重复代码 |
2.安装
方法一:通过eclipse自带更新(不推荐,速度慢,更新成功率低)
1. 在Eclipse中,选择Help->Install New Software
2.选择 Search for new features to install 选择Next
3.选择 New Remote Site
4.在名称中输入Checkstyle,在URL中输入:
http://eclipse-cs.sourceforge.net/update/
5.然后继续安装就行了。
方法二:
1. 你可以自己从网上下载安装包,把里面的两个文件夹plugins和 features下面的文件分别放到eclipse 目录下面对应的plugins和features目录下。
2. 清千万注意了,如果你就这样直接启动eclipse 可能会出现ClassNotFoundExceptions等错误。你必须在启动eclipse的时候加上一个参数 -clean. 这样eclipse就可以更新它当前安装的许多插件信息。
比如你得eclipse在d盘那么就是 d:\eclipse\eclipse.exe –clean
3.使用
1.启动eclipse
2.打开你要检查的项目的属性,找到checkstyle,可以为项目导入新的checkstyle.xml规则文件
3.在对话框中选择你要的checkStyle项目
请注意不要忘记了在左上角那个box打勾。如图。
4.接下来就可以看看你的代码符合规范与否了,如下图所示
现在你只需要根据警告处的提示来按要求调整你的代码就可以了。
二、PMD
1.介绍
PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。该软件功能强大,扫描效率高,是Java程序员debug的好帮手。
工具 | 目的 | 检查项 |
PMD是一个代码检查工具 | 检查Java源代码,以便发现潜在问题 |
潜在的bug:空的try/catch/finally/switch语句 未使用的代码:未使用的局部变量、参数、私有方法等 可选的代码:String/StringBuffer的滥用 复杂的表达式:不必须的if语句、可以使用while循环完成的for循环 重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs |
2.安装
从网上下载PMD安装包(见附件),把里面的两个文件夹plugins和 features下面的文件分别放到eclipse 目录下面对应的plugins和features目录下,重启即可。当然也可按照checkstyle直接在IDE上更新,但是个人认为更新速度慢,失败率高,不推荐。
3.使用
- 规则导入方法
window->preference->PMD->Rules configuration
点击“clear all”先清空默认的规则。然后点击“import rule set”,找到我们提供的规则文件导入。最后点击”ok”返回
也可以为项目单独使用规则,项目属性窗口,点击左侧“PMD”,右侧最下面一行勾选,使用单独的配置文件,然后点击右侧“Brows...”按扭,找到我们提供的规则文件即可,请看下面的图示:
(注:选中某个规则,点击Edit Rule按钮,出现对规则的解释和示例代码)
2. 用PMD检查源代码
选择工程属性,选PMD,选择Enable PMD,就可以启动PMD(可以根据需要选择需要哪些规则),如下图所示:
点击”ok”返回。Eclipse会自动重新编译文件(速度可能非常慢),为了提高编译速度,在工程属性中可以不启用PMD,而是手工启动PMD
在工程属性中,不选择 Enable PMD ,在资源浏览器中选择包或者类文件,点击右键,选择PMD,选择Check code with PMD,这样就只检查此包或类文件。
3. 查看检查结果
打开PMD视图,window->show view->others,选择PMD->Violations Outline和Violations Overview
Violations Overview列出了错误的分类,Violations Outline列出了错误的详细信息。点击Violations Outline的每条记录,可定位到源码出现错误的位置。
4. 产生错误信息报告
用如上方法检查完代码后,右键点击工程,选择PMD,点击generate reports,即可参数错误信息报告。报告存放的位置为$工程所在目录/ reports,产生的报告包括如下几种格式。
此时,你也只需按照报告上的问题来调整你的代码即可。
总结:这二款都偏重于代码规范上,checkstyle相比而言更基础一些,而且二个插件都可以定制规范和检查项,各个开发团队可以根据自己部门的代码规范制定对应的规范规则,就算不制定自己的规范规则文件也可以使用该插件,因为插件自身也带了一个不错的规范规则。