关于 EMMA 的工作......想知道 EMMA 如何标记与源代码相关的代码行。有没有办法只提取覆盖/标记的线?
3 回答
EMMA 对类文件进行检测,检测代码(附加字节代码)用于生成覆盖率报告。
它不适用于源文件。当然,类文件需要“调试信息”,尤其是行号。但通常情况就是这样。
更新
看起来,只有 html 报告生成器能够将覆盖结果与行号匹配。我无法获得文本或 xml 报告的相同详细信息。
对于一个快速的解决方案,我只需创建 html 报告并使用 html 解析器解析它们(xml 解析器也可以工作)并从 html 表中提取日期。
或者,使用该选项执行 emmarun-raw
并查看元数据和覆盖文件。
我想您将不得不查看 Emma 代码库以确定它们的确切用途。 http://emma.sourceforge.net/
在我看来,您想要的不是“覆盖的行”,而是“覆盖的代码块”,它从某行/列开始,在另一行/列结束,并且中间可能有用于内部代码块的孔。
任何仅根据行号提供覆盖数据的系统都不会提供此类信息。您可以通过解析代码并提取所有这些数据来从行号重新生成这些信息;这比看起来要多得多。如果您在同一行中有多个语句,它将不起作用。
我们的Java 测试覆盖工具确实以我建议的形式收集“覆盖的代码块”;您可以在显示代码块和内部块的 UI 显示中看到这一点。
我们的工具导出了一个文件,其中包含此“代码块”信息,以及探针与相应代码块之间的映射。您想要的内容很容易从该文件中提取。