无法将外部生成的it-jacoco.exec报告导入Sonar

时间:2014-11-26 21:32:39

标签: java maven ant jenkins jacoco-maven-plugin

我能够使用以下JVM选项启动位于与我的jenkins构建服务器不同的服务器上的多模块应用程序实例:"-javaagent:${MAIN_DIR}/lib/jacocoagent.jar==destfile=/jacoco.exec,output=tcpserver,address=*"

在我的Jenkins构建中,我有Pre Steps如下:一个调用目标jacocoReport的ant任务。我为此目的使用的build.xml具有以下代码;

<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
    <classpath path="/opt/hudson/tools/jacocoant.jar"/>
</taskdef>

<target name="jacocoReport">
        <jacoco:dump address="${jacoco.host}" port="${jacoco.port}" dump="true" reset="true" destfile="${jacocoReportFile}" append="false"/>
</target>

<target name="jacocoReset">
        <jacoco:dump address="${jacoco.host}" port="${jacoco.port}" reset="true" destfile="${jacocoReportFile}" append="false"/>
    <delete file="${jacocoReportFile}"/>
</target>

最后我有一个maven构建步骤,它调用了sonar:sonar

以下是POM中与我的集成报告相关的部分;

<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.itReportPath>${WORKSPACE}/it-jacoco.exec</sonar.jacoco.itReportPath>
<sonar.language>java</sonar.language>
<sonar.branch>9.9.5</sonar.branch>

这是我的插件配置:

      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <configuration>
          <append>true</append>
        </configuration>
        <executions>
          <execution>
            <id>pre-test</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>post-test</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
              <goal>report-integration</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

当构建完成时,我的Sonar条目仍然显示为0%,用于我的集成测试。但是,当我使用相同的it-jacoco.exec报告并使用Eclipse的Jacoco导入覆盖率会话导入它时,我得到26%的覆盖率。

最后,当我查看我的Jenkins构建日志时,我看到以下内容;

Sensor JaCoCoItSensor...
Analysing /var/lib/jenkins/workspace/XXXXXX/it-jacoco.exec
No information about coverage per test.
Sensor JaCoCoItSensor done: 34 ms

我目前没有任何自动集成测试,我只希望从外部测试机器导入集成报告。

0 个答案:

没有答案