Инструменты покрытия кода времени выполнения - PullRequest
3 голосов
/ 18 августа 2011

Я знаю, что существует ряд инструментов для анализа кода .NET и расчета покрытия, а также для определения классов / методов / свойств и т. Д., Которые никогда не будут затронуты.

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

Существуют ли какие-либо инструменты, которые работают скорее как профилировщики, в результате чего они прослушивают работающее приложение и регистрируют, какие классы / методы / свойства действительно были созданы и созданыпокрытие на основе этих данных.

Надеюсь, я все прояснил - спасибо в ожидании

Ответы [ 5 ]

2 голосов
/ 18 августа 2011

мы используем ncover, и он работает очень хорошо: http://www.ncover.com/. Но это коммерческая версия, или вы используете пробную версию, если вам просто нужна однажды.

1 голос
/ 20 августа 2011

В настоящее время существуют две версии с открытым исходным кодом, которые поддерживают среды выполнения .NET2 и .NET4

PartCover - это самая старая версия, но поддерживается только 32-разрядная версия (поддерживается teamcity)

и

OpenCover - это последняя версия, она снова поддерживает .NET2 и .NET4, но также поддерживает 64-разрядную версию, а также недавно добавила покрытие ветвей (хотя создание отчетов зависит от пользователя)

Оба OpenCover и PartCover могут использоваться с TypeMock и Moles, если вам нужно.

Коммерческие версии включают (но не ограничиваются ими)

NCover -самый известный

dotcover - хорошо интегрируется с командой города при юнит-тестировании

1 голос
/ 18 августа 2011

Вы можете использовать инструменты VS2010 Code Coverage - они действительно используют Instrumentation (что означает, что рефлексия не обманет). У Сайеда Аслама Баша есть запись в его блоге MSDN о том, как включить ее для ручного тестирования (что, как вам кажется, вам потребуется).

Просто помните, что вам нужно будет нажимать каждую функцию и т. Д. Во время ее работы; или просто подумайте дважды перед удалением кода - но это должно дать вам хорошую отправную точку.

0 голосов
/ 18 августа 2011

Не могу придумать инструмент, отличный от профилировщика, но как насчет использования ведения журнала?

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

Ведь рефлексивный вызов узнает, что делает.

0 голосов
/ 18 августа 2011

Clover.NET может сделать это.Но он коммерческий, и мне не удалось найти ссылку на версию .NET (я использовал ее несколько лет назад).

...