Автономная аппаратура SonarQube Jacoco показывает 0% покрытия в многомодульном проекте Maven

Я использую автономный инструментарий Jacoco, поскольку я использовал PowerMockito для своих тестовых случаев. Мой многомодульный проект Maven. Я использую PowerMockito 1.65. Моя версия SonarQube 6.7.

JaCoCo генерирует файлы HTML в каждом модуле, но в SonarQube показывает 0%

Мой родитель pom.xml

<properties>
    <sonar.version>6.7</sonar.version>
    <sonar-java.version>4.2</sonar-java.version>
    <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
</properties>

<dependencies>
    <dependency>
        <groupId>org.sonarsource.sonarqube</groupId>
        <artifactId>sonar-plugin-api</artifactId>
        <version>${sonar.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.sonarsource.java</groupId>
        <artifactId>sonar-java-plugin</artifactId>
        <version>5.0.1.12818</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jacoco</groupId>
        <artifactId>org.jacoco.agent</artifactId>
        <classifier>runtime</classifier>

        <version>0.7.9</version>
    </dependency>

    <dependency>
        <groupId>org.sonarsource.java</groupId>
        <artifactId>sonar-jacoco-listeners</artifactId>
        <version>4.9.0.9858</version>
        <scope>test</scope>
    </dependency>

</dependencies>

<build>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <configuration>
                <systemPropertyVariables>
                    <jacoco-agent.destfile>${project.build.directory}/coverage.exec</jacoco-agent.destfile>
                </systemPropertyVariables>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>2.6.1</version>
        </plugin>

    </plugins>
</build>
<profiles>
    <profile>
        <id>sonar-coverage</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>

            <plugins>


                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <configuration>
                        <append>true</append>
                    </configuration>
                    <executions>
                        <execution>
                            <id>default-instrument</id>
                            <goals>
                                <goal>instrument</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>default-restore-instrumented-classes</id>

                            <goals>
                                <goal>restore-instrumented-classes</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>default-report</id>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>report</goal>

                            </goals>
                            <configuration>
                                <dataFile>${project.build.directory}/coverage.exec</dataFile>
                            </configuration>
                        </execution>

                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
<modules>
    <module>module1</module>
    <module>module2</module>
</modules>

запустить командой clean install test sonar:sonar

Отчет JaCoCo введите здесь описание изображения

Отчет SonarQube введите здесь описание изображения


person Pradeep Charan    schedule 30.12.2017    source источник


Ответы (1)


Если вы измените расположение файла по умолчанию для файла покрытия, которое для maven jacoco плагин:

${project.build.directory}/jacoco.exec

Вам также нужно сообщить плагину сонара, где его найти. Sonar использует множество свойств для plugin, файл отчета jacoco должен быть: sonar.jacoco.reportPaths Как только плагин сонара заглянет в нужное место, он должен работать. Обратите внимание, что для расчета покрытия сонар использует как файлы покрытия, так и скомпилированные классы.

Просто примечание: вы выполняете mvn clean install test sonar:sonar, что немного избыточно, поскольку тест — это этап перед установкой, установка будет делать то же самое. См. жизненный цикл Maven. Но это не должно иметь значения здесь.

person wemu    schedule 30.12.2017