Filtre JaCoCo des rapports de couverture avec Gradle
Problème:
J'ai un projet avec jacoco et je veux être en mesure de filtrer certaines classes et/ou de colis.
La Documentation Connexe:
J'ai lu la documentation suivante:
Officiel jacoco site:
http://www.eclemma.org/jacoco/index.html
Officiel jacoco les docs pour gradle: https://gradle.org/docs/current/userguide/jacoco_plugin.html
Officiel jacoco Github
questions, travail sur couverture:
https://github.com/jacoco/jacoco/wiki/FilteringOptions
https://github.com/jacoco/jacoco/issues/14
Liées StackOverflow Liens:
JaCoCo & Gradle - Options de Filtrage (Pas de réponse)
Pas les paquets de Jacoco rapport à l'aide de Sonarrunner et Gradle (Pas à l'aide de sonar)
JaCoCo - exclure les JSP de rapport (Cela semble fonctionner pour maven, je suis en utilisant gradle)
Maven Jacoco de Configuration - exclusion de classes/packages à partir d'un rapport ne fonctionne pas (Cela semble fonctionner pour maven, je suis en utilisant gradle)
JaCoCo gradle plugin exclure (Pas pu obtenir que cela fonctionne)
Gradle Jacoco - les rapports de couverture inclut des classes exclues dans la configuration (Semble très proche, il a utilisé doFirst
, n'a pas de travail pour moi)
Exemple de ce que j'ai essayé:
apply plugin: 'java'
apply plugin: 'jacoco'
buildscript {
repositories {
mavenCentral()
jcenter()
}
}
repositories {
jcenter()
}
jacocoTestReport {
reports {
xml {
enabled true //coveralls plugin depends on xml format report
}
html {
enabled true
}
}
test {
jacoco {
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpFile = file("$buildDir/jacoco/classpathdumps")
excludes = ["projecteuler/**"] //<-- does not work
//excludes = ["projecteuler"]
}
}
}
Question:
Comment puis-je exclure certains packages et les classes lors de la génération de la jacoco les rapports de couverture?
- Un tiers de l'option (FD je suis fondateur de): Si vous téléchargez les rapports Codecov vous pouvez ignorer tous les fichiers après le fait dans la section caractéristiques du produit. Merci.
- De sorte que vous pouvez filtrer par
packages
en ligne à l'aide deCodecov
? Aussi, j'ai vu leGithub
, qu'en estAndroid
de soutien, j'ai vuJava
. Je devrais toujours avoir à vous envoyer tous les rapports, puis filtre après vs filtrage avant. - Vous pouvez filtrer en fonction sur une regexp méthode de dépôt vous ne souhaitez pas inclure. Tous les produits java sont pris en charge via Jacoco rapports. Juste filtrage après le fait sur Codecov œuvres. Il se souviendra de vos filtres et de l'appliquer à tous les futurs rapports. Merci!
- Je suis curieux; ce qui ne l'
excludes
à partir de la documentation officielle de réellement faire alors? Est-il assez inutile?
Vous devez vous connecter pour publier un commentaire.
Grâce à,
Yannick Welsch
:Après une recherche Google, la lecture de la Gradle docs et en passant par les plus âgés StackOverflow posts, j'ai trouvé cette réponse sur le site Officiel gradle les forums!
Source: https://issues.gradle.org/browse/GRADLE-2955
Solution à mon
build.gradle
pour Java/Groovy projets:Comme vous pouvez le voir, j'ai été avec succès en mesure d'ajouter plus de
exclude:
afin de filtrer un peu de paquets.Source: https://github.com/jaredsburrows/CS-Interview-Questions/blob/master/build.gradle
Des tâches personnalisées pour d'autres projets tels que Android:
Source: https://github.com/jaredsburrows/android-gradle-java-app-template/blob/master/gradle/quality.gradle#L59
exclude: ['**/*Test*.*'])
apply plugin: jacoco
.jacocoTestReport
ne fonctionne qu'avec les deuxjacoco
etjava
plugins. Ce n'est pas pour Android. Veuillez voir mon repo ici pour android: github.com/jaredsburrows/android-gradle-java-template/blob/...**/*Constants*.*
(à l'aide de caractères génériques pour l'extension), d'exclure un fichier appeléConstants.java
mais**/*Constants*.java
(prévoir expressément l'extension) ne sera pas.beforeEvaluate
?Pour Gradle version 5.0 et versions ultérieures, le
classDirectories = files(...)
donne un warning de dépréciation.C'est le non dépréciées est une manière d'exclure les classes:
pour moi, c'est très bien de travailler avec
comme indiqué dans la documentation
https://docs.gradle.org/current/userguide/jacoco_plugin.html#N16E62 et initally demandé
donc la réponse est:
donc, si vous me demandez: ce n'est pas une question de
ou
mais
pour exclure un paquet
*.projecteuler.*
et
test {}
au niveau des projets, pas imbriquée dansjacocoTestReport
Ici est une solution pour ce problème dans ANT. Ce peut être adapté à gradle par adjonction, sous l'
jacocoTestReport
tâche. Bien que ce n'est pas vraiment documenté par jacoco, il semble que la seule manière de filtrer les résultats de l'essai pour l'instant.generated/java/
au lieu demain/java
.Cela a été pendant un certain temps, mais je viens de tombé sur cette. J'ai eu du mal avec toutes les exclusions nécessaires. J'ai trouvé que c'était quelque chose de beaucoup plus simple pour moi. Si vous suivez le projet Maven style de mise en page /src/main/java et /src/test/java, il vous suffit de mettre buildDir/classes/principal dans votre classDirectories config comme suit:
Le code ci-dessous excluent les classes à partir de la couverture de vérification ainsi: