web-dev-qa-db-fra.com

Comment ajouter une annotation pour exclure une méthode d'un rapport de couverture de code jacoco?

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() {}
}
12
Don Rhummy

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.

7
Godin

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).

Notes de version JaCoCo 0.8.2

1
Ajinkya

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.

0
Markus Schulte