Saya memiliki proyek multi-modul maven dan saya menggunakan jacoco-maven untuk laporan cakupan kode. Beberapa kelas tidak boleh dilaporkan, karena itu adalah konfigurasi Spring dan saya tidak tertarik padanya.
Saya telah mendeklarasikan plugin maven-jacoco sebagai berikut:
<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>
Masalahnya adalah ketika saya menjalankan mvn clean verify
jacoco masih melaporkan kelas yang seharusnya dikecualikan seperti yang ditunjukkan oleh konfigurasi xml saya. Bagaimana saya bisa mengkonfigurasinya dengan benar?
sumber
Meskipun Andrew sudah menjawab pertanyaan dengan detail, saya memberikan kode bagaimana cara mengecualikannya di pom
Untuk aplikasi Springboot
sumber
.class
akhir , seperti:<exclude>**/*com/test/vaquar/khan/HealthChecker</exclude>
<exclude>com/mycompany/mypackage/**/*</exclude>
Solusi lain:
Harap dicatat bahwa, kami menggunakan
"<element>PACKAGE</element>"
konfigurasi yang kemudian membantu kami untuk mengecualikan di tingkat paket.sumber
https://github.com/jacoco/jacoco/issues/34
Ini adalah notasi berbeda untuk kelas yang kami miliki:
Parameter Agen, tugas Ant, dan tujuan persiapan-agen Maven
Spesifikasi ini mengizinkan karakter pengganti * dan?, Dengan * karakter pengganti sebanyak apa pun, bahkan beberapa folder bertingkat.
Maven melaporkan golnya
Spesifikasi ini memungkinkan Ant Filespec seperti wildcard *, ** dan?, Di mana * wildcard bagian dari elemen jalur tunggal saja.
sumber
Gunakan properti sonar.coverage.exclusions.
Ini harus mengecualikan kelas-kelas dari perhitungan cakupan.
sumber
Anda dapat mengonfigurasi pengecualian cakupan di properti sonar, di luar konfigurasi plugin jacoco:
dan jangan lupa untuk menghapus pengaturan pengecualian dari plugin
sumber
Berikut adalah contoh kerja dalam
pom.xml
file.sumber