EMMA如何标记所涵盖的代码行?

时间:2012-02-08 16:58:32

标签: java code-coverage emma

关于EMMA的工作......我想知道EMMA如何标记与源代码相关的代码行。 有没有办法只提取覆盖/标记的线?

3 个答案:

答案 0 :(得分:4)

EMMA对类文件进行检测,并使用检测代码(附加字节代码)生成coverage reports

它不能处理源文件。当然,类文件需要“调试信息”,尤其是行号。但情况通常如此。

<强>更新

看起来,只有html报告生成器能够将覆盖率结果与行号匹配。我无法获得文本或xml报告的相同详细信息。

对于快速解决方案,我只需创建html报告并使用html解析器解析它们(xml解析器也可以工作)并从html表中提取日期。

或者,使用-raw选项执行emmarun并查看元数据和coverage文件。

答案 1 :(得分:0)

我想您必须查看Emma代码库才能确切地确定它们的作用。 http://emma.sourceforge.net/

答案 2 :(得分:0)

在我看来,你想要的不是“覆盖线”而是“覆盖的代码块”,它从一些线/列开始,以某个其他线/列结束,并且可能在中间有内部块的孔代码。

任何仅根据行号提供覆盖数据的系统都不会提供此类信息。您可以通过解析代码并提取所有这些数据,从行号重新生成此信息;这比看上去要多得多。如果您在同一行中有多个语句,它将无法工作。

我们的Java Test Coverage工具确实以我建议的形式收集“覆盖的代码块”;你可以在显示代码块和内部块的UI显示中看到这一点。

我们的工具导出的文件包含此“代码块”信息,以及探针和相应代码块之间的映射。你想要的东西很容易从那个文件中提取出来。