Как проверить минимальное покрытие кода для многомодульного проекта maven с помощью jacoco?

Я хочу использовать jacoco maven plugin для проверки минимального уровня покрытия кода в процессе сборки с использованием цели 'check'.

Для одномодульного проекта все работает нормально. Но для мультимодуля я хочу проверить средний уровень покрытия кода всех модулей, но check цель проверяет каждый модуль отдельно.

Например, модуль1 имеет 70% покрытия кода, модуль2 имеет 100% покрытие кода, в среднем для всех Покрытие кода строк из обоих модулей составляет 85%. И я пытаюсь установить покрытие кода для всего проекта на 80%, но это не удается из-за первого модуля.

От пом:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.6.201602180812</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>
        <execution>
            <id>default-check</id>
            <goals>
                <goal>check</goal>
            </goals>
            <configuration>
                <rules>
                    <rule>
                        <element>BUNDLE</element>
                        <limits>
                            <limit>
                                <counter>COMPLEXITY</counter>
                                <value>COVEREDRATIO</value>
                                <minimum>0.80</minimum>
                            </limit>
                        </limits>
                    </rule>
                </rules>
            </configuration>
        </execution>
    </executions>
</plugin>

person Evgeniy Strepetov    schedule 04.08.2016    source источник


Ответы (1)


Краткий ответ: невозможно (на момент написания) с использованием только Maven и Jacoco.

с официальной страницы jacoco на github:

Текущие цели JaCoCo Maven работают только с отдельными модулями: тесты выполняются внутри модуля и охватывают только код внутри того же модуля. Отчеты о покрытии создаются для каждого модуля отдельно. Нет встроенной поддержки межмодульного охвата или комбинированных отчетов для нескольких модулей.

Следовательно, ваши требования не могут быть удовлетворены только с помощью Maven и Jacoco. Однако вы можете использовать общий подход в корпоративных настройках: Sonarqube, который будет обрабатывать сгенерированные файлы jacoco (т. е. jacoco.exec) и агрегировать отчетность и управление с помощью интеграции Jacoco (поставляется из коробки в последних версиях).

person A_Di-Matteo    schedule 05.08.2016
comment
Спасибо, я реализовал такой подход через плагин Jacoco для Jenkins. - person Evgeniy Strepetov; 05.08.2016
comment
Здравствуйте, есть ли какие-либо обновления для этого ответа в 2019 году? Я могу использовать report-aggregate для создания хорошего html-отчета с агрегатами. Если это возможно, то jacoco должен сгенерировать агрегат jacoco.exec, а затем я смогу проверить совокупное покрытие, не так ли? - person user770119; 25.01.2019
comment
@ user770119 — это по-прежнему не поддерживается, как обсуждалось в groups.google.com/d. /msg/jacoco/0haFMvGBng0/A4UfH_sjBgAJ - person tuk; 05.08.2019
comment
На дворе 2021 год. У кого-нибудь есть новости? надеюсь - person His; 29.07.2021