'Jacoco SonarQube Integration

I've spent a good couple of days trying to get SonarQube to display unit test code coverage from the Maven Jacoco plugin.

The error message I am stuck on is

[INFO] Analysing .../target/jacoco.exec
[WARNING] Coverage information was not collected. Perhaps you forget to include debug information into compiled classes?

The report under target/site/jacoco/index.html generates as expected and contains line highlighting and line numbers. I have read that if no debug information is included in the compiled classes then the highlighting and line numbers will not show in this report.

I have read Maven includes debug information by default, however, just in case I included the following configuration in my projects maven-compiler-plugin setup

<configuration>
    <debug>true</debug>
    <debuglevel>lines,vars,source</debuglevel>
</configuration>

I have the following properties in my settings.xml (host and login left out on purpose)

<properties>
    <sonar.host.url></sonar.host.url>
    <sonar.login></sonar.login>
    <sonar.ws.timeout>300</sonar.ws.timeout>
</properties>

I have the following configuration of my Jacoco plugin.

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.7.201606060606</version>
    <executions>
        <execution>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>report</id>
            <phase>prepare-package</phase>
             <goals>
                 <goal>report</goal>
             </goals>
        </execution>
    </executions>
</plugin>

My jacoco.exec is in the default location of target/jacoco.exec and is found correctly by SonarQube.

Relevant versions

Maven 3.2.2

Maven Compiler 3.5.1

Maven Surefire 2.19.1

Java 1.8.0_11

SonarQube Server 5.6

Jacoco Maven Plugin 0.7.7.201606060606

Mac OS X 10.10.5

Thanks in advance for the help!

---- EDIT ----

I am running the following maven commands

mvn clean package

mvn sonar:sonar



Solution 1:[1]

I have followed the article here and it just work for me, I have only updated the code to reflect the latest JaCoCo plugin version

    <dependency>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.9</version>
    </dependency>

and adding JaCoCo agent to my POM plugins:

    <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                 <executable>true</executable>
            </configuration>
        </plugin>
        <!-- JaCoCo configuration -->
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.9</version>
            <executions>
                <execution>
                    <id>default-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>default-report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

and running the following maven command (in Jenkins):

clean deploy $SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL

I have SonarQube 6.3.0.19869, Jenkins 2.46.1, Maven Integration Plugin in Jenkins 2.15.1 (the older one caused JVM issues in my stack).

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Hasson