EMMA覆盖工具不显示逐行覆盖

时间:2008-10-31 15:56:06

标签: java ant code-coverage emma

我正在使用EMMA工具进行代码覆盖,尽管我付出了最大努力,但EMMA拒绝查看原始.java文件并逐行生成覆盖率。

我们使用ANT来构建代码,并将debug设置为true。我知道EMMA正在测量覆盖率,因为.emma文件似乎正在生成并正确合并。报告能够以百分比呈现高水平的方法覆盖率。

但是为什么它不会看到.java文件?我得到的只是: [在源路径中找不到源文件'a / b / c / d / e / f / code.java]

4 个答案:

答案 0 :(得分:6)

您是否在sourcepath元素中设置了report

<report>
    <sourcepath>
        <pathelement path="${java.src.dir}" />
    </sourcepath>
    <fileset dir="data">
        <include name="*.emma" />
    </fileset>

    <txt outfile="coverage.txt" />
    <html outfile="coverage.html" />
</report>

答案 1 :(得分:2)

您可以发布生成build.xml报告的EMMA部分吗?听起来像是report sourcepath问题。

report sourcepath应指向您的 java 来源。

请参阅EMMA参考中的sourcepath。这可以是路径式结构,因此您可以包含多个源目录。

与往常一样,ANT:

  • 使用-verbose
  • 执行尽可能小的build.xml
  • -debug了解更多信息。

答案 2 :(得分:1)

我遇到了同样的问题。但是发现在设置sourcepath时我们需要设置为唯一的目录级别而不是java文件位置。它类似于类路径

答案 3 :(得分:0)

{java.src.dir}是否需要指向一个特定的src目录。

这不是一个单独的src目录,因为我正在编译多个项目。每个都有自己的build.xml文件。

我相信这是生成所有报道报告的部分:

  <target name="emma.report" if="use.emma">
   <emma enabled="true">
     <report sourcepath="${test.reports.dir}">
       <!--  collect all EMMA data dumps (metadata and runtime):   --> 
       <infileset dir="${test.data.dir}" includes="*.emma" /> 
       <html outfile="${test.reports.dir}/coverage.html" /> 
     </report>
   </emma>
 </target>

编辑:我将源路径更改为直接指向其中一个src目录。看看是否有效。