2015-05-15 4 views
5

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

enter image description here

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

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

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

enter image description here

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

ответ

2

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

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

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

+0

Я тоже пробовал, и он тоже не работал. Я думаю, что я пробовал все возможные варианты исключений, содержащих слово AutoMapper с теми же результатами. Что касается вашего предложения об исключении всего, я не думаю, что это сработает, поскольку список исключений обрабатывается _after_ включения, поэтому ничего не будет выбрано. – julealgon

+0

@julealgon Вы также попытались добавить этот '. * AutoMapper. *' в раздел 'Exclude'/element? – mguassa

0

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

+0

Да, я установил файл runsettings правильно в определении сборки тогда. Спасибо за вклад, но вы, вероятно, должны рассмотреть вопрос о таких вопросах в комментариях, а не в ответе вроде этого. – julealgon

+0

Мой плохой. Не имеет ничего нового, чтобы отвечать на все вопросы здесь. Спасибо за руководство. –