Ответ 1
Вы можете создать генератор кода, который испускает частичные классы с атрибутом DebuggerNonUserCode
.
Я использую Visual Studio 2010 и хотел бы исключить сгенерированный ссылочный код службы из моей статистики покрытия кода.
Я нашел статью до 2010 года, в которой упоминаются атрибуты DebuggerNonUserCode и DebuggerHidden. Я пробовал это, он работает, как рекламируется. DebuggerNonUserCode устанавливается на уровне класса, но с 50+ классами, сгенерированными в каждом из сгенерированных служебных файлов кода ссылки, это не привлекательный вариант.
Есть ли у кого-нибудь альтернативные решения?
Вы можете создать генератор кода, который испускает частичные классы с атрибутом DebuggerNonUserCode
.
Сгенерированные классы являются частичными. Если вы создаете новый класс в своем проекте с тем же пространством имен и объявлением класса, вы можете добавить атрибут [ExcludeFromCodeCoverage]
в свой неполный класс. Таким образом вам не нужно возвращаться и редактировать файл Reference.cs
всякий раз, когда вы обновляете свою ссылку.
В Reference.cs
вы можете найти существующий атрибут, например [System.Diagnostics.DebuggerStepThroughAttribute()]
, и выполнить поиск и заменить на [System.Diagnostics.DebuggerStepThroughAttribute()][System.Diagnostics.DebuggerNonUserCode()]
.
Главный недостаток заключается в том, что вы должны повторять это каждый раз, когда вы обновляете ссылку.
Я не понимаю, почему MS не делает инструмент покрытия кода достаточно умным, чтобы пропустить код сгенерированного сервисного кода.
System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage можно использовать поверх класса. Это плохой вариант, так как вам нужно повторить это в любое время, когда вы обновляете свой код. Возможно, Microsoft может сделать это для нас автоматически при создании ссылок на службы, типов фреймворков и т.д....