У меня есть многомодульный проект maven, и я использую jacoco-maven для отчетов о покрытии кода. О некоторых классах не следует сообщать, поскольку они являются конфигурацией Spring и они мне не интересны.
Я объявил плагин maven-jacoco следующим образом:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.2.201409121644</version>
<configuration>
<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
<exclude>some.package.*</exclude>
<exclude>**/*Config.*</exclude>
<exclude>**/*Dev.*</exclude>
<exclude>some/package/SomeClass.java</exclude>
</configuration>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
Проблема в том, что когда я выполняю mvn clean verify
jacoco, он все еще сообщает о классах, которые должны были быть исключены, как указывает моя конфигурация xml. Как мне его правильно настроить?
источник
Хотя Эндрю уже подробно ответил на вопрос, я даю код, как исключить его в pom
Для приложения Springboot
источник
.class
конца , например:<exclude>**/*com/test/vaquar/khan/HealthChecker</exclude>
<exclude>com/mycompany/mypackage/**/*</exclude>
Другое решение:
Обратите внимание, что мы используем
"<element>PACKAGE</element>"
в конфигурации, которая затем помогает нам исключить на уровне пакета.источник
https://github.com/jacoco/jacoco/issues/34
Это разные обозначения классов, которые у нас есть:
Параметры агента, задачи Ant и цель агента подготовки Maven
Эти спецификации допускают подстановочные знаки * и?, Где * подстановочные знаки - любое количество символов, даже несколько вложенных папок.
Цель отчета Maven
Эти спецификации позволяют Ant Filespec, например, подстановочные знаки *, ** и?, Где * подстановочные знаки только части одного элемента пути.
источник
Используйте свойство sonar.coverage.exclusions.
Это должно исключить классы из расчета покрытия.
источник
вы можете настроить исключение покрытия в свойствах сонара вне конфигурации плагина jacoco:
и не забудьте удалить настройки исключения из плагина
источник
Вот рабочий образец в
pom.xml
файле.источник