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

Translate

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

这是用于在后台生成Java字节码的脚本语言。

This question and all comments follow the "Attribution Required."

所有的回答

Translate

您的脚本语言会生成字节码吗?它会生成调试元数据吗?如果是这样,字节码检测可能是解决之道。实际上,现有工具可能会起作用(也许只需进行很少的修改)。

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

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

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

来源
Gilbert Lee
Translate

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

来源
Adelaide Lee
Translate

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

来源
Translate

您可能还想使用BCEL之类的东西来分析字节码中实际存在的源代码行。您不希望报告未涵盖空白行和注释之类的内容。

来源
Translate

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

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

话虽这么说,Adobe现在已经有了可以调试代码的CF调试器,所以请证明我错了-我很喜欢CFML中的代码覆盖率。

来源