Как я могу принудительно исключить определенные сборки из покрытия кода?

Я пытаюсь ограничить сборки, которые анализируются в процедуре покрытия кода в TFS, с помощью файла runsettings, но некоторые сборки требуют анализа, даже если я их явно исключаю.

Это мой ток runsettings содержимое файла:

<?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>

Но когда я запускаю покрытие кода из Visual Studio для тестирования этого файла, анализ все равно показывает мне другие сборки, которые не соответствуют моему фильтру, такие как AutoMapper и CacheManager:

Обратите внимание, что мои настройки уже исключают эти сборки по умолчанию, но даже тогда я пытался явно исключить их безрезультатно, например так:

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

Я перепробовал все варианты регулярных выражений, от менее ограничивающего (используя. *) До наиболее ограничивающего (как в этом примере). Эти сборки загрязняют отчет, который я получаю в сводке сборки TFS, и я хотел бы удалить их из анализа. Это полный вывод, который я получил от TFS, который, очевидно, совершенно бесполезен:

Мне удалось удалить большинство из них с помощью этого файла конфигурации.runsettings, но как мне убедиться, что эти выбросы там тоже не отображаются? Почему они вообще отображаются в первую очередь, учитывая, что они вообще не были сопоставлены моими фильтрами включения?

2 ответа

Я думаю, что . в Automapper.dll вызывает проблему. Не могли бы вы попробовать использовать

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

Для вашего случая исключить все по умолчанию вы должны просто использовать .*\.dll в модуле пути исключений.

Это может показаться очевидным, но обновили ли вы свое определение сборки для включения файла.runsettings? Одно дело включить CodeCoverage в вашей сборке, но вы должны указать путь к файлу.runsettings.

Другие вопросы по тегам