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

funde 发布于 2018-02-09 coldfusion 最后更新 2018-02-09 01:04 1156 浏览

寻找讨论实际上如何在Java中编写代码覆盖率工具的书籍或其他参考资料;一些各种技巧或技巧 - 源代码和字节代码工具。 这是一种脚本语言,可以在底层生成Java字节码。

已邀请:

funde

赞同来自:

Thxm,Mc! http://asm.objectweb.org /是另一个。关于字节代码工具的优秀文档,但没有什么“直接”用来编写覆盖工具 - 只是一些提示或想法。

stotam

赞同来自:

您的脚本语言是否生成字节码?它是否生成调试元数据?如果是这样,字节码工具可能是要走的路。事实上现有的工具可能会工作,也许只需要很少的修改(典型的问题是工具被编写成与Java一起工作,并且假定com.foo.Bar.class对应于com/foo/Bar.java。展开这个假设可能是单调乏味的)EMMA是一个ClassLoader字节码重写为Java代码覆盖收集。编码风格有点时髦,但我建议读一些想法的来源。 如果您的脚本语言被解释,那么您将需要更高级的(源级别)挂钩到解释器。

funde

赞同来自:

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

iaut

赞同来自:

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

non_et

赞同来自:

如果你在谈论ColdFusion(我认为你是来自标签),那么我不确定这是可行的,但我可能在这里是非常错误的... IIRC,当CF编译它时,它基本上编译成CFML的解释形式作为一个普通的旧Java源文件,然后编译到类中。因此,您可能拥有的任何工具都将应用于中间版本,而不是CFML本身。 尽管如此,Adobe现在已经拥有了可以跨代码的CF调试器,所以请证明我错了 - 我很喜欢CFML中的代码覆盖。