2010-06-29 22 views
2

Je n'ai pas encore installé ma licence de NCover 3, et je suis toujours en train d'utiliser 1.5.8 sur mon serveur de build. J'essaie d'exclure les assemblées complètes et les classes spécifiques que je ne veux pas inclure dans le rapport, car elles abaissent artificiellement les résultats de la couverture.NCover 1.5.8/NCoverExplorer 1.4.0.7 Les exclusions manuelles sont très flasques

Dans NCoverExplorer, je jouais avec les options parce qu'il y a une section d'exclusions de couverture dans l'onglet Options où vous pouvez spécifier des espaces de noms complets. Je suis entré dans les classes entièrement qualifiées, et pour une raison quelconque, seulement une poignée d'entre eux sont exclus, et je n'arrive pas à comprendre pourquoi. Par exemple, lorsque j'ajoute System.ComponentModel.Composition à la liste, il n'est jamais exclu!

Est-ce juste un bug dans 1.5.8 avec lequel je dois vivre pour l'instant, puisque c'est une bêta et n'est plus supporté? Bien que j'ai une nouvelle licence pour le serveur, j'aimerais pouvoir faire une certaine couverture à la maison sur mon ordinateur personnel.

J'ai trouvé un très bon article on using a CoverageExcludeAttribute pour que NCover ignore automatiquement les classes/méthodes qui sont marquées avec cet attribut. Est-ce la meilleure option?

+0

Je suppose que vous pouvez toujours les supprimer manuellement de l'arborescence avant de générer le rapport, mais vous voulez qu'il soit automatique lors du profilage? – maxwellb

+0

@maxwellb oui, automatique est ce que je cherche. Bien que pendant le profilage soit sympa, je suis d'accord avec le post-traitement avec un script. Je vais devoir regarder les documents de TeamCity pour voir si je peux réellement modifier le coverage.xml avant qu'il ne soit rendu à l'écran. – Dave

Répondre

1

Avez-vous essayez d'utiliser des expressions régulières pour inclure/exclure les assemblées -

//ias AuctionSniper([.\w]*?)(?<!Tests) comprend tous les ensembles qui commencent par AuctionSniper mais ne se terminent pas avec les tests par exemple AuctionSniper.Main.exe Vous pouvez spécifier plusieurs modèles séparés par des points-virgules.
ou //ias .*vendorsupplied.*;.*tests

Cela fonctionne avec NCover 3 - vous pouvez essayer si cela fonctionne pour l'édition gratuite/communauté.

+0

Je n'ai pas ... Ma compréhension est que regex est seulement pris en charge dans NCover 2.0 et au-dessus. 1.5.x requiert des noms d'assembly complets. J'ai utilisé des caractères génériques sans succès. – Dave

+0

Bien qu'il n'ait pas résolu mon problème avec la version 1.5.8, je considère cela comme une réponse car j'en ai eu marre de tout, mis à jour vers la version 3.4, et utilisé les informations ici pour lancer cette installation. :) – Dave

+0

pas un pour obtenir un petit rire de la frustration d'un programmeur compagnon avec les libs de tiers ... mais votre commentaire vient d'apporter un sourire sachant 'été-là' sur mon visage. – Gishu

0

Une façon d'obtenir une partie est d'utiliser également l'option "assemblages à inclure dans la couverture". Cela m'a permis d'ignorer System.ComponentModel.Composition. Cependant, exclure la plupart des autres classes et espaces de noms ne fonctionne toujours pas. C'est un peu étrange quand j'exclus une classe entière, elle exclut seulement les méthodes, mais pas les classes contenues.