Атрибут ExcludeFromCodeCoverage с dotCover в TeamCity 7

Я пытаюсь более точно отразить покрытие кода в проекте, над которым я работаю, но столкнулся с проблемой, когда дело доходит до классов, сгенерированных Entity Framework. Я хотел бы исключить конструкторы этих классов из статистики покрытия, поэтому я добавил атрибут ExcludeFromCodeCoverage в шаблон T4, который регенерирует классы, как я и ожидал, например.

using System.Diagnostics.CodeAnalysis;

public partial class Address
{
    [ExcludeFromCodeCoverage]
    public Address()
    {
        this.Person = new HashSet<Person>();
    }

    ...
}

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

Из того, что я прочитал, ExcludeFromCodeCoverage следует автоматически исключать при использовании dotCover, но я не уверен, что это правда при работе через TeamCity, поэтому я включил фильтр, как указано в Синтаксис фильтра атрибутов для покрытия кода в TeamCity (попробовал ExcludeFromCodeCoverage и ExcludeFromCodeCoverageAttribute) безуспешно.

Спасибо


person adam197    schedule 25.10.2013    source источник


Ответы (1)


У меня такая же версия TeamCity, как и у вас. Он отлично работает для меня. Вы должны проверить правильность вашей конфигурации.

Вы должны указать имя атрибута в разделе Фильтры атрибутов:. В вашем случае текст должен быть:

-:System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute

Отмеченные участники не должны отображаться (для классов) или помечаться зеленым/красным цветом в вашем отчете о покрытии TeamCity.

Дополнительные инструкции можно найти здесь

У меня была аналогичная проблема. Я исключил сгенерированный класс из покрытия, добавив к моему шагу сборки «Покрытие кода»:

-:assembly=<assembly name>*;type=*<part of generated classname>*;method=*

person kravasb    schedule 29.10.2013
comment
Этот комментарий не имеет прямого отношения к TeamCity и DotCover, но для тех, кто использует командную строку DotCover.exe, чтобы исключить код, отмеченный атрибутом ExcludeFromCodeCoverage, вы должны использовать следующий dotCover.exe analyse ... /AttributeFilters=System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute, вам не нужен синтаксис -:, как с параметром /Filters= . - person Tom Hall; 09.04.2016