2013-05-23 1 views
1

J'utilise l'outil opensource ReportGenerator pour afficher les détails de la sortie XML générée en utilisant OpenCover et mstest. Pour un projet particulier, je vois les mesures suivantes:Que représentent les lignes totales dans ReportGenerator?

  • lignes couvertes: 3611
  • lignes non couvertes: 3587
  • lignes Recouvrable: 7198
  • Total des lignes: 35609

Ok , Covered + Uncovered = Coverable lines et cela a du sens. Cependant Total lines est significativement au-dessus de cette valeur et je veux savoir ce qui constitue ou définit toutes ces lignes de code supplémentaires pour composer Total lines.

La documentation ReportGenerator est clairsemée au mieux, mais je suppose qu'il englobe des commentaires, des espaces, des choses comme using déclarations (pour l'importation), namespaces déclarations de méthodes, classes, etc. qui ne sont pas testables. Cependant, je ne suis pas sûr, et je prévois d'utiliser cet outil pour beaucoup de projets et je dois être en mesure d'expliquer ce qui se cache derrière ce numéro. Est-ce que quelqu'un sait ou peut expliquer quelle est la valeur de Total lines au-delà des lignes testables totales?

+2

Je pense que vous l'avez, c'est, comme je l'ai compris, chaque ligne dans les fichiers source (code + espace + parenthèses + commentaires + autre) les choses importantes sont couvertes/couvrables - dans le XML OpenForover il traite des points de séquence –

+0

@ShaunWilde - Merci. Je sais que vous contribuez sur OpenCover selon votre bio. Vous n'avez pas par hasard une copie de ReportGenerator pour regarder la formule qui fait les lignes Total? – atconway

+0

Selon [Codefile.cs] (http://reportgenerator.codeplex.com/SourceControl/latest#1402884) c'est 'string [] lines = System.IO.File.ReadAllLines (this.Path); this.TotalLines = lines.Length; 'et ensuite elles sont agrégées. –

Répondre

2

Selon Codefile.cs il est

string[] lines = System.IO.File.ReadAllLines(this.Path); 
this.TotalLines = lines.Length; 

puis ceux-ci sont agrégées au niveau classe/assemblage

Toutefois, si elles sont basées sur des fichiers enregistrés dans l'ancien APB, il ne sera pas tout source fichiers il n'y a pas de points de séquence (c'est-à-dire un endroit où vous pouvez mettre un point d'arrêt) qui nécessitent l'enregistrement du fichier dans la PDB.

+0

C'était génial sauf que je n'ai pas bien compris ce qui suit: * "alors ce ne seront pas tous vos fichiers sources il n'y a pas de points de séquence (ie un endroit où vous pouvez mettre un point d'arrêt) qui nécessitent que le fichier soit enregistré dans le PDB. "* Qu'entendez-vous exactement par là? J'ai un peu compris que cela signifiait que si c'était les lignes comme les états PDB il n'inclut pas les points de séquence? – atconway

+2

Une PDB contient uniquement des références aux fichiers qui ont au moins un point de séquence. Un fichier qui a UNIQUEMENT une référence à un 'enum' ne sera pas listé dans la PDB mais est toujours' code source'. Le nombre total de lignes n'est pas très précieux et a des problèmes - mieux vaut l'ignorer, ou le cacher de ceux qu'il confond :). –

+0

Très instructif sur les différences que je ne connaissais pas, merci! – atconway

Questions connexes