À l'aide de .runsettings à exclure des assemblages à partir de la couverture de code

Lors de l'exécution de la couverture de code pour ma solution qui contient de multiples projets, j'ai remarqué que la Couverture de Code comprend également mes montages d'essai.

J'ai trouvé un article qui suggère le modèle suivant pour .runsettings:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Include>
<!-- Do not specify any includes. This will attempt to include all binaries -->
</Include>
<Exclude>
<!-- Exclude modules that aren't to be processed, by their name /path -->
<ModulePath>.*Tests\.dll$</ModulePath> <!-- I put it here -->
</Exclude>
</ModulePaths>
<UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
<AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
<CollectFromChildProcesses>True</CollectFromChildProcesses>
<CollectAspDotNet>False</CollectAspDotNet>
<!--
Additional paths to search for symbol files. Symbols must be found for modules to be instrumented.
If symbols are alongside the binaries, they are automatically picked up. Otherwise specify the here.
Note that searching for symbols increases code coverage runtime. So keep this small and local.
<SymbolSearchPaths>             
<Path>C:\Users\User\Documents\Visual Studio 11\Projects\ProjectX\bin\Debug</Path>
<Path>\\mybuildshare\builds\ProjectX</Path>
</SymbolSearchPaths>
-->
<Functions>
<Exclude>
<Function>^std::.*</Function>
<Function>^ATL::.*</Function>
<Function>.*::__GetTestMethodInfo.*</Function>
<Function>^Microsoft::VisualStudio::CppCodeCoverageFramework::.*</Function>
<Function>^Microsoft::VisualStudio::CppUnitTestFramework::.*</Function>
<Function>.*::YOU_CAN_ONLY_DESIGNATE_ONE_.*</Function>
</Exclude>
</Functions>
<Attributes>
<Exclude>
<Attribute>^System.Diagnostics.DebuggerHiddenAttribute$</Attribute>
<Attribute>^System.Diagnostics.DebuggerNonUserCodeAttribute$</Attribute>
<Attribute>^System.Runtime.CompilerServices.CompilerGeneratedAttribute$</Attribute>
<Attribute>^System.CodeDom.Compiler.GeneratedCodeAttribute$</Attribute>
<Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
</Exclude>
</Attributes>
<Sources>
<Exclude>
<Source>.*\\atlmfc\\.*</Source>
<Source>.*\\vctools\\.*</Source>
<Source>.*\\public\\sdk\\.*</Source>
<Source>.*\\microsoft sdks\\.*</Source>
<Source>.*\\vc\\include\\.*</Source>
</Exclude>
</Sources>
<CompanyNames>
<Exclude>
<CompanyName>.*microsoft.*</CompanyName>
</Exclude>
</CompanyNames>
<PublicKeyTokens>
<Exclude>
<PublicKeyToken>^B77A5C561934E089$</PublicKeyToken>
<PublicKeyToken>^B03F5F7F11D50A3A$</PublicKeyToken>
<PublicKeyToken>^31BF3856AD364E35$</PublicKeyToken>
<PublicKeyToken>^89845DCD8080CC91$</PublicKeyToken>
<PublicKeyToken>^71E9BCE111E9429C$</PublicKeyToken>
<PublicKeyToken>^8F50407C4E9E73B6$</PublicKeyToken>
<PublicKeyToken>^E361AF139669C375$</PublicKeyToken>
</Exclude>
</PublicKeyTokens>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>

Maintenant, le problème est que dès que j'ai vérifier mon .runsettings fichier dans le TEST\Test des paramètres de menu, je vois la Couverture de Code analyse seulement l'une des nombreuses assemblées dans ma solution.

Même si je supprime la ligne

 <ModulePath>.*Tests\.dll$</ModulePath> <!-- I put it here -->

une seule assemblée, est analysée. Je voudrais éviter d'ajouter tous mes assemblées à la liste d'inclusion, j'ai juste besoin d'exclure tous les montages d'essai.

Pourquoi .runsettings faire la couverture de code ne voyez qu'une seule des assemblées dans mon VS solution?

  • msdn.microsoft.com/de-de/library/vstudio/jj635153.aspx dit que vous pouvez supprimer toutes les entrées de ce fichier (en tant que valeurs par défaut sont utilisées). Essayez de commencer avec un fichier vide et ajouter une région après l'autre.
  • Je suis confronté à un problème similaire, avec un beaucoup plus simple fichier. Avec la valeur par défaut runsettings fichier, je suis en mesure d'obtenir la couverture de code. Quand j'ai essayé d'exclure un tiers de la bibliothèque (par exemple), puis de l'exécution de l'analyse de Couverture de Code les résultats de ... rien. Pas d'erreurs, pas de mises en garde, rien du tout. Commentaire de l'exclusion, et tout fonctionne à nouveau.
  • simplement en ajoutant de l'anglais (états-unis) version de MSDN lien fourni par @habakuk msdn.microsoft.com/en-us/library/vstudio/jj635153.aspx
InformationsquelleAutor JustAMartin | 2013-01-22