Как найти код, который вызывается только тестами - PullRequest
8 голосов
/ 21 сентября 2010

Иногда я просматриваю некоторый код, я ищу использование метода (используя resharper) и обнаруживаю, что он вызывается только тестами. Так что это эффективно избыточно, и я могу удалить его и методы, которые его вызывают.

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

У меня есть полная версия resharper, а также пробная версия NDepend, но я не узнал, как использовать любой из них, чтобы получить желаемый результат (без оплаты за него). Я подозреваю, что это возможно с полной версией NDepend, но есть ли другие инструменты, о которых люди знают?

Если контекст помогает, решением является веб-сайт ASP.net, большая часть функций которого обрабатывается службой WCF. Таким образом, единственными действительными точками входа в основную часть кода являются методы обслуживания. Испытания проводятся в отдельных проектах.

Я получил награду, потому что уверен, что кто-то другой уже имел и решил эту проблему раньше!

Ответы [ 3 ]

4 голосов
/ 27 сентября 2010

Ручной поиск с помощью NDepend должен работать с Dependency Matrix.Там вы можете увидеть, какие методы используются только сборочными тестами.

Я не уверен, что вы можете написать собственные запросы CQL с помощью пробной версии.Но в версии Pro вы можете использовать запрос, подобный следующему:

SELECT METHODS WHERE IsUsedBy "ASSEMBLY:NAME_OF_THE_UNIT_TEST_ASSEMBLY" 
AND !(IsUsedBy "ASSEMBLY:NAME_OF_ANOTHER_ASSEMBLY" OR IsUsedBy "ASSEMBLY:ANOTHER_NAME")

Чтобы это работало, вы должны создать проект NDepend, который знает все ваши сборки.

Для NAME_OF_THE_UNIT_TEST_ASSEMBLY вы должны вставить свою сборку модульного теста, а во второй части вы должны указать сборки кода производства с IsUsedBy и отделить их OR.

2 голосов
/ 29 сентября 2010

Нетехнический подход состоит в том, чтобы временно удалить тестовый проект из вашего решения, а затем использовать анализ кода Visual Studio (или FxCop), чтобы найти любые методы, которые не вызываются чем-либо еще.

0 голосов
/ 21 сентября 2010

Вы можете использовать NDepend с некоторыми пользовательскими запросами ... Это просто не в моей голове, никогда не использовал его именно для этого, но оно должно работать.

...