如何开始编写代码覆盖率工具?
时间:2020-03-05 18:37:42 来源:igfitidea点击:
寻找书籍或者其他参考资料,这些书籍或者参考资料实际上讨论了如何用Java编写代码覆盖率工具;源代码或者字节码检测工具中的一些技巧或者窍门。
这是用于在后台生成Java字节码的脚本语言。
解决方案
回答
谢谢,麦克! http://asm.objectweb.org/是另一个。关于字节码检测的出色文档,但没有"直接"旨在编写覆盖率工具的"一些直接提示"或者"构想"。
回答
脚本语言字节码会生成吗?它会生成调试元数据吗?如果是这样,字节码检测可能是解决之道。实际上,现有的工具可能会起作用。也许只需做很少的修改(典型的问题是编写用于Java的工具,并假设com.foo.Bar.class对应于com / foo / Bar.java。解开该假设可能是乏味的。)EMMA是一个ClassLoader,它可以字节代码重写,用于Java中的代码覆盖率收集。编码风格有点时髦,但是我建议阅读源代码中的一些想法。
如果脚本语言是可解释的,那么我们将需要连接到解释器的更高级别(源代码级别)的东西。
回答
我们也可以从开放源代码覆盖工具中获取源代码并从中学习。
回答
我们可能还想使用BCEL之类的东西来分析字节码中实际存在的源代码行。我们不希望报告未覆盖空白行和注释之类的内容。
回答
如果我们正在谈论ColdFusion(我假设我们来自标签),那么我不确定这是否可行,但是我在这里可能是非常错误的...
IIRC,当CF进行编译时,它实际上作为普通的Java源文件编译为CFML的解释形式,然后将其编译为该类。因此,我们可能拥有的任何工具都将适用于中间版本,而不是CFML本身。
话虽这么说,Adobe现在已经有了可以逐步执行代码的CF调试器,所以请证明我错了,我很喜欢CFML中的代码覆盖率。