Как игнорировать сгенерированный код из данных о покрытии кода

Я использую Visual Studio 2010 и хочу исключить сгенерированный справочный код службы из моей статистики покрытия кода.

Я нашел статья до 2010 г., в которой упоминается использование атрибутов DebuggerNonUserCode и DebuggerHidden. Я пробовал это, и он работает, как рекламируется. DebuggerNonUserCode устанавливается на уровне класса, но с 50+ классами, созданными в каждом из сгенерированных файлов справочного кода службы, это не привлекательный вариант.

Есть ли у кого-нибудь альтернативные решения?


person btlog    schedule 26.07.2010    source источник
comment
Спасибо, что решила мою проблему.   -  person Jonathan Allen    schedule 06.08.2010


Ответы (4)


Вы можете создать генератор кода, который генерирует частичные классы с атрибутом DebuggerNonUserCode.

person Jonathan Allen    schedule 06.08.2010
comment
К сожалению, стоимость создания генератора кода, тестирования и т. Д. Превосходит затраты на добавление этого вручную к существующему сгенерированному коду. Спасибо за идею. - person btlog; 09.08.2010

Сгенерированные классы являются частичными. Если вы создаете новый класс в своем проекте с тем же пространством имен и объявлением класса, вы можете добавить атрибут [ExcludeFromCodeCoverage] в свой частичный класс. Таким образом, вам не придется возвращаться и редактировать Reference.cs файл всякий раз, когда вы обновляете ссылку.

person Paul    schedule 18.02.2011

В Reference.cs вы можете найти существующий атрибут, например [System.Diagnostics.DebuggerStepThroughAttribute()], выполнить поиск и заменить его на [System.Diagnostics.DebuggerStepThroughAttribute()][System.Diagnostics.DebuggerNonUserCode()].
Главный недостаток состоит в том, что вам придется повторять это каждый раз, когда вы обновляете ссылку.

Я не понимаю, почему MS не делает инструмент покрытия кода достаточно умным, чтобы пропустить код, сгенерированный ссылкой на сервис.

person Kevin    schedule 30.09.2010

System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage можно использовать поверх класс. Это плохой вариант, так как вам нужно повторять это каждый раз, когда вы регенерируете свой код. Может быть, Microsoft сможет сделать это для нас автоматически при создании ссылок на службы, типов фреймворков и т. Д.

person beezler    schedule 03.12.2010