【发布时间】:2010-09-05 08:24:37
【问题描述】:
寻找真正讨论如何在 Java 中编写代码覆盖工具的书籍或其他参考资料;一些不同的技术或技巧 - 源代码与字节码检测。
这是一种在底层生成 Java 字节码的脚本语言。
【问题讨论】:
标签: java testing coldfusion code-coverage
寻找真正讨论如何在 Java 中编写代码覆盖工具的书籍或其他参考资料;一些不同的技术或技巧 - 源代码与字节码检测。
这是一种在底层生成 Java 字节码的脚本语言。
【问题讨论】:
标签: java testing coldfusion code-coverage
您的脚本语言是否生成字节码?它会生成调试元数据吗?如果是这样,字节码检测可能是要走的路。事实上,现有的工具可能会起作用(可能只需要很少的修改)。
此类工具的典型问题是它们被编写为与 Java 一起使用并假设 class com.foo.Bar.class 对应于文件 com/foo/Bar.java。解开这个假设可能很乏味。
EMMA 是一个 ClassLoader,它为 Java 中的代码覆盖集合执行字节码重写。编码风格有点时髦,但我建议阅读源代码以获得一些想法。
如果您的脚本语言被解释,那么您将需要一个更高级别的类加载器(在源代码级别),该类加载器与解释器挂钩。
【讨论】:
谢谢,麦克! http://asm.objectweb.org/ 是另一个。 优秀的关于字节码检测的文档,但没有“直接”旨在编写覆盖工具 - 只是一些提示或想法。
【讨论】:
如果您说的是 ColdFusion(我假设您来自标签),那么我不确定这是否可行,但我可能在这里大错特错...
IIRC,当 CF 编译时,它基本上编译为 CFML 的解释形式,作为普通的旧 java 源文件,然后编译到类中。因此,您可能拥有的任何工具都将适用于中间版本,而不是 CFML 本身。
尽管如此,Adobe 现在已经有了 CF 调试器,它可以单步执行代码,所以请证明我错了 - 我喜欢 CFML 中的代码覆盖率。
【讨论】:
您可能还想使用 BCEL 之类的工具来分析字节码中实际存在哪些源代码行。您不想报告未涵盖空行和 cmets 之类的内容。
【讨论】:
您还可以从开源代码覆盖工具中获取源代码并从中学习。
【讨论】: