让开发自动化 用 Eclipse 插件提高代码质量

在 让开发自动化 的本期文章中,自动化专家 Paul Duvall 将带来一些关于 Eclipse 插件的例子,您可以安装、配置和使用这些静态分析插件,以便在开发生命周期的早期预防问题。

开发软件时,我的主要目标之一是:要么防止将缺陷引入代码库,要么限制缺陷的生存期;换言之,要尽早找到缺陷。很显然,越是了解如何编写更好的代码以及如何有效测试软件,就越能及早地捕捉到缺陷。我也很想要一张能发现潜在缺陷的安全之网。

在本系列 八月份 的那期文章中,我得出了这样的结论:将检验工具集成到构建过程(例如,使用 Ant 或 Maven)中,能够建立起一种寻找潜在缺陷的方法。尽管这种方法使一致性成为可能并超越了 IDE,但它也有一点反作用。必须在本地构建软件或等待 Continuous Integration 构建的运行。如果使用 Eclipse 插件,就可以在通过 Continuous Integration 构建或集成前 发现一些这样的冲突。这就促成了我称为渐进编程 的编程方式,在这种方式下,允许在编码过程中进行一定程度的质量检验 —— 再也不能比这个更早了!

本文涵盖了我所认为的 “五大” 代码分析领域:

  • 编码标准
  • 代码重复
  • 代码覆盖率
  • 依赖项分析
  • 复杂度监控

可以用接下来的几个灵活的 Eclipse 插件来揭示这些分析领域:

  • CheckStyle:用于编码标准
  • PMD 的 CPD:帮助发现代码重复
  • Coverlipse:测量代码覆盖率
  • JDepend:提供依赖项分析
  • Eclipse Metric 插件:有效地查出复杂度









Eclipse 不是您的构建系统
使用 Eclipse 插件与您将这些检验工具用于构建过程并不矛盾。事实上,您想要确保的是:下列使用 Eclipse 插件的规则就是应用到构建过程中的规则。

安装 Eclipse 插件

安装 Eclipse 插件再简单不过了,只需要几个步骤。在开始之前,最好把该插件下载站点的 URL 准备好。表 1 是本文用到的插件的列表:

表 1. 代码改进插件和相应的下载站点 URL



























工具 目的 Eclipse 插件的 URL
CheckStyle 编码标准分析 http://eclipse-cs.sourceforge.net/update/
Coverlipse 测试代码覆盖率 http://coverlipse.sf.net/update
CPD 复制/粘贴检验 http://pmd.sourceforge.net/eclipse/
JDepend 包依赖项分析 http://andrei.gmxhome.de/eclipse/
Metrics 复杂度监控 http://metrics.sourceforge.net/update

知道了这些有用插件的下载地址后,安装插件就是一个极简单的过程。启动 Eclipse,然后遵循下列步骤:

  1. 选择 Help | Software Updates | Find and Install,如图 1 所示:

    图 1. 寻找并安装 Eclipse 插件

  2. 选择 Search for new features to install 单选按钮,单击 Next

  3. 单击 New Remote Site,输入要安装的插件名和 URL(参见图 2),单击 OK,然后单击 Finish 来显示 Eclipse 更新管理器。

    图 2. 配置新的远程站点

  4. 在 Eclipse 更新管理器中,有一个查看插件各方面特性的选项。我通常选择顶级项,如图 3 所示。选择您需要的选项并单击 Finish。Eclipse 现在安装该插件。您需要重启 Eclipse 实例。

    图 3. 安装 Eclipse 插件

请遵循上述这些步骤来安装其他的 Eclipse 插件;只需改变插件名和相应的下载位置即可。
















回页首

用 CheckStyle 校正标准

代码库的可维护性直接影响着软件的整个成本。另外,不佳的可维护性还会让开发人员十分头痛(进而导致开发人员的缺乏)—— 代码越容易修改,就越容易添加新的产品特性。像 CheckStyle 这样的工具可以协助寻找那些可影响到可维护性、与编码标准相冲突的地方,比方说,过大的类、太长的方法和未使用的变量等等。









有关 PMD
另一个叫做 PMD 的开源工具提供的功能和 CheckStyle 类似。我偏爱 CheckStyle,但 PMD 也有很多执着的追随者,所以我建议您了解一下这个工具,毕竟它也颇受一些人的青睐。

使用 Eclipse 的 CheckStyle 插件的好处是能够在编码过程中了解到源代码上下文的各种编码冲突,让开发人员更可能在签入该代码前真正处理好这些冲突。您也几乎可以把 CheckStyle 插件视作一个连续的代码复查工具!

安装 CheckStyle 插件并做如下配置(参见图 4):

  1. 选择 Project,然后选择 Eclipse 菜单中的 Properties 菜单项。

  2. 选择 CheckStyle active for this project 复选框,单击 OK

    图 4. 在 Eclipse 中配置 CheckStyle 插件

Eclipse 重新构建工作空间,并在 Eclipse 控制台中列示已发现的编码冲突,如图 5 所示:

图 5. Eclipse 中 CheckStyle 的代码冲突列表

使用 CheckStyle 插件在 Eclipse 内嵌入编码标准检验是一种很棒的方法,用这种方法可以在编码时 积极地改进代码,从而在开发周期的早期发现源代码中潜在的缺陷。这么做还有更多的好处,如节省时间、减少失败,也因此会减少项目的成本。没错,这就是一种积极主动的方式!
















回页首

用 Coverlipse 确认覆盖率

Coverlipse 是一个用于 Cobertura 的 Eclipse 插件,Cobertura 是一个代码覆盖率工具,可以用它来评估具有相应测试的源代码的比率。Cobertura 也提供一个 Ant 任务和 Maven 插件,但用 Cobertura,您可以在编写代码时 评估代码覆盖率。您见过这样的模式吗?

通过选择 Eclipse 菜单项 Run 安装 Coverlipse 插件并将其和 JUnit 关联起来,该操作会显示一系列运行配置选项,例如 JUnit、SWT 应用程序和 Java™ 应用程序。右键单击它并选择 JUnit w/Coverlipse 节点中的 New。在这里,需要确定 JUnit 测试的位置,如图 6 所示:

图 6. 配置 Coverlipse 以获取代码覆盖率

一旦单击了 Run,Eclipse 会运行 Coverlipse 并在源代码(如图 7 所示)中嵌入标记,该标记显示了具有相关 JUnit 测试的代码部分:

图 7. Coverlipse 生成的具有嵌入类标记的报告

正如您所见,使用 Coverlipse Eclipse 插件可以更快地确定代码覆盖率。例如,这种实时数据功能有助于在将代码签入 CM 系统前 更好地进行测试。这对渐进编程来说意味着什么呢?
















回页首

用 CPD 捕捉代码重复

Eclipse 的 PMD 插件提供了一项叫做 CPD(或复制粘贴探测器)的功能,用于寻找重复的代码。为在 Eclipse 中使用这项便利的工具,需要安装具有 PMD 的 Eclipse 插件,该插件具有 CPD 功能。

为寻找重复的代码,请用右键单击一个 Eclipse 项目并选择 PMD | Find Suspect Cut and Paste,如图 8 所示:

图 8. 使用 CPD 插件运行复制粘贴检验

一旦运行了 CPD,您的 Eclipse 根目录下就会创建出一个 report 文件夹,其中包含一个叫做 cpd.txt 的文件,文件中列示了所有重复的代码。图 9 中是一个 cpd.txt 文件的例子:

图 9. Eclipse 插件生成的 CPD 文本文件

靠人工来寻找重复的代码是一项挑战,但使用像 CPD 这样的插件却能在编码时轻松地发现重复的代码。
















回页首

使用 JDepend 进行依赖项检查

JDepend 是个可免费获取的开源工具,它为包依赖项提供面向对象的度量值,以此指明代码库的弹性。换句话说,JDepend 可有效测量一个架构的健壮性(反之,脆弱性)。

除了 Eclipse 插件,JDepend 还提供一个 Ant 任务、Maven 插件和一个 Java 应用程序,用以获取这些度量值。对于相同的信息,它们有着不同的传递机制;但 Eclipse 插件的特别之处和相应优点是:它能以更接近源代码(即,编码时)的方式传递这条信息。

图 10 演示了使用 Eclipse JDepend 插件的方法:通过右键单击源文件夹并选择 Run JDepend Analysis。一定要选择一个含源代码的源文件夹;否则看不到此菜单项。

图 10. 使用 JDepend Analysis 分析代码

图 11 显示了运行 JDepend Analysis 时生成的报告。左边显示包,右边显示针对每个包的依赖项度量值。

图 11. Eclipse 项目中的包依赖项

正如您所见,JDepend 插件提供了有助于不断观察架构可维护性变化的大量信息 —— 这其中最大的好处是您可以在编码时看到这些数据。
















回页首

用 Metrics 测量复杂度

“五大”代码分析最后的一项是测量复杂度。Eclipse 提供一种叫做 Metrics 的插件,使用该插件可以进行许多有用的代码度量,包括圈复杂度度量,它用于测量方法中惟一路径的数目。

安装 Metrics 插件并重启 Eclipse;然后遵循下列步骤:

  1. 右键单击您的项目并选择 Properties 菜单。在结果窗口中,选择 Enable Metrics plugin 复选框并单击 OK,如图 12 所示:

    图 12. 为项目配置 Metrics

  2. 从 Eclipse 中选择 Window 菜单打开 Metrics 视图,然后选择 Show View | Other...

  3. 选择 Metrics | Metrics View 打开如图 13 中显示的窗口。您需要使用 Java 透视图并重新构建项目,从而显示这些度量值。

    图 13. 打开 Eclipse 中的 Metrics View

  4. 单击 OK 来显示如图 14 中的窗口。

    在此例中,我正在查看一个单独方法的圈复杂度。真正妙的是您可以双击 Metrics 列表中的方法,该插件会在 Eclipse 编辑器中为此方法打开源代码。这就让修正变得超级简单(如果需要的话)!

    图 14. 查看方法的圈复杂度

正如我之前提到过的,Eclipse Metrics 插件还提供了许多功能强大的度量值,有助于您在开发软件的过程中改进代码 —— 可见,它是一个渐进编程意义上的插件!
















回页首

合适的才是最好的

正如您从本文中看到的那样,将“五大”测量方法,即编码标准、代码重复、代码覆盖率、依赖项分析和复杂度监控,用于改进代码质量十分重要。但适合您的才是好的。请记住还有其他许多可用的 Eclipse 插件(比如 PMD 和 FindBugs)能够帮助您在开发周期的早期改进代码质量。不管您想要的工具或偏爱的方法是什么,重要的是:行动起来去积极改进代码质量并让手工代码检验的过程变得更加有效。我估计您使用这些插件一段时间后,就再也离不开它们了。

(0)

相关推荐

  • Eclipse 格式化代码时不换行与自动换行的实现方法

    1.preferences->Java->Code Style->Code Formatter->Show... ,打开之后,选择"Line Wrapping"选项卡,在"Maximun line width"指定大于多少列时换行. 2.还是在"Line Wrapping"选项卡中,能过选择"Line Wrapping policy"可以指定构造函数.方法体等的换行情况. 不过,SUN推荐的编码风格默认

  • 关于更改Zend Studio/Eclipse代码风格主题的介绍

    最近决定把几个IDE的代码样式统一一下,Visual Studio的还算好改,PHP目前用得不多,不过也打算给Zend Studio换身新装. 网上搜索的一些更改Zend Studio主题的多是修改或者导入主题配置文件,可选主题不多而且略显麻烦,今天在Zend官方网站上找到一个比较好的解决办法.详细参见Zend文档<Working with Eclipse Color Theme>.原文是英文,比较麻烦,而且大家肯定去找菜单Window | Preferences | General | Ap

  • MyEclipse到期破解代码分享

    执行这段代码后,帐号自己随意写,回车,把得到的序列号输入到框中,finish 复制代码 代码如下: /** * 在MyEclipse中subscription information, */ import java.io.*; public class MyEclipseGen { private static final String LL = "Decompiling this copyrighted software is a violation of both your license

  • 下一代Eclipse 步入云端

    带着大家一起了解"下一代Eclipse 步入云端" 一.安装方法 注意:Che目前是pre-alpha的版本,请从源代码编译来体验workspace/environment概念. Che需要Docker,可以根据需要查看Windows或者MacOS安装Docker的有关信息. 安装方法: git clone git checkout 4.0 cd assembly-sdk mvn clean install cd .. ./che run http://localhost:8080 二

  • 让开发自动化 用 Eclipse 插件提高代码质量

    在 让开发自动化 的本期文章中,自动化专家 Paul Duvall 将带来一些关于 Eclipse 插件的例子,您可以安装.配置和使用这些静态分析插件,以便在开发生命周期的早期预防问题. 开发软件时,我的主要目标之一是:要么防止将缺陷引入代码库,要么限制缺陷的生存期:换言之,要尽早找到缺陷.很显然,越是了解如何编写更好的代码以及如何有效测试软件,就越能及早地捕捉到缺陷.我也很想要一张能发现潜在缺陷的安全之网. 在本系列 八月份 的那期文章中,我得出了这样的结论:将检验工具集成到构建过程(例如,使

  • 25个最好的免费Eclipse插件

    Eclipse提供了一个可扩展插件的开发系统.这就使得Eclipse在运行系统之上可以实现各种功能.这些插件也不同于其他的应用(插件的功能是最难用代码实现的).拥有合适的Eclipse插件是非常重要的,因为它们能让Java开发者们无缝的开发基于J2EE和服务的应用程序.Eclipse的插件也能帮助他们开发不同应用架构上的程序. 下面列出来的是25个最好的免费Eclipse插件,可以让开发者更高效的工作 . 提高代码质量的插件 1. FindBugs FindBugs可以帮你找到Java代码中的b

  • 提高团队代码质量利器ESLint及Prettier详解

    目录 正文 ESLint VUE 项目的规则 Prettier ESLint 与 Prettier 正文 每个开发人员都有独特的代码编写风格和不同的文本编辑器.在团队项目开发过程,不能强迫每个团队成员都写一样的代码风格. 可能会看到以下部分(或全部)内容: 缺少分号: 有单引号.双引号,风格不一致: 一些行之间有大量的空格,而其他行之间没有空格: 在使向右滚动多年以查看其中包含的所有内容的行上运行: 看似随意的缩进: 注释掉代码块: 初始化但未使用的变量: 一些使用“严格”JS 的文件和其他不使

  • 强烈推荐IDEA提高开发效率的必备插件

    前言 今天小编给大家推荐几款值得剁手的插件,真的很实用,安装就对了,在工作中,我们可能会时常因为编码效率,而烦恼,可能有时候并不是我们的编码效率不高,只是我们没用对方法,没用到好的工具,能够节省我们的开发时间,这是小编在开发中常使用的一些插件,所以推荐给大家. 一.Lombok插件 Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而使您的Java更加生动有趣. 永远不要再写一个get.set或equals方法,一个注释就能够帮您的类有一个功能全面的生成器,自动化帮你生成你

  • IntelliJ Idea常用11款插件(提高开发效率)

    插件安装方式: 新版本IDE安装方式略有不同,不一一赘述 1.Background Image Plus 这款插件并不能直接提高你的开发效率,但是可以让你面对的IDE不再单调,当把背景设置成你自己心仪的的图片, 是不是会感觉很赏心悦目,编码效率会不会因此间接的提高?! 使用方法: 注意,如果是IDEA版本是2020.1版本以上就不需要再额外装这个插件,这个插件是已经内置安装了.  2.Mybatis Log Plugin Mybatis现在是java中操作数据库的首选,在开发的时候,我们都会把M

  • Eclipse插件大全 挑选最牛的TOP30(全)

    Eclipse的应用需要众多的插件,但是Eclipse的插件大家又知道多少呢?"Eclipse最牛的30个插件"不知道看官们是否了解,51CTO翻译组的风少侠特意翻译出来奉献给各位,希望大家喜欢. 1.PyDev – Eclipse的Python开发环境 工具地址:http://marketplace.eclipse.org/content/pydev-python-ide-eclipse Pydev这个插件能够让用户利用Eclipse进行Python.Jython以及Iron Pyt

  • 使用JSLint提高JS代码质量方法分享

    随着富 Web 前端应用的出现,开发人员不得不重新审视并重视 JavaScript 语言的能力和使用,抛弃过去那种只靠"复制 / 粘贴"常用脚本完成简单前端任务的模式.JavaScript 语言本身是一种弱类型脚本语言,具有相对于 C++ 或 Java 语言更为松散的限制,一切以函数为中心的函数式编程思想也为开发人员提供了更加灵活的语法实现.然而,这种灵活性在带来高效的同时,也成为初学或者经验不足的 JavaScript 开发人员的噩梦.形式各异的代码风格.隐含错误的代码行为,严重影响

  • 使用 Swift Package 插件生成代码的示例详解

    目录 前言 是什么让我再次关注到它? 实施细节 让我们写一些代码吧 编写可执行文件 创建该插件 让我们看下结果 前言 不久前,我正在工作中开发一项新服务,该服务由 Swift Package 组成,该 Package 公开了一个类似于Decodable​协议,供我们应用程序的其余部分使用.事实上,该协议是从Decodable本身继承下来的,看起来像这样: Fetchable.swit protocol Fetchable: Decodable, Equatable {} 新的 package 将

  • Python 自动化表单提交实例代码

    今天以一个表单的自动提交,来进一步学习selenium的用法 练习目标 0)运用selenium启动firefox并载入指定页面(这部分可查看本人文章 http://www.cnblogs.com/liu2008hz/p/6958126.html) 1)页面元素查找(多种查找方式:find_element_*) 2)内容填充(send_keys) 3)iframe与父页面切换(switch_to_frame是切换到iframe,switch_to_default_content是切换到主页面)

  • 提高代码可读性的十大注释技巧分享

    本文讲述了提高代码可读性的十大注释技巧.分享给大家供大家参考,具体如下: 很多程序员在写代码的时候往往都不注意代码的可读性,让别人在阅读代码时花费更多的时间.其实,只要程序员在写代码的时候,注意为代码加注释,并以合理的格式为代码加注释,这样就方便别人查看代码,也方便自己以后查看了.下面分享十个加注释的技巧: 1. 逐层注释 为每个代码块添加注释,并在每一层使用统一的注释方法和风格.例如: 针对每个类:包括摘要信息.作者信息.以及最近修改日期等: 针对每个方法:包括用途.功能.参数和返回值等. 在

随机推荐