J'ai du code dans Java que je veux exclure de la couverture du code. Comment dois-je procéder? Je veux pouvoir ajouter une annotation. Existe-t-il un moyen de configurer ou d'étendre jacoco ( comme utilisé dans gradle) pour l'utiliser?
Exemple:
public class Something
{
@ExcludeFromCodeCoverage
public void someMethod() {}
}
J'ai du code dans Java que je souhaite exclure de la couverture du code. Comment dois-je procéder? Je veux pouvoir ajouter une annotation. Existe-t-il un moyen de configurer ou d'étendre jacoco ( comme utilisé dans gradle) pour l'utiliser?
À ce jour, il n'existe aucune fonctionnalité de ce type dans la dernière version publiée de JaCoCo (0.7.9
). Seules des classes entières peuvent être exclues.
Sur la page https://github.com/jacoco/jacoco/wiki/FilteringOptions#annotation-based-filtering (qui est dédié aux développeurs), cela est enregistré comme une idée pour les futures versions.
La documentation officielle de JaCoCo contient des informations sur la façon d'obtenir la dernière version non publiée ainsi qu'une liste des modifications non publiées pour la prochaine version - http: // www .jacoco.org/jacoco/trunk/doc/changes.html , qui comprend divers filtres, parmi lesquels le filtrage des méthodes générées par Lombok et Groovy et marquées par des annotations lombok.Generated
et groovy.transform.Generated
respectivement. Vous pouvez potentiellement en abuser, mais je ne recommanderais pas de le faire pour de nombreuses raisons.
La nouvelle fonctionnalité a été ajoutée dans la version 0.8.2 de JaCoCo qui filtre les classes et méthodes annotées avec @Generated. Pour plus de détails, veuillez consulter la documentation ci-dessous:
Les classes et méthodes annotées avec une annotation dont la politique de rétention est runtime ou classe et dont le nom simple est Generated sont filtrées lors de la génération du rapport (GitHub # 731).
Tl; dr
Utiliser l'annotation @lombok.Generated
de Lombok .
Explication
Jacoco s'intègre avec Lombok . Le code généré par Lombok est exclu de la couverture Jacoco par défaut (voir Version 0.8.0 dans le changelog Jacoco ). Vous pouvez mal utiliser lombok.Generated
à votre méthode pour qu'il soit exclu du rapport de couverture.