2015-05-15 27 views
5

Próbuję ograniczyć złożenia, które są analizowane w procedurze kodowania w TFS przy użyciu pliku runsettings, ale niektóre zestawy wymagają analizy, nawet jeśli jawnie je wykluczę.Jak wymusić wykluczenie niektórych zestawów z pokrycia kodu?

To jest moje obecne zawartość runsettings plików:

<?xml version="1.0" encoding="utf-8"?> 
<RunSettings> 
    <!-- Configurations for data collectors --> 
    <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> 
       <ModulePath>.*Cloud4Mobile.*</ModulePath> 
       </Include> 
       <Exclude> 
       <ModulePath>.*Tests.dll$</ModulePath> 
       <ModulePath>.*TestUtilities.dll$</ModulePath> 
       </Exclude> 
      </ModulePaths> 
      <CompanyNames> 
       <Include>.*Mobiltec.*</Include> 
      </CompanyNames> 
      </CodeCoverage> 
     </Configuration> 
     </DataCollector> 
    </DataCollectors> 
    </DataCollectionRunSettings> 
</RunSettings> 

Ale kiedy uruchomić pokrycia kodu z Visual Studio, aby przetestować ten plik, analiza nadal pokazuje mi inne zespoły, które nie pasują do mojego filtra, jak AutoMapper i CacheManager:

enter image description here

Zauważ, że moje ustawienia już wykluczyć te zespoły domyślnie, ale nawet wtedy starałem się jednoznacznie wykluczyć je na próżno, tak:

<Exclude> 
    <ModulePath>^AutoMapper.dll$</ModulePath> 
    ... 
</Exclude> 

Próbowałem tam wszystkich wersji regexu, od mniej restrykcyjnego (używając. *) Do najbardziej restrykcyjnego (jak ten przykład). Te podzespoły zanieczyszczają raport, który dostaję w podsumowaniu Build TFS i chciałbym je usunąć z analizy. Jest to pełna moc, że był już z TFS, co jest oczywiście zupełnie bezużyteczne:

enter image description here

udało mi się usunąć większość z tych, z tym plikiem konfiguracyjnym .runsettings, ale w jaki sposób mogę się upewnić tych odstających zrobić też tego nie widać? Dlaczego w ogóle pokazują się, biorąc pod uwagę, że nie są one w ogóle dopasowane do moich filtrów włączających?

Odpowiedz

2

Zgaduję, że przyczyną problemu jest . w Automapper.dll. Mógłbyś spróbować użyć

<Exclude> 
    <ModulePath>.*AutoMapper\.dll$</ModulePath> 

Dla Państwa przypadku wyłączenia wszystko domyślnie powinny po prostu użyć .*\.dll w modulepaths wykluczeń.

+0

Próbowałem też i to też nie działało. Myślę, że wypróbowałem każdą możliwą odmianę wykluczeń zawierających słowo AutoMapper z tymi samymi wynikami. Jeśli chodzi o sugestię dotyczącą wyłączenia wszystkiego, nie sądzę, że to zadziała, ponieważ lista wykluczeń jest przetwarzana po włączeniu, zatem nic nie zostanie wybrane. – julealgon

+0

@julealgon Czy próbowałeś także dodać '. * AutoMapper. *' do sekcji/elementu "Exclude"? – mguassa

0

Może wydawać się to oczywiste, ale czy zaktualizowałeś swoją definicję kompilacji tak, aby zawierała plik .runsettings? Włączanie CodeCoverage w twojej kompilacji to jedna rzecz, ale musisz podać ścieżkę do pliku .runsettings.

+0

Tak, ustawiłem plik runsettings poprawnie w definicji kompilacji. Dzięki za wiadomość, ale prawdopodobnie powinieneś rozważyć zadawanie tego rodzaju pytań w komentarzach, zamiast w takiej odpowiedzi. – julealgon

+0

Moja zła. Dość nowy sposób odpowiadania na pytania. Dzięki za wskazówki. –

Powiązane problemy