Я использую специальный файл runsettings для контроля того, какие проекты проверяются для покрытия кода. Я использовал шаблон по умолчанию, предоставленный Microsoft, и до сих пор смог исключить элементы, которые я хочу, без проблем. Следующее действие - исключить из охвата кода автогенерируемые классы веб-прокси, созданные Visual Studio при добавлении ссылки на службу.
Казалось бы, что-то, что должно работать с шаблоном шаблонов стандартных по умолчанию, поскольку в нем есть раздел, который выглядит так:
<Attributes>
<Exclude>
<!-- Don’t forget "Attribute" at the end of the name -->
<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>
Все классы, созданные при добавлении ссылки на службу, украшаются GeneratedCodeAttribute, поэтому все они должны быть исключены. Тем не менее, когда я запускаю покрытие кода, они не игнорируются, поэтому заголовок покрытия кода содержит большой блок незакрытого кода. Я экспериментировал с регулярным выражением несколько раз, пытаясь заставить его правильно выбрать атрибут безрезультатно.
Буду признателен за предложения о том, как: - получить исключение этого атрибута для работы - альтернатива, которая не требует от меня исключить весь проект или делает файл runsettings неэквивалентным (мы хотим повторно использовать этот базовый файл для всех проектов без особых изменений)
FYI - хотя я понимаю, что есть другие инструменты для покрытия кода, моя цель состоит в том, чтобы заставить Visual Studio работать, поэтому предложения о переключении на другой инструмент мне не помогают в этом случае.