`

轻松有效检查Java代码的三个工具

 
阅读更多
作者: ZDNet China
Thursday, May 29 2003 5:00 PM <!-- BEGIN:STORY -->

本文译自Builder.com,未经许可请勿转载 Java项目最枯燥的一部分,也是程序员总是避而不谈的一部分,就是检查代码。为了区块括号、代码缩进、Javadoc注释以及命名约定而检查其他人的上千行代码的确是一件痛苦的事。更糟糕的是,通常代码的检查还受限于紧迫的项目进度。没有足够的时间对代码的细节进行评估,因此代码检查经常变成了对代码的美化练习。不管检查者有多么好的意图,优化和逻辑检查都退居次席。

Java代码分析器减轻了这样的痛苦
[被屏蔽广告]
<!--start banner ad--><!--ba--> <script language="JavaScript1.1" src="http://ad.cn.doubleclick.net/adj/messagingplus.zdnet.com.cn/developer/rescnter;sz=1x1;ord=1104927174?" type="text/javascript"> </script>Click here to find out more!<noscript></noscript> <!--end banner ad-->

在面对这种情况的时候,Java代码分析器正是对症良药。这些工具尽可能地将代码检查过程自动化。留给人工来做的就只有检查类的缺陷以及核心逻辑并确定可能的优化方法。优化(去除不必要的实例化对象、检查数据库连接是否合理、确保数据在可能的情况下被缓存)对于任何代码通常会带来性能上的极大改进。

最近我接触了各种代码分析器。我觉得一个基本的最重要的功能是与常用IDE(如NetBeans、Eclipse、jEdit以及JDeveloper)的集成。有一些代码检查工具在查找错误方面很有效,但是它们需要你根据给出的错误行的行号手工来追踪错误。这样的工具使用起来太累人了。与IDE环境集成了的工具可以大大简化这个过程,因为代码检查的结果是由所使用的IDE显示的。你只需在错误上双击就可以在Java编辑器中到达错误代码所在的行

我的试用心得

在我试用过的工具中,我发现其中三个工具十分强大并合乎与IDE集成的标准,它们是:PMDCheckstyleJalopy

PMD和Checkstyle

根据PMD的文档,它会对代码中的如下部分进行检查:

  • 未使用的本地变量
  • 空的catch块
  • 未使用参数
  • if语句
  • 重复的import语句
  • 未使用的私有方法
  • 可能是Singletons的类
  • 短/长变量及方法名字

Checkstyle检查如下部分:

  • Javadoc注释
  • 命名约定
  • 标题
  • Import语句
  • 体积大小
  • 空白
  • 修饰符
  • 混合检查(包活一些有用的比如非必须的System.out和printstackTrace)
它们的作用
[被屏蔽广告]
<!--start banner ad--><!--ba--> <script language="JavaScript1.1" src="http://ad.cn.doubleclick.net/adj/messagingplus.zdnet.com.cn/developer/rescnter;sz=1x1;ord=1208403755?" type="text/javascript"> </script>Click here to find out more!<noscript></noscript> <!--end banner ad-->

不像PMD,Checkstyle能够检查Javadoc注释;但是PMD提供了一项叫作CPD的很有用的功能,它检查代码的拷贝粘贴部分。我使用PMD找到的最频繁的错误是未使用的import语句,未使用的私有变量以及意外重复拼写。Checkstyle可以发现更多的错误。包括漏掉的Javadoc注释,超过80个字符的行、不合约定的变量名、用tab来代替空格等等。两个工具都允许创建自定义的规则。

如果想在你的组织中使用它们中的一个,Checkstyle似乎更好一些:它检查公司编码约定的大多数项目。如果增强代码质量是主要目标,那PMD是一个好的选择。但是如果你想要更多的功能并真正使用工具来修改代码,应该试试Jalopy。

Jalopy

Jalopy是一个易于配置的源代码格式程序,它能检测并修补Java代码中大量的习惯性缺陷。Jalopy更像一个代码整理器而不是检查器。Jalopy的插件现在已经支持大多数IDE,而且多数是无缝集成。我发现Jalopy特别强大,能够干许多很酷的事情。例如,它可以修改代码缩进、对齐括号、使行宽符合某个字符长度、插入相关的Javadoc注释以及对import语句排序。Jalopy最好的地方是超级自定义功能。一个简单的用户界面就可以让你选择Jalopy的所有功能的开关,不需要XML配置文件。

不要浪费资源

我建议大家使用这些工具来代替那些费时费力却收效甚微的人工代码检查工作。一旦使用这些工具将代码检查变成了一个相对轻松的任务,你就可以把代码检查作为一项普通工作而不是在项目结尾被进度逼得一团糟时做的事情。这些工具也提供了与Apache Ant的集成,因此你可以每天运行这些代码检查器,在编译或执行单元测试它们也能工作得很好。控制好你的代码,并交付那些你真的认为是高质量的东西。


分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目源代码

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    JAVA上百实例源码以及开源项目

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    java开源包8

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包10

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    effectivejava:对您的Java代码运行查询,以检查其是否符合有效Java一书中建议的条件。 还有一些

    有效的Java是检查Java代码库的工具。 您可以通过三种不同的方式使用它: 作为Java linter。 只要告诉它您要检查的目录,它就会发出一系列警告和建议,以改善您的代码 从命令行运行查询。 它可以告诉您在代码库中...

    java开源包11

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包6

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包9

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包4

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包101

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包5

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包3

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包1

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包2

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包7

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    Java资源包01

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    Guava 16.0 API (CHM格式)

    这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。下面我们就开启优雅Java编程学习之旅!  项目相关信息:  官方首页:http://code.google.com/p/guava-libraries  官方下载:...

    spring-boot-reference.pdf

    我们还提供了一个运行“spring脚本”的命令行工具。 我们的主要目标是: 为所有Spring开发提供从根本上更快且可广泛访问的入门体验。 开箱即用,但随着需求开始偏离默认值而迅速摆脱困境。 提供大型项目(例如...

Global site tag (gtag.js) - Google Analytics