Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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