• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Java覆盖信息收集工具比较
 

Java覆盖信息收集工具比较

on

  • 448 views

 

Statistics

Views

Total Views
448
Views on SlideShare
448
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Java覆盖信息收集工具比较 Java覆盖信息收集工具比较 Document Transcript

    • Java 覆盖信息收集 工具比较Java 覆盖信息收集程序通常分为三种: 在源码上装置上程序覆盖信息收集的代码 在字节码上装置上程序覆盖信息收集的字节码 使用特殊的 JVM 动态地收集程序覆盖信息Σοφία(Sofya)http://sofya.unl.edu/Σοφία(Sofya)是基于 Java 字节码的程序分析程序。收集的程序信息 程序轨迹(Trace Sequences) 块命中次数(Block Hits) 覆盖信息(包括 instructions, basic blocks, real blocks, exception handlers, finally blocks and branches)优缺点缺点 Σοφία 产生的报告几乎是非格式化的,需要我们编写正则表达式来抽取其中的信息。不 过,Σοφία 是开源项目,可以直接使用它的源码中的对象作为已格式化数据,省去抽 取信息的步骤。(相对于其他产生 XML 报告的系统,仍然比较麻烦。) 生成的报告都是关于字节码的,并且不能在字节码的指令与源代码的代码行间进行映 射。 使用的学习曲线陡峭,开发的学习曲线平坦。优点 类似 Linux,使用输出输出以及文件作为 pipe and filter 模式的接口。责任分离,源码可
    • 读性好。 可以产生程序轨迹(Trace Sequences),其他的系统还没发现这个信息。 可拓展性好,Semantic event dispatch,Structural event dispatch。很 Hackerdom,非常值 得一玩。使用方式生命周期 sofya.graphs.cfg.jCFG 产生控制流和映射文件(control flow and map files)。 sofya.ed.cfInstrumentor 对字节码装置上程序覆盖信息收集的字节码。 sofya.ed.BBTracer 收集程序执行的信息。对于生成的中间信息,可以使用对应的 Viewer 产生程序员可读的信息:Coberturahttp://cobertura.sourceforge.net/Cobertura 也是一个基于字节码的.收集的程序信息 程序的覆盖信息比例 代码行的命中次数
    • 优缺点优点 生成报告的格式美,有 HTML,XML 两种形式,使用简便,非常傻瓜化。 使用 Ant 构建项目,可配置性高。 兼容 Junit 的测试用例。缺点 Ant 的配置颇为繁琐。 这个系统拓展性好像不是很强,在做二次开发时可能会遇到很多麻烦。 我还没有研究出怎样在 Eclipse 下运行,只会在命令行下运行。 使用的学习曲线平坦,开发的学习曲线陡峭。使用方式按照模板和手册改写 build.xml,直接 ant 即可。需要 build.xml 中有一些几个部分。备忘:我在 Eclipse 中为 Java 配置了外部库,在 build.xml 中添加了一行配置 Junit.jar 的位置才 ant 成功。E:Projectcobertura-1.9.4.1examplesbasic>E:Projectapache-ant-1.8.1binant
    • EMMAhttp://emma.sourceforge.net/一个较老(也可以说是成熟)Java 代码覆盖分析工具集。(我只是看了它的 Sample Reports)收集的程序信息一份 XML 报告,包含了所有信息 包数,类数,方法数,文件数,代码行数 类,方法,基本块,代码行的覆盖率(这份报告中没有具体代码行的覆盖信息,但是 HTML 的报告中有标记,不知道是否能通过参数配置出来?)
    • 优缺点优点 支持两种方式获取信息,离线和在线(offline or on the fly)。 输出的格式也比较好用。缺点 (这份报告中没有具体代码行的覆盖信息,但是 HTML 的报告中有标记,不知道是否
    • 能通过参数配置出来?) 使用的学习曲线平坦,开发的学习曲线陡峭。使用方法还没有使用过。总结只是弄了今天一天,先总结一些。Σοφία初浅感觉如果要做二次开发(例如:开发 Eclipse 插件),使用 Σοφία 来得快一些,我使用了一次,就大概知道它的工作原理和生命周期。不过它只能处理 Bytecode 不处理 SourceCode 就比较遗憾。另外,它可以收集 Trace 信息,这在以后我们拓展 Design Space 比较有帮助。(我们仅仅在 Bytecode 先做错误定位也何尝不可?)Cobertura收集到的信息非常全,包括了代码行的运行次数, XML 格式也方便。我以后要是抓覆盖信息就先想到它。不过,它几乎没有文档,主页有使用指南,开发页面也没有看见文档(大家找到记得告诉我),要做二次开发估计很难。EMMA比较成熟的项目。但是二次开发可能很难,相比 Σοφία 几乎白盒的使用模式, Cobertura 和EMMA 更像是一种黑盒的工具,配置文件弄好,运行就是了,也不知道它里面做了什么。