2017-08-08 5 views
2

J'utilise jacoco pour le rapport de couverture. Quand je regarde le rapport de jacoco, la couverture semble être bonne. Mais dans Sonarqube, la couverture est faible car elle indique que l'annotation @Data de lombok n'est pas couverte par le test.Sonarqube mauvaise couverture en raison de lombok @Data

Les classes compilées sont marquées @Generated mais Sonar ne les ignore pas.

Comment puis-je exclure @Data de l'analyse?

+0

Avez-vous essayé ce https://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus#NarrowingtheFocus-IgnoreIssuesonFiles? – mgyongyosi

+0

Non mais ignorer les problèmes sur le fichier ignorer le fichier entier. Je ne veux pas de ce comportement. Je veux juste exclure la méthode annotée avec @Generated –

+0

Copie possible de [Filtrage de couverture avec Lombok, Gradle, Jacoco et Sonar] (https://stackoverflow.com/questions/48501606/filtering-coverage-with-lombok-gradle-jacoco -and-sonar) – Godin

Répondre

0

tl; dr: Mon conseil est d'ignorer toute la classe de la couverture. Justification: La plupart des classes de données ne contiennent pas de 'code réel'. Si une classe comprend uniquement des attributs et l'annotation @Data, vous ne bénéficiez d'aucun avantage de la couverture. Si vous mettez de la logique dans la classe, ce n'est peut-être plus une classe de données - pensez à SRP. Cela dit, j'ai déjà écrit un testeur de classe de données qui a essayé de couvrir tous les cas. Rétrospectivement, cela n'en valait pas la peine. Peut-être qu'une bibliothèque telle que javabean-tester pourrait être utile, aussi bien.

0

Selon JaCoCo changelog - à partir des méthodes de la version 0.8.0 avec l'annotation @lombok.Generated sont automatiquement filtrés.

Changelog note également:

Outils qui lisent directement les fichiers exec et embed JaCoCo pour cette (comme sonarqube ou Jenkins) fourniront des fonctionnalités de filtrage seulement après avoir mis à jour pour cette version de JaCoCo.

Announcement of release of JaCoCo version 0.8.0 états:

Outils qui lisent directement les fichiers exec (ce qui est un rapport final) et embed JaCoCo pour la production du rapport fournira des fonctionnalités de filtrage seulement après avoir mis à jour pour cette version de JaCoCo. Alors s'il vous plaît suivre/wait/etc fournisseurs respectifs tels que

Les rapports générés par la version correspondante (0.8.0) des intégrations développées dans le cadre du projet JaCoCo nous (Ant Tâches, Maven Plugin et Command Line Interface) fournissent des fonctionnalités de filtrage.

A ce jour (30 Jan 2018), le correctif pour https://jira.sonarsource.com/browse/SONARJAVA-2608 est supposé être dans le plugin SonarJava 5.1 pas encore sorti.