寻找真正讨论如何用 Java 编写代码覆盖工具的书籍或其他参考资料;一些不同的技术或技巧 - 源代码与字节码检测。
这是一种在底层生成 Java 字节码的脚本语言。
寻找真正讨论如何用 Java 编写代码覆盖工具的书籍或其他参考资料;一些不同的技术或技巧 - 源代码与字节码检测。
这是一种在底层生成 Java 字节码的脚本语言。
您的脚本语言会生成字节码吗?它会生成调试元数据吗?如果是这样,字节码检测可能是要走的路。事实上,现有的工具可能会起作用(也许只需要很少的修改)。
此类工具的典型问题是它们被编写为与 Java 一起使用并假设 aclass 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 之类的东西来分析字节码中实际存在的源代码行。您不想报告诸如空行和注释之类的内容尚未涵盖。