Podczas obsługi kodu dla mojego rozwiązania zawierającego wiele projektów zauważyłem, że zasięg kodu obejmuje także moje zestawy testowe.Użycie .runsettings w celu wykluczenia złożeń z zasięgu kodu
znalazłem artykuł, który sugeruje poniższy szablon .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>
Teraz problemem jest to, że tak szybko, jak mogę sprawdzić plik .runsettings w menu ustawień test test \ widzę Code Coverage analizuje tylko jedno z wielu złożeń w moim rozwiązaniu.
Nawet jeśli usunąć wiersz
<ModulePath>.*Tests\.dll$</ModulePath> <!-- I put it here -->
tylko jeden zespół jest analizowane. Chciałbym uniknąć dodawania wszystkich moich złożeń do listy Uwzględnij, po prostu muszę wykluczyć wszystkie zespoły testowe.
Dlaczego .runsettings powoduje, że zasięg kodu jest wyświetlany tylko w jednym z zestawów w moim rozwiązaniu VS?
http: // msdn.microsoft.com/de-de/library/vstudio/jj635153.aspx mówi, że możesz usunąć każdy wpis w tym pliku (ponieważ używane są wartości domyślne). Spróbuj zacząć od pustego pliku i dodaj jeden region po drugim. – habakuk
Mam do czynienia z podobnym problemem, z dużo prostszym plikiem. Z domyślnym plikiem runsettings, jestem w stanie uzyskać zasięg kodu. Gdy próbowałem wykluczyć bibliotekę innej firmy (na przykład), uruchomienie analizy kodu powoduje ... brak. Bez błędów, bez ostrzeżeń, po prostu nic. Skomentuj to wykluczenie i wszystko znów działa. – sfuqua
po prostu dodaje angielską (en-us) wersję łącza MSDN dostarczoną przez @habakuk http://msdn.microsoft.com/en-us/library/vstudio/jj635153.aspx – kmoormann