`
xfjt297857539
  • 浏览: 153182 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

在 Eclipse 中使用 5 个有用的插件来自动化代码质量分析(zhuan)

 
阅读更多
在 Eclipse 中使用 5 个有用的插件来自动化代码质量分析




如果能在构建代码前发现代码中潜在的问题会怎么样呢?很有趣的是,Eclipse 插件中就有这样的工具,比如 JDepend 和 CheckStyle,它们能帮您在软件问题暴露前发现这些问题。



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



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



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

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


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

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


安装 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 这样的工具可以协助寻找那些可影响到可维护性、与编码标准相冲突的地方,比方说,过大的类、太长的方法和未使用的变量等等。



使用 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 的插件,使用该插件可以进行许多有用的代码度量,包括圈复杂度度量,它用于测量方法中惟一路径的数目。



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)能够帮助您在开发周期的早期改进代码质量。不管您想要的工具或偏爱的方法是什么,重要的是:行动起来去积极改进代码质量并让手工代码检验的过程变得更加有效。我估计您使用这些插件一段时间后,就再也离不开它们了。

分享到:
评论

相关推荐

    zhuan 2.zip

    在这个名为"zhuan 2.zip"的压缩包中,包含了一个支持移动端的转盘抽奖程序。这个程序的核心是通过JavaScript实现,使得用户可以通过点击来触发抽奖过程,从而增加用户体验的趣味性和参与度。 首先,我们来看“转盘...

    gssdgv-zhuan-ke-master_java_

    Spring Boot简化了Java应用的初始化和配置,而gssdgv-zhuan-ke在此基础上增加了特定于蚂蚁集团业务需求的功能,使得开发者能够快速构建高性能、高可用的服务。 2. **Readiness Check** Readiness Check是该框架的...

    Map_out.rar_Map o_mapgis_mapgis noteo_mapgis zhuan jpg_out

    在开发过程中,开发者可能需要处理的问题包括地图的投影转换、图层管理和可见性控制、符号化规则的设定、以及如何优化转换速度和图像质量等。同时,考虑到兼容性和可扩展性,代码可能需要设计成模块化,以便于后续的...

    zhuan_java_untilgw8_android_

    标题 "zhuan_java_untilgw8_android_" 暗示了这是一个关于使用Java语言在UntilGW8平台上开发Android游戏的项目,特别是一款简单的打砖块游戏。在这个项目中,我们可以深入学习到Java编程语言、Android应用开发的基础...

    XUAN-ZHUAN-led.zip_旋转LED_旋转LED 自适应_自适应旋转LED

    在IT行业中,旋转LED是一种常见的显示技术,常用于广告牌、显示屏等场合,...通过分析和优化这段代码,我们可以学习到如何在硬件限制下实现高效、稳定的实时控制系统,这对于嵌入式系统开发者来说是一项宝贵的技能。

    ban-zhuan.zip_JAVA穷举法搬砖_搬砖_用JAVA穷举法

    在给定的“ban-zhuan.zip_JAVA穷举法搬砖”主题中,我们面对的是一个数学问题,该问题与实际的砖块分配有关。36块砖需要36个人来搬运,其中包括男性、女性和小孩,他们各自有不同的搬运能力。男性每次能搬4块砖,...

    zhuan-su-eliang.rar_labview 测_labview 测速_labview测速_labview转速测量_转

    在给定的“zhuan-su-eliang.rar”压缩包中,包含了一个名为“zhuan su eliang.vi”的虚拟仪器(VI),这显然是一款用于转速测量的应用程序。 转速测量是机械工程、汽车工业、电力系统等领域中常见的技术需求。...

    I7转盘式自动装配机1.rar

    总的来说,"I7转盘式自动装配机1"是现代制造业中自动化、智能化的一个缩影,它体现了科技如何提升生产效率,推动产业升级。而"zhuan pan ji.prt"则是这一创新理念的具体化,通过精细的工程设计和模拟,确保设备的...

    z zhuan sec_EH4_EH4Z文件转SEC文件_

    总的来说,这个转换过程是软件开发和嵌入式系统维护中的一个重要环节,它确保了固件可以在不同平台和环境下正确运行,同时也可能涉及到代码的安全性和可靠性。理解和掌握这种转换技巧对于IT专业人士,尤其是从事...

    notepad++ json格式化插件32+64位

    安装 : 1、下载插件压缩包并解压出dll:Jsonviewer-64.dll(64位)或NPPJSONViewer-32.dll(32位); 2.、拷贝对应dll到Notepad++安装目录下的plugins目录。...3、重启Notepad++程序,在插件栏选择即可使用。

    C#代码重构 - Mr.Fu _Zhuan.mobi

    重构是迅速发现并修复有问题的代码的一种高效的方式。在《代码重构(c # & asp.net版)》中首次提供了在c#和asp.net中进行重构的专业方法,您将学习如何运用重构技术管理和修改代码

    I7转盘式自动装配机.rar

    【I7转盘式自动装配机】是一种先进的自动化生产设备,主要应用于制造业中,尤其是零部件的高效组装过程。这种装配机采用转盘设计,通过旋转工作台实现多工位同步作业,提高了生产效率和精度,降低了人工操作的错误率...

    步进电机 加速减速

    步进电机是一种常见的电动执行器,它能够精确地控制电机的旋转角度,因此在许多自动化和精密定位应用中得到广泛使用。在本例中,我们使用的是四项五线步进电机,这种电机具有四个相位,每个相位由两根线连接,总共五...

    office2003转2007

    5. 转换工具可能会自动更新文档的格式,使其在旧版本的Office中保持尽可能多的功能和格式一致性。 在处理不同版本Office文件兼容性时,用户需要注意以下几点: - 文件的版本控制:确保所有参与者都在同一版本的...

    2_SIMULINK_

    5. `by_wang_zhuan_zhuan.m`:可能是一个用户自定义的函数,由"wang_zhuan_zhuan"编写,可能与傅里叶变换或者Simulink模型的某个特定部分有关。 6. `matlab.mat`:这是一个MATLAB的数据文件,可能存储了仿真过程中...

    zhuan-kai-fa

    标题“zhuan-kai-fa”似乎是在简写或拼音化表示“专开发”,这可能是指专门的软件开发或者技术开源项目。由于没有具体的标签信息,我们将从一般软件开发的角度来探讨相关知识点。 在软件开发领域,"专开发"可以涵盖...

    安卓FragmentTab选项卡相关-fragmenttabhost实现底部菜单.zip

    总结来说,这个压缩包提供的知识点主要围绕如何使用FragmentTabHost在Android应用中实现底部菜单,涉及到Fragment的管理和生命周期,以及TabHost的相关操作。虽然代码可能需要进一步调整才能运行,但它作为学习和...

    将powerDesigner的概念模型转换成物理模型,生成sql文件导入数据库.

    在 PowerDesigner 中,用户可以使用各种工具和功能来设计、开发和维护数据模型,例如: * 概念模型设计:使用 PowerDesigner 的概念模型设计工具,用户可以设计和创建概念模型,描述实体、属性和关系之间的关系。 *...

    打砖块vb代码

    "da zhuan kuan.zip"这个压缩包文件很可能包含了实现上述VB打砖块游戏的所有源代码、资源文件和可能的说明文档。解压后,可以研究代码结构,理解每个部分如何协同工作,以此作为学习和进一步改进的起点。文件列表中...

    pdfzhuantxt.rar_pdf txt_pdf zhuan txt_pdfzhuant_pdf转txt_txt转pdf

    在使用前,确保了解软件的兼容性,支持的PDF版本以及转换质量,以满足自己的需求。 总的来说,PDF转TXT是一种实用的文档处理手段,尤其适合那些需要对大量文本进行处理的场景。这个“pdfzhuantxt.rar”压缩包提供的...

Global site tag (gtag.js) - Google Analytics