如何开始编写代码覆盖工具?

时间:2008-08-05 11:15:17

标签: java testing coldfusion code-coverage

寻找实际讨论如何编写Java代码覆盖工具的书籍或其他参考资料;一些各种技巧或技巧 - 源代码与字节代码检测。

这适用于在脚本下生成Java字节代码的脚本语言。

5 个答案:

答案 0 :(得分:7)

您的脚本语言是否生成字节码?它是否生成调试元数据?如果是这样,字节码检测可能是要走的路。实际上,现有工具可能会起作用(可能只需要很少的修改)。

这些工具的典型问题是它们被编写为与Java一起使用并假设class com.foo.Bar.class对应于文件com/foo/Bar.java。解开这个假设可能很乏味。

EMMA是一个ClassLoader,它为Java中的代码覆盖率集合执行字节码重写。编码风格有点时髦,但我建议阅读一些想法的源代码。

如果您的脚本语言被解释,那么您将需要一个挂钩到解释器的更高级别的类加载器(在源级别)。

答案 1 :(得分:3)

Thxm,Mc! http://asm.objectweb.org /是另一个。关于字节代码检测的优秀的文档,但没有“直接”旨在编写覆盖工具 - 只是一些提示或想法。

答案 2 :(得分:3)

您还可以从开源代码覆盖率工具中获取源代码并从中学习。

答案 3 :(得分:2)

您可能还想使用类似BCEL的东西来分析字节代码中实际存在哪些源代码行。您不想报告空白行和评论等内容未被涵盖。

答案 4 :(得分:2)

如果您正在谈论ColdFusion(我假设您来自标签),那么我不确定这是否可行,但我可能在这里错了......

IIRC,当CF编译它时,它基本上编译成CFML的解释形式,作为普通的旧java源文件,然后将其编译到类中。因此,您可能拥有的任何工具都将应用于中间版本而不是CFML本身。

尽管如此,Adobe现在已经获得了CF调试器,它可以逐步执行代码,所以请证明我错了 - 我喜欢CFML中的代码覆盖率。