SonarQube Java :: JaCoCo Listeners生成大量的jacoco.exec报告

时间:2014-11-20 11:36:35

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

我有一个大约150k LOC的大中型项目。 Jacoco maven-plugin为jacoco.exec文件生成每个单元测试的报告。

所以,基本上这是pom.xml中的万无一失的设置:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>2.17</version>
     <configuration>
      <argLine>-XX:-UseSplitVerifier</argLine>
      <includes>
       <include>**/*Test.java</include>
       <include>**/*Tests.java</include>
      </includes>
      <excludes>
       <exclude>**/it/*IT.java</exclude>
       <exclude>**/*IT.java</exclude>
      </excludes>
                        <properties>
                            <property>
                                <name>listener</name>
                                <value>org.sonar.java.jacoco.JUnitListener</value>
                            </property>
                        </properties>
     </configuration>
    </plugin>
 <plugin>

棘手的部分是JUnitListener。目标jacoco.exec文件变为4,5 Gb大(巨大!)。一旦我们的Jenkins CI奴隶开始处理文件,声纳运行器(maven artifact)也会尝试将整个文件加载到内存中 - 或者看起来如此。这需要大小为8 gig ..这似乎完全错了,不是吗?

这里的问题是,可以做些什么来最小化jacoco.exec的大小?我们仅限于Java 1.6 SDK(注意到Java 1.7的大小变为&lt; 2 Gb)。我猜测调试符号是创建覆盖率报告的必要条件,还是我错了?

1 个答案:

答案 0 :(得分:0)

运行前清理jacoco .exec文件。似乎jacoco附加到现有文件。添加jacoco侦听器会显着增加文件大小。几次运行后你就得到了GB文件。我也经历过sonarqube无法使用&gt;解析文件4GB。或者你可以探索set append to false。这是一个例子:

test {
    jacoco {
        append = false
        destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
    }
}