Как игнорировать сгенерированный код из данных покрытия кода - PullRequest
17 голосов
/ 26 июля 2010

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

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

Ответы [ 4 ]

14 голосов
/ 18 февраля 2011

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

3 голосов
/ 30 сентября 2010

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

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

3 голосов
/ 03 декабря 2010

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

2 голосов
/ 06 августа 2010

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

...