Mam wielomodułowy projekt Mavena i używam jacoco-maven do raportów pokrycia kodu. Niektórych klas nie należy zgłaszać, ponieważ są konfiguracjami Spring i nie jestem nimi zainteresowany.
Deklarowałem wtyczkę maven-jacoco w następujący sposób:
<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>
Problem polega na tym, że gdy mvn clean verify
wykonuję jacoco, nadal raportuję klasy, które powinny zostać wykluczone, jak wskazuje moja konfiguracja xml. Jak mogę to poprawnie skonfigurować?
źródło
Chociaż Andrew już odpowiedział na pytanie ze szczegółami, podaję kod, jak wykluczyć go w pom
Do aplikacji Springboot
źródło
.class
końca , na przykład:<exclude>**/*com/test/vaquar/khan/HealthChecker</exclude>
<exclude>com/mycompany/mypackage/**/*</exclude>
Inne rozwiązanie:
Należy pamiętać, że używamy
"<element>PACKAGE</element>"
w konfiguracji, która pomaga nam następnie wykluczyć na poziomie pakietu.źródło
https://github.com/jacoco/jacoco/issues/34
Oto różne notacje klas, które mamy:
Parametry agenta, zadania mrówki i cel przygotowania agenta Mavena
Te specyfikacje dopuszczają symbole wieloznaczne * i?, Gdzie * symbole wieloznaczne umożliwiają dowolną liczbę znaków, nawet wiele zagnieżdżonych folderów.
Cel raportu Mavena
Te specyfikacje zezwalają Ant Filespec na używanie symboli wieloznacznych *, ** i?, Gdzie * symbole wieloznaczne tylko części pojedynczego elementu ścieżki.
źródło
Użyj właściwości sonar.coverage.excosures.
Powinno to wykluczyć klasy z obliczania pokrycia.
źródło
możesz skonfigurować wykluczenie zasięgu we właściwościach sonaru, poza konfiguracją wtyczki jacoco:
i pamiętaj, aby usunąć ustawienia wykluczeń z wtyczki
źródło
Oto próbka robocza w
pom.xml
pliku.źródło