工具 | 目的 | Eclipse 插件的 URL | CheckStyle 编码标准分析 Coverlipse 测试代码覆盖率 CPD 复制/粘贴检验 JDepend 包依赖项分析 Metrics 复杂度监控 知道了这些有用插件的下载地址后安装插件就是一个极简单的过程启动 Eclipse然后遵循下列步骤
选择 Help | Software Updates | Find and Install如图 所示
图 寻找并安装 Eclipse 插件
选择 Search for new features to install 单选按钮单击 Next
单击 New Remote Site输入要安装的插件名和 URL(参见图 )单击 OK然后单击 Finish 来显示 Eclipse 更新管理器
图 配置新的远程站点
在 Eclipse 更新管理器中有一个查看插件各方面特性的选项我通常选择顶级项如图 所示选择您需要的选项并单击 FinishEclipse 现在安装该插件您需要重启 Eclipse 实例
图 安装 Eclipse 插件
请遵循上述这些步骤来安装其他的 Eclipse 插件只需改变插件名和相应的下载位置即可
用 CheckStyle 校正标准
代码库的可维护性直接影响着软件的整个成本另外不佳的可维护性还会让开发人员十分头痛(进而导致开发人员的缺乏)—— 代码越容易修改就越容易添加新的产品特性像 CheckStyle 这样的工具可以协助寻找那些可影响到可维护性与编码标准相沖突的地方比方说过大的类太长的方法和未使用的变量等等
有关 PMD
另一个叫做 PMD 的开源工具提供的功能和 CheckStyle 类似我偏爱 CheckStyle但 PMD 也有很多执着的追随者所以我建议您了解一下这个工具毕竟它也颇受一些人的青睐
使用 Eclipse 的 CheckStyle 插件的好处是能够在编码过程中了解到源代码上下文的各种编码沖突让开发人员更可能在签入该代码前真正处理好这些沖突您也几乎可以把 CheckStyle 插件视作一个连续的代码复查工具!
安装 CheckStyle 插件并做如下配置(参见图 )
选择 Project然后选择 Eclipse 菜单中的 Properties 菜单项
选择 CheckStyle active for this project 复选框单击 OK
图 在 Eclipse 中配置 CheckStyle 插件
Eclipse 重新构建工作空间并在 Eclipse 控制台中列示已发现的编码沖突如图 所示
图 Eclipse 中 CheckStyle 的代码沖突列表
使用 CheckStyle 插件在 Eclipse 内嵌入编码标准检验是一种很棒的方法用这种方法可以在编码时 积极地改进代码从而在开发周期的早期发现源代码中潜在的缺陷这么做还有更多的好处如节省时间减少失败也因此会减少项目的成本没错这就是一种积极主动的方式!
用 Coverlipse 确认覆盖率
Coverlipse 是一个用于 Cobertura 的 Eclipse 插件Cobertura 是一个代码覆盖率工具可以用它来评估具有相应测试的源代码的比率Cobertura 也提供一个 Ant 任务和 Maven 插件但用 Cobertura您可以在编写代码时 评估代码覆盖率您见过这样的模式吗?
通过选择 Eclipse 菜单项 Run 安装 Coverlipse 插件并将其和 JUnit 关联起来该操作会显示一系列运行配置选项例如 JUnitSWT 应用程序和 Java; 应用程序右键单击它并选择 JUnit w/Coverlipse 节点中的 New在这里需要确定 JUnit 测试的位置如图 所示
图 配置 Coverlipse 以获取代码覆盖率
一旦单击了 RunEclipse 会运行 Coverlipse 并在源代码(如图 所示)中嵌入标记该标记显示了具有相关 JUnit 测试的代码部分
图 Coverlipse 生成的具有嵌入类标记的报告
正如您所见使用 Coverlipse Eclipse 插件可以更快地确定代码覆盖率例如这种实时数据功能有助于在将代码签入 CM 系统前 更好地进行测试这对渐进编程来说意味着什么呢?
用 CPD 捕捉代码重复
Eclipse 的 PMD 插件提供了一项叫做 CPD(或复制粘贴探测器)的功能用于寻找重复的代码为在 Eclipse 中使用这项便利的工具需要安装具有 PMD 的 Eclipse 插件该插件具有 CPD 功能
为寻找重复的代码请用右键单击一个 Eclipse 项目并选择 PMD | Find Suspect Cut and Paste如图 所示
图 使用 CPD 插件运行复制粘贴检验
一旦运行了 CPD您的 Eclipse 根目录下就会创建出一个 report 文件夹其中包含一个叫做 cpdtxt 的文件文件中列示了所有重复的代码图 中是一个 cpdtxt 文件的例子
图 Eclipse 插件生成的 CPD 文本文件
靠人工来寻找重复的代码是一项挑战但使用像 CPD 这样的插件却能在编码时轻松地发现重复的代码
使用 JDepend 进行依赖项检查
JDepend 是个可免费获取的开源工具它为包依赖项提供面向对象的度量值以此指明代码库的弹性换句话说JDepend 可有效测量一个架构的健壮性(反之脆弱性)
除了 Eclipse 插件JDepend 还提供一个 Ant 任务Maven 插件和一个 Java 应用程序用以获取这些度量值对于相同的信息它们有着不同的传递机制但 Eclipse 插件的特别之处和相应优点是它能以更接近源代码(即编码时)的方式传递这条信息
图 演示了使用 Eclipse JDepend 插件的方法通过右键单击源文件夹并选择 Run JDepend Analysis一定要选择一个含源代码的源文件夹否则看不到此菜单项
图 使用 JDepend Analysis 分析代码
图 显示了运行 JDepend Analysis 时生成的报告左边显示包右边显示针对每个包的依赖项度量值
图 Eclipse 项目中的包依赖项
正如您所见JDepend 插件提供了有助于不断观察架构可维护性变化的大量信息 —— 这其中最大的好处是您可以在编码时看到这些数据
用 Metrics 测量复杂度
五大代码分析最后的一项是测量复杂度Eclipse 提供一种叫做 Metrics 的插件使用该插件可以进行许多有用的代码度量包括圈复杂度度量它用于测量方法中惟一路径的数目
安装 Metrics 插件并重启 Eclipse然后遵循下列步骤
右键单击您的项目并选择 Properties 菜单在结果窗口中选择 Enable Metrics plugin 复选框并单击 OK如图 所示
图 为项目配置 Metrics
从 Eclipse 中选择 Window 菜单打开 Metrics 视图然后选择 Show View | Other
选择 Metrics | Metrics View 打开如图 中显示的窗口您需要使用 Java 透视图并重新构建项目从而显示这些度量值
图 打开 Eclipse 中的 Metrics View
单击 OK 来显示如图 中的窗口
在此例中我正在查看一个单独方法的圈复杂度真正妙的是您可以双击 Metrics 列表中的方法该插件会在 Eclipse 编辑器中为此方法打开源代码这就让修正变得超级简单(如果需要的话)!
图 查看方法的圈复杂度
正如我之前提到过的Eclipse Metrics 插件还提供了许多功能强大的度量值有助于您在开发软件的过程中改进代码 —— 可见它是一个渐进编程意义上的插件!
合适的才是最好的
正如您从本文中看到的那样将五大测量方法即编码标准代码重复代码覆盖率依赖项分析和复杂度监控用于改进代码质量十分重要但适合您的才是好的请记住还有其他许多可用的 Eclipse 插件(比如 PMD 和 FindBugs)能够帮助您在开发周期的早期改进代码质量不管您想要的工具或偏爱的方法是什么重要的是行动起来去积极改进代码质量并让手工代码检验的过程变得更加有效我估计您使用这些插件一段时间后就再也离不开它们了
参考资料
学习
您可以参阅本文在 developerWorks 全球站点上的 英文原文
让开发自动化 (Paul DuvalldeveloperWorks)阅读完整的系列
Improving Code Quality with PMD and Eclipse (Levent GursesJacoozi 年 月)这篇文章将 PMD 视为 Eclipse 插件介绍了使用 PMD 改进代码质量并缩短代码检验过程的方法
用 Cobertura 测量测试覆盖率 (Elliotte Rusty HarolddeveloperWorks 年 月)Elliotte Rusty Harold 分享了他的经验即如何使用代码覆盖率的最佳实践来利用 Cobertura
不要被覆盖报告所迷惑 (Andrew GloverdeveloperWorks 年 月)这篇文章进一步揭示了覆盖率报告中的数字所代表的真正含义也给出了这些数字所不能代表的含义
Managing Your Dependencies with JDepend (Glen WilcoxOnJava 年 月)在这篇文章中Glen Wilcox 介绍了 JDepend这是一个可以免费获取的工具它能洞悉软件架构中的许多质量问题
软件架构的代码质量 (Andrew GloverdeveloperWorks 年 月)Andrew Glover 介绍了如何持续监控以及如何改正能够影响软件架构长期存续性的代码质量问题
让开发自动化: 持续检查 (Paul DuvalldeveloperWorks 年 月)Paul Duvall 介绍了自动化的检查工具(如 CheckStyleJavaNCSS 和 CPD )是如何增强开发过程的以及何时应该使用这些工具
Detecting Duplicate Code with PMDs CPD (Tom CopelandOnJava 年 月)Tom Copeland 介绍了一种叫做 CPD(复制/粘贴检测器)的开源工具该工具用于寻找重复的 Java 代码
Maintain organizational standards with code audits ()编码标准有利于广大开发人员对代码库达成共识
developerWorks Java 技术专区数百篇关于 Java 编程各方面的文章
获得产品和技术
Eclipse plugin for PMD使用 PMD 插件在代码中寻找复制粘贴问题
Eclipse plugin for JDepend此插件有助于分析代码库中的包依赖项
Eclipse plugin for CoberturaCoverlipse 是 用于 Cobertura 的 Eclipse 插件它提供代码覆盖率信息
Eclipse Metrics此插件提供度量值如圈复杂度非常有助于寻找复杂代码
Eclipse plugin for CheckStyle检验项目编码标准的遵循情况
讨论
提高代码质量论坛developerWorks 的积极贡献者 Andrew Glover 是一名专注于改进代码质量的顾问他为这个由他主持的论坛带来了很多相当专业的知识
关于作者
Paul Duvall 是 Stelligent Incorporated 的 CTO该公司利用有效的开发人员测试策略以及能够让团队尽早尽多地监视和提高代码质量的持续集成技术帮助其他企业解决软件的质量问题他还是 UML; Toolkit 一书的作者之一目前正在与他人合作撰写 Continuous Integration: Improving Software Quality and Reducing Risk (AddisonWesley) 一书