Как я могу принудительно исключить определенные сборки из покрытия кода?
Я пытаюсь ограничить сборки, которые анализируются в процедуре покрытия кода в 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.