综合体育

当前位置:yg电子游戏官网 > 综合体育 > 测试覆盖率工具EclEmma安装与使用

测试覆盖率工具EclEmma安装与使用

来源:http://www.88549.com.cn 作者:yg电子游戏官网 时间:2019-12-23 18:09

EclEmma的简介

安装 EclEmma 插件的经过和大比非常多 Eclipse 插件肖似,大家既能够经过 Eclipse 规范的 Update 机制来远程安装 EclEmma 插件(图 1),也足以从站点(参阅参谋财富)下载 zip 文件并解压到 eclipse 所在的目录中。
EclEmma -
图 1 增添 Ecl埃玛 更新站点
不管采取何种方法来设置 Ecl埃玛,安装到位并再一次起动 Eclipse 之后,工具栏上应当现身叁个新的开关:
图 2 新添的覆盖测量试验开关
使用 EclEmma 测试 Java 程序
为了尝试 EclEmma 的特征,大家第生机勃勃在 Eclipse 的 Workspace 中确立三个名叫 test.emma 的新 Java 项目。接下来,大家在其间树立二个HelloWorld 类,其代码如下所示:
清单 1 用于测验 EclEmma 的代码
package test.emma;
public class HelloWorld {
        /**
         * @param args
         */
        public static void main(String[] args) {
               int rand = (int) (Math.random()*100);
               if(rand%2==0){
                       System.out.println( "Hello, world! 0");
               }
               else
                       System.out.println("Hello, world! 1");
               int result = rand%2==0? rand+rand:rand*rand;
               System.out.println(result);
        }
}
接下去,大家由此 EclEmma 运维 HelloWorld.main(卡塔尔 函数。
图 3 对 Java 应用程序进行覆盖测量检验
实施实现之后,我们正在编纂 HelloWorld.java 的窗口将会造成如下所示:
图 4 实行覆盖测量试验的结果
在 Java 编辑器中,EclEmma用不相同的情调标示了源代码的测量试验情状。在那之中,粉红白的行表示该行代码被完好的进行,杏红部分代表该行代码根本未曾被实行,而法国红的行表明该行代码部分被试行。木色的行日常并发在单行代码包罗分支的情事,例如图 4 中的 16 行就展示为香艳。由于程序中有三个率性明确的支行,由此读者的窗口或然与这里稍有例外(11 行只怕 14 行中有且独有三个革命的行)。
除了那一个之外在源代码编辑窗口直接举办着色之外,EclEmma还提供了三个独立的视图来总括程序的蒙蔽测验率。
图 5 察看程序的隐瞒测验率
EclEmma 提供的 Coverage 视图可以分层的彰显代码的覆盖测量试验率,图 5中的音信注解大家对 HelloWorld 的三遍运维覆盖了大概 68.6% 的代码。
想在二回运维中覆盖全数的代码日常比较不方便,要是能把数十次测量试验的隐蔽数据综合起来实行观望,那么我们就能够更便于的控制多次测验的测量试验效果。 Ecl埃玛 提供了如此的法力。现在,让大家重新多次对 HelloWorld 的覆盖测量检验。大家注意到 Coverage 视图总是展现最新完结的一遍覆盖测量检验。事实上,EclEmma为大家保留了颇负的测验结果。接下来,大家将由此 Coverage 视图的工具按键来整合多次覆盖测量检验的结果。
图 6 用于结合数次覆盖测量检验结果的工具栏按钮
当大家一再周转 Coverage 之后,大家得以单击 图 6 所示工具栏开关。之后,二个对话框将被弹出以供顾客选拔需求统大器晚成的隐讳测验。
图 7 采用需求统后生可畏的蒙蔽测量检验结果
在集合达成之后,大家可以洞察到 Java 编辑器和 Coverage 视图中都展现了合并之后的结果:
图 8 察看合併后的隐瞒测验结果
图 8 中,我们得以看看,通过屡屡运维覆盖测验,最后我们的代码达到了 91.4% 的测验覆盖率。有意思的是,图中第三行代码被标志为革命,而此行代码实际上是不行施行的。奥秘在于,大家从未调换任何 HelloWorld 类的实例,因而缺省结构函数未有被调用,而 EclEmma将以此奇怪代码的掩没情况标记在类注解的第生龙活虎行。
EclEmma 的尖端天性
若果 EclEmma 只能测量试验 Java Application 的测验覆盖率,那么它相对命令行版本的 Emma来讲,提供的升高就相当的少了。相反,EclEmma 提供了好些个与 Eclipse 紧凑结合的固守。它不光能测验 Java Application,还可以够估摸 JUnit 单元测验,对 Eclipse 插件测量检验的覆盖率。从图 9 中大家得以见见 EclEmma如今支撑三种档案的次序的次序。
图 9 Ecl埃玛 的配备页面
为了打探 Ecl埃玛 是何等赢得覆盖测量试验数据的,大家须求先对 Emma有开头的摸底。平常代码覆盖测量检验工具都亟待对被推行的代码实行校正。而 Emma提供了三种方法来成功这事。
1.预插入格局:对程序进行衡量以前,供给利用 埃玛 提供的工具对 class 文件恐怕 jar 文件举行改正。更正产生之后的代码能够即时被推行。覆盖测量检验的结果将会被寄放到钦命的公文中。
2.即时插入形式:即时插入形式无需事情未发生前对代码举行退换。相反,对代码的退换是由此二个Emma 定制的 Class loader(类载入器)举行的。这种措施的亮点很显眼,大家无需对 class 也许jar 文件进行其余改进。短处是我们为了得到测量检验的结果,要求用 Emma提供的命令 emmarun 来实践 Java 应用程序。
运用即时插入格局的亮点很确定:class 文件和 jar 文件不会被改造。而预插入情势的行使范围更为广阔,对于有个别需求停放到框架中运作的代码来讲(举例EJB),大家只好动用预插入情势。EclEmma 仅仅使用了 Emma的预插入形式来办事,可是 Ecl埃玛 缺省会在暂且目录中创立 class 文件和 jar 文件的别本来实行更动,由此在 workspace 中 class 和 jar 文件仍旧保持原样。尽管听起来很好,不过由于须要改革 classpath 来使用修正过的 class 和 jar 文件,对于不可能改正 classpath 的采取(比如Eclipse RCP 和 JUnit Plugin Test)来讲,大家依旧只可以选拔校订 workspace 中的 class 文件和 jar 文件。对于 Java Application 和 JUnit 类型的覆盖测验,大家能够在布署对话框中当选“In-place instrumentation”项来钦命直接改造 Workspace 中的 .class 文件和 .jar 文件。
结论
本文通过叁个大约的例证介绍了使用 EclEmma 实行覆盖测量试验的宗旨进度。Ecl埃玛允许软件技术员方便的观测测验的覆盖率,并能将测试结果以直观、简洁的办法表现给开拓人士。

一、Findbugs

  • 多个优质的开源软件测量检验工具
  • eclipse的三个插件
  • 可以预知对由 Java 语言编写的主次进行覆盖测量试验
  • 能够在办事平台南运维
  • 一向对代码覆盖举办深入解析
  • 蒙面结果将立时被聚焦并在Java源代码编辑器中高亮彰显
  • 也可程序运转的结果生成详尽的掩瞒测试报告
  • 能够整合JUnit使用 

1. 配置

1.1 打开FindBugs视图:

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

图片 1

1.2 配置FindBugs

慎选你的品类=>右键 => Properties => FindBugs => 选中“Run automatically” => OK

图片 2

Findbugs每一种品质的配置表达:

Enable project specific setting:该品种是还是不是启用自个儿特有装置(忽视全局设置)

Run automnaticaly:编写翻译文件时自动运维。

Also on full build:编写翻译工程时自动运维。必得同临时候勾选Enable project specific setting

 

Bug类型表达:

迷你mum 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设置

图片 3

行事规律:Class Instrumentation(把计算代码插入编写翻译好的.class文件卡塔尔国

2. 使用

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

图片 4

2.2 当findBugs运营后,就足以在bug Explorer 视图中看占卜应的音信,能够双击切换来相应代码 ,就能够对这些代码改正了,如下图:

图片 5

那儿大家就能够找到BUG所在并修正

2.3 查看Bug详细音讯

图片 6

显示详细音讯如下:

图片 7

2.4 过滤bug设置:

2.4.1 首先点击bug行号前的bug标识,步向bug detail视图,记下这么些bug的id,如下图的[RCN]

图片 8

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

图片 9

输入Type(RCN)或Pattern(RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE)就可以寻找相应的bug设置

图片 10

图片 11

ok确认就可以。

2.5 分组查看

图片 12

选料相应的分组依靠

图片 13

要么直接如下图所示分组。

图片 14

 

二、Checkstyle

 

1. 配置

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

图片 15

Checkstyle有多个门路能够开展计划,三个是全局的,三个是单个项目(Project卡塔尔国的。全局的能够在任何MyEclipse的workspace中生效, 而单个项目标计划可以在钦定的品种中生效,它预先于大局 的配备。

对此单个项目:右键点有些项目,然后接收"Properties"就足以见见 Checkstyle的窗口。在"Main"标签中,"Checkstyle active for this project"前面打勾, 然后在"Simple –use the following check configuration for all files" 下拉框中精选你的Checkstyle配置文件就能够了。如图:

图片 16

对此全局的装置:"window->preferences"就能够见到。设置方法跟单个项目标安装是相像的。

通过地点的设置,Checkstyle就足以行使了。Checkstyle私下认可提供了根据Sun的检查安插文件,并不一定相符种种商家,由此提供了自定义检查情势。在大局设置中"Global Check Configurations"中单击"New"开关。

图片 17

起好名字后,单击"Import"按键,接收文件后,明确就能够。

除此以外,官方援助能够在MyEclipse的"Help-> HelpeContents"中的" Checkstyle Plug-in " 中找到。内容依然很详细的。

测验覆盖率指标

2. 使用

很简短,在类型安装中勾选Checkstyle active for this project后,重新编写翻译就可以。只怕右击项目"Checkstyle -> Check Code with Checkstyle"。

行覆盖率
生机勃勃对行覆盖:a>b?a:b

三、JDepend

基本语句块覆盖率
基本语句块:未有if-else分支的代码区域

1. 使用

运作情势是右键采取须求深入分析的包,选用 Run JDepend Analysis

图片 18

于是乎会冒出如下深入分析结果

图片 19

类覆盖率
由JVM加载并初阶化

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

EclEmma的安装

1. 配置

如若EclEmma只可以测验Java Application的测验覆盖率,那么它相对命令行版本的埃玛来说,提供的增进就不多了。相反,EclEmma提供了成都百货上千与MyEclipse紧密结合的据守。它不仅能测验Java Application,还能够计算JUnit单元测量试验,对MyEclipse插件测量检验的覆盖率。从图中大家得以看出EclEmma近日援救几体系型的程 序。

图片 20

打开Ecl埃玛运转命令按键

工具栏右键->Customize Perspective

图片 21

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

图片 22

现在在工具栏就晤面世开关

图片 23

2. 使用

第一创设三个 HelloWorld 类,其代码如下所示:

[java] view plaincopy

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

接下去,咱们经过 EclEmma 运维 HelloWorld.main(卡塔尔 函数。

图片 24

推行完结之后,大家正在编纂 HelloWorld.java 的窗口将会化为如下所示:

图片 25

在Java编辑器中,Ecl埃玛用区别的色彩标示了源代码的测验景况。个中,海军蓝的行代表该 行代码被全部的试行,墨玉绿部分代表该行代码根本未有被试行,而风骚的行申明该行代码部分被推行。暗黄的行常常出今后单行代码富含分支的境况,举例上海体育场面中16行就展现为香艳。由于程序中有叁个即兴分明的道岔,由此读者的窗口或然与这里稍有区别(11行依旧14 行中有且独有三个桃红的行)。

除了那几个之外在源代码编辑窗口直接开展着色之外,EclEmma还提供了一个独自的视图来计算程序的蒙蔽测量试验率。

图片 26

Ecl埃玛提供的Coverage视图可以分层的展示代码的覆盖测量检验率,上海教室中的信息证明咱们对HelloWorld的一次运维覆盖了差十分的少68.6%的代码。

想在一遍运转中覆盖全体的代码日常相比较不方便,如若能把数次测量试验的隐蔽数据综合起来实行观望,那么 大家就能够更有益于的支配多次测量检验的测量检验效果。EclEmma提供了如此的功效。今后,让咱们重新数十遍对HelloWorld的覆盖测验。我们注意到 Coverage视图总是显示最新实现的叁回覆盖测验。事实上,Ecl埃玛为咱们保留了独具的测验结果。接下来,大家将透过 Coverage视图的工具按键来整合多次掩没测量试验的结果。

图片 27

当我们往往周转 Coverage 之后,我们得以单击图中所示工具栏开关。之后,贰个会话框将被弹出以供顾客接受须要联合的覆盖测量检验。

图片 28

在统生机勃勃达成现在,大家得以调查到 Java 编辑器和 Coverage 视图中都显得了联合之后的结果:

图片 29

图中,我们得以看来,通过一再运行覆盖测验,最后大家的代码到达了91.4%的测验覆盖率。有趣的是,图中第三行代码被标志为革命,而此行代码实际上是不行实行的。奥秘在于,大家从未成形任何HelloWorld类的实例,由此缺省布局函数未有被调 用,而EclEmma将以此卓越代码的隐蔽情形标志在类注明的率先行。

1.起步eclipse---点击Help菜单---Install New Software,在弹出的对话框中,点击Add

五、Eclipse Class Decompiler

 

1. 配置

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

图片 30

上图为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

图片 31

我们得以见见class文件的展开药情势有七个,类反编写翻译查看器和MyEclipse自带的Class File Viewer,而类反编写翻译查看器是默许的才行。

本文由yg电子游戏官网发布于综合体育,转载请注明出处:测试覆盖率工具EclEmma安装与使用

关键词: