一、Findbugs

1. 配置

1.1 打开FindBugs视图:

Windows => Show View => Other… => FindBugs => Bug Info 、Bug Explorer、Bug Reviews

1.2 配置FindBugs

选择你的项目=>右键 => Properties => FindBugs => 选中“Run automatically” => OK

Findbugs各项属性的配置说明:

Enable project specific setting:该项目是否启用自身特殊设置(忽略全局设置)

Run automnaticaly:编译文件时自动运行。

Also on full build:编译工程时自动运行。必须同时勾选Enable project specific setting

Bug类型说明:

Minimum priority to report:根据bug的优先权级别报告bug。

Malicious code vulnerability:恶意代码。

Dodgy code:高危代码。FindBugs团队认为该类型下的问题代码导致bug的可能性很高。

Bad practice:最佳实践反例。这种类别下的代码违反了公认的最佳实践标准,比如某个类实现了equals方法但未实现hashCode方法等。

Correctness:正确性。这种归类下的问题在某种情况下会导致bug,比如错误的强制类型转换等。

Internationalization:国际化。

Performance:性能。潜在性能问题

Security:安全。

Mutithreaded correctness:多线程的正确性。关注于同步和多线程问题。

1.3 Bug设置

2. 使用

2.1 如下图:我们在工程的右键菜单中选择Find bugs的菜单项“Find bugs”。

2.2 当findBugs运行后,就可以在bug Explorer 视图中看到相应的信息,可以双击切换到相应代码 ,就可以对这个代码改进了,如下图:

这时我们就可以找到BUG所在并修改

2.3 查看Bug详细信息

显示详细信息如下:

2.4 过滤bug设置:

2.4.1 首先点击bug行号前的bug标志,进入bug detail视图,记下这个bug的id,如下图的[RCN]

2.4.2 在Bug Explorer窗口中单击“Filter Bugs by Id“

输入Type(RCN)或Pattern(RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE)即可找出相应的bug设置

ok确认即可。

2.5 分组查看

选择相应的分组依据

或者直接如下图所示分组。

二、Checkstyle

1. 配置

当Checkstyle成功安装后,在"window->Preferences"中可以看到checkstyle的选项, 如图所示:

Checkstyle有两个渠道可以进行配置,一个是全局的,一个是单个项目(Project)的。全局的可以 在整个MyEclipse的workspace中生效, 而单个项目的配置可以在指定的项目中生效,它优先于全局 的配置。

对于单个项目:右键点某个项目,然后选择"Properties"就可以看到 Checkstyle的窗口。在"Main"标签中,"Checkstyle active for this project"前面打勾, 然后在"Simple –use the following check configuration for all files" 下拉框中选择你的Checkstyle配置文件就可以了。如图:

对于全局的设置:"window->preferences"就可以看到。设置方法跟单个项目的设置是一样的。

经过上面的设置,Checkstyle就可以使用了。Checkstyle默认提供了基于Sun的检查配置文件,并不一定适合每个公司,因此提供了自定义检查模式。在全局设置中"Global Check Configurations"中单击"New"按钮。

起好名字后,单击"Import"按钮,选择文件后,确定即可。

另外,官方帮助可以在MyEclipse的"Help-> HelpeContents"中的" Checkstyle Plug-in " 中找到。内容还是很详尽的。

2. 使用

很简单,在项目设置中勾选Checkstyle active for this project后,重新编译即可。或者右击项目"Checkstyle -> Check Code with Checkstyle"。

三、JDepend

1. 使用

运行方法是右键选择需要分析的包,选择 Run JDepend Analysis

于是会出现如下分析结果

2. 说明

JDepend为每个Package自动生成的依赖性度量指标,包括:

Number of Classes and Interfaces(CC):实现类与抽象接口的数目

面向的设计原则之一The Stable Abstractions Principle (SAP):稳定抽象等价原则指出了包的稳定程度与它的抽象程度(接口的数目)成正比,也就是说,一个包内包含的接口所占的比重越大,这个包就越稳定。

Afferent Couplings (Ca):向心耦合。依赖该包(包含的类)的外部包(类)的数目(i.e. incoming dependencies),该数值越大,说明该包的担当的职责越大,也就越稳定。

Efferent Couplings (Ce):离心耦合。被该包依赖的外部包的数目(i.e. outgoing dependencies),该数值越大,说明该包越不独立(因为依赖了别的包),也越不稳定。
Abstractness (A):包的抽象度。指一个包内包含的抽象类或接口占整个包中的类的比重。该值处于0,1之间,若A=0,说明包内不包含任何抽象类或接口;若A=1,说明包内全部是抽象类或接口。包的抽象度与稳定性之间的关系上面已经作了说明。

Instability (I):衡量一个包的不稳定程度。I=Ce/(Ce+Ca)。它的值处于[0,1]之间。I=0时说明包是最稳定的,反之I=1则说明包极不稳定。

Distance from the Main Sequence (D):
该指标主要用来评价包的抽象程度与稳定程度的平衡关系,它可以用二维直线图 A + I = 1 来表示。D=abs((A + I) -
1),也就是说D为 一个包的抽象度 + 包的不稳定程度 - 1 
的绝对值。一个理想的包是:完全抽象的(A=1),非常稳定的(I=0),这时D=0;或者是:完全具体类构成的包(A=0),非常不稳定的
(I=1),这时同样也有D=0。D=0说明包的抽象程度与稳定程度是平衡的,反之D=1说明包的平衡程度被严重破坏。

Package Dependency Cycles:包的循环依赖度。

面向对象的设计原则之一:The Acyclic Dependencies Principle (ADP) - OO设计的无环依赖原则要求包之间不能有循环依赖关系。

四、Eclemma

1. 配置

如果EclEmma只能测试Java
Application的测试覆盖率,那么它相对命令行版本的Emma来说,提供的增强就不多了。相反,EclEmma提供了很多与MyEclipse紧
密结合的功能。它不仅能测试Java
Application,还能计算JUnit单元测试,对MyEclipse插件测试的覆盖率。从图中我们可以看到EclEmma目前支持几种类型的程
序。

打开EclEmma运行命令按钮

工具栏右键->Customize Perspective

选择Command Groups Availability->勾选Java Code Coverage->Ok

之后在工具栏就会出现按钮

2. 使用

首先建立一个 HelloWorld 类,其代码如下所示:

  1. package cn.itkt.hotel;
  2. public class HelloWorld {
  3. public static void main(String[] args) {
  4. int rand = (int) (Math.random() * 100);
  5. if (rand % 2 == 0) {
  6. System.out.println("Hello, world! 0");
  7. } else
  8. System.out.println("Hello, world! 1");
  9. int result = rand % 2 == 0 ? rand + rand : rand * rand;
  10. System.out.println(result);
  11. }
  12. }

接下来,我们通过 EclEmma 运行 HelloWorld.main() 函数。

执行完毕之后,我们正在编辑 HelloWorld.java 的窗口将会变成如下所示:

在Java编辑器中,EclEmma用不同的色彩标示了源代码的测试情况。其中,绿色的行表示该
行代码被完整的执行,红色部分表示该行代码根本没有被执行,而黄色的行表明该行代码部分被执行。黄色的行通常出现在单行代码包含分支的情况,例如上图
中16行就显示为黄色。由于程序中有一个随机确定的分支,因此读者的窗口可能与这里稍有不同(11行或者14 行中有且只有一个红色的行)。

除了在源代码编辑窗口直接进行着色之外,EclEmma 还提供了一个单独的视图来统计程序的覆盖测试率。

EclEmma提供的Coverage视图能够分层的显示代码的覆盖测试率,上图中的信息表明我们对HelloWorld的一次运行覆盖了大约68.6%的代码。

想在一次运行中覆盖所有的代码通常比较困难,如果能把多次测试的覆盖数据综合起来进行察看,那么
我们就能更方便的掌握多次测试的测试效果。EclEmma提供了这样的功能。现在,让我们重复数次对HelloWorld的覆盖测试。我们注意到
Coverage视图总是显示最新完成的一次覆盖测试。事实上,EclEmma为我们保存了所有的测试结果。接下来,我们将通过
Coverage视图的工具按钮来结合多次覆盖测试的结果。

当我们多次运行 Coverage 之后,我们可以单击图中所示工具栏按钮。之后,一个对话框将被弹出以供用户选择需要合并的覆盖测试。

在合并完成之后,我们可以观察到 Java 编辑器和 Coverage 视图中都显示了合并之后的结果:

图中,我们可以看到,通过多次运行覆盖测试,最终我们的代码达到了91.4%的测试覆盖率。有趣
的是,图中第三行代码被标记为红色,而此行代码实际上是不可执行的。奥妙在于,我们没有生成任何HelloWorld类的实例,因此缺省构造函数没有被调
用,而EclEmma将这个特殊代码的覆盖状态标记在类声明的第一行。

五、Eclipse Class Decompiler

1. 配置

找到MyEclipse->Window->Preferences->Java->反编译器

上图为Eclipse Class Decompiler的首选项页面,可以选择缺省的反编译器工具,并进行反编译器的基本设置。缺省的反编译工具为JD-Core,JD-Core更为先进一些,支持泛型、Enum、注解等JDK1.5以后才有的新语法。

首选项配置选项:

1.1 重用缓存代码:只会反编译一次,以后每次打开该类文件,都显示的是缓存的反编译代码。

1.2 忽略已存在的源代码:若未选中,则查看Class文件是否已绑定了Java源代码,如果已绑定,则显示Java源代码,如果未绑定,则反编译Class文件。若选中此项,则忽略已绑定的Java源代码,显示反编译结果。

1.3 显示反编译器报告:显示反编译器反编译后生成的数据报告及异常信息。

1.4 使用MyEclipse代码格式化工具:使用Eclipse格式化工具对反编译结果重新格式化排版,反编译整个Jar包时,此操作会消耗一些时间。

1.5 使用MyEclipse成员排序:使用Eclipse成员排序对反编译结果重新格式化排版,反编译整个Jar包时,此操作会消耗大量时间。

1.6 以注释方式输出原始行号信息:如果Class文件包含原始行号信息,则会将行号信息以注释的方式打印到反编译结果中。

1.7 根据行号对齐源代码以便于调试:若选中该项,插件会采用AST工具分析反编译结果,并根据行号信息调整代码顺序,以便于Debug过程中的单步跟踪调试。

1.8 设置类反编译查看器作为缺省的类文件编辑器:默认为选中,将忽略MyEclipse自带的Class Viewer,每次MyEclipse启动后,默认使用本插件提供的类查看器打开Class文件。

配置完后检查class文件默认打开方式,MyEclipse->Window->Preferences->General->Editors->File Associations

我们可以看到class文件的打开方式有两个,类反编译查看器和MyEclipse自带的Class File Viewer,而类反编译查看器是默认的才行。

2. 使用

插件提供了系统菜单,工具栏,当打开了插件提供的类反编译查看器后,会激活菜单和工具栏选项,可以方便的进行首选项配置,切换反编译工具重新反编译,以及导出反编译结果。

类反编译查看器右键菜单包含了MyEclipse自带类查看器右键菜单的全部选项,并增加了一个“导出反编译源代码”菜单项。

打开项目路径下的Class文件,如果设置类反编译查看器为缺省的查看器,直接双击Class文件即可,如果没有设置为缺省查看器,可以使用右键菜单进行查看。

Eclipse Class
Decompiler插件也提供了反编译整个Jar文件或者Java包的反编译。该操作支持Package
Explorer对包显示布局的操作,如果是平铺模式布局,则导出的源代码不包含子包,如果是层级模式布局,则导出选中的包及其所有的子包。

注意:包的“平铺模式布局”和“层级模式布局”的设置

Debug调试:可以在首选项选中对齐行号进行单步跟踪调试,和普通的包含源代码时的调试操作完全一致,同样的也可以设置断点进行跟踪。

注意:首选项选择“根据对齐行号进行单步跟踪调试”后,必须重新反编译class文件才行,否则还是原来事先编译好的代码,会导致跟踪调试失败。重新编译的方法:1:上面图中菜单栏。2:上面图中类打开方式。

MyEclipse常用插件使用教程的更多相关文章

  1. 2018超详细sublime text3+python3.x安装配置教程(附常用插件安装教程)

    导读 本文是关于2018年7月最新版sublime text3+pythin3.x下载及安装配置教程,sublime text3版本为3176,python版本为3.7,安装环境是基于windows1 ...

  2. vue-cli常用插件安装教程

    1.安装sass npm i sass-loader node-sass --save-dev 2.安装stylus cnpm install stylus --save-dev cnpm insta ...

  3. unity assetStore 常用插件

    常用插件 20180723============= 教程类 =============<Mecanim Example Scenes > 官方示例场景<Surivial Shoot ...

  4. Atom插件无法下载安装解决办法,Atom使用教程,Atom常用插件

    使用教程http://wiki.jikexueyuan.com/project/atom/plug-in.html atom通过setting中无法下载插件,通过apm也无法下载插件,可能是网络.co ...

  5. idea教程视频以及常用插件整理

    最近在同事的强烈安利下把eclipse换成idea了,本以为需要经历一个艰难的过渡期,谁知道不到3天就深感回不去了. 哎,只能说有时候人的惰性是多么可怕! idea实在是太太太强大了. 不要再问原因. ...

  6. 《JQuery常用插件教程》系列分享专栏

    <JQuery常用插件教程>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201719.html 文章 使用jquery插件实现图 ...

  7. 最详细eclipse汉化插件安装教程

    最详细eclipse汉化插件安装教程(转) 转自:http://blog.csdn.net/dai_zhenliang/article/details/8588576#t4 教程作者:戴振良 本文与& ...

  8. sublime text常用插件

    这个比较重要,不会装插件的时候找了好久 sublime text常用插件 1.插件的安装方法 第一种:用package control 这个是用来管理插件的,必备啊,安装package control ...

  9. Eclipse或Myeclipse常用快捷键组合详解

    Eclipse 是一个开放源代码的.基于Java的可扩展开发平台,就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.. Eclipse(Myeclipse)中有很多便于开发的快捷键 ...

随机推荐

  1. js 图片轮播(一)

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. DateUtil

    //有些地方需要修改 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDate ...

  3. Tomcat源码阅读(二)初始化

    近来,我开始阅读tomcat的源码,感觉还挺清晰易懂:为了方便理解,我参考了网上的一些文章,把tomcat的组成归纳一下:整个tomcat的组成如下图所示: Tomcat在接收到用户请求时,将会通过以 ...

  4. Java——List集合

    package om.hanqi.test; import java.util.ArrayList; import java.util.List; public class Test01 { publ ...

  5. javascript基础语法——变量和标识符

    × 目录 [1]定义 [2]命名规则 [3]声明[4]特性[5]作用域[6]声明提升[7]属性变量 前面的话 关于javascript,第一个比较重要的概念是变量,变量的工作机制是javascript ...

  6. 面向对象编程语言中的接口(Interface)

    在大多面向对象的编程语言中都提供了Interface(接口)的概念.如果你事先学过这个概念,那么在谈到“接口测试”时,会不会想起这个概念来!?本篇文章简单介绍一下面向对象编程语言中的Interface ...

  7. mysql连接查询

    以前查询都是随便查到结果就行了,因为发现每次查询的数量都很少,当然现在也是.不过效率一直是程序员执着的追求,我就多了解下差距. 首先是多张表联合,一张模板种类category,一张模板表templat ...

  8. C#指定时间和当前时间的相差的月份、天数

    DateTime 类型有时间的 年月日时分秒等属性,但是获取两个DateTime的 相差月份,就需要自己写了: public static int GetSubMonth(DateTime speci ...

  9. SQL Server安全(3/11):主体和安全对象(Principals and Securables)

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  10. noip模拟赛 好元素 哈希表的第一题

    这是一道关于 题2好元素 2s [问题描述] 小A一直认为,如果在一个由N个整数组成的数列{An}中,存在以下情况: Am+An+Ap = Ai (1 <= m, n, p < i < ...