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

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

这是一种脚本语言,可以在底层生成Java字节码。

0
额外 编辑
意见: 1

3 答案

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

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

尽管如此,Adobe现在已经拥有了可以跨代码的CF调试器,所以请证明我错了 - 我很喜欢CFML中的代码覆盖率。

0
额外
查看我对“轻松实现任意语言分支覆盖”的回复。直接测试CFML代码然后编译为Java仍然会直接为CFML提供测试覆盖率数据。 (我为生存建立测试覆盖工具)。
额外 作者 Ira Baxter,
这是关于什么的? ColdFusion的Rancho代码覆盖率 kunalsaini.blogspot.in/2012 / 05 /…
额外 作者 J.T.,

您的脚本语言是否生成字节码?它会生成调试元数据吗?如果是这样的话,字节码工具可能是最好的选择。事实上,现有的工具可能会起作用;也许只需要很少的修改(典型的问题是工具被编写为与Java一起工作,并假定com.foo.Bar.class对应于com / foo / Bar.java。展开该假设可能是单调乏味的。) EMMA 是一个ClassLoader,它为Java中的代码覆盖集合进行字节码重写。编码风格有点时髦,但我建议阅读一些想法的来源。

如果你的脚本语言被解释了,那么你将需要一些更高层次的(源代码级别)钩住解释器。

0
额外

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

0
额外
这不是一个好主意,除非BCEL中的行号完全匹配OP的DSL中的行号。如果他们不这样做,你会得到对“错误”源代码行的报道。
额外 作者 Ira Baxter,