2010-09-21 1 views
8

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

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

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

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

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

+1

Некоторые из этих тестовых кодов, скорее всего, являются издевательствами, заглушками и т. Д. – CaffGeek

+0

@ В моих тестовых проектах содержатся все издевательства и заглушки и т. Д. В этом вопросе меня больше беспокоит производственный код. –

ответ

4

Взаимодействие с 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 и разделены с ИЛИ.

+0

Насколько я могу судить, мне нужна полная версия для запуска пользовательских запросов. Я смотрю на создание пользовательского правила FxCop по строкам вашего запроса (намного сложнее на FxCop, хотя ..) –

+2

Было бы здорово, если бы вы могли опубликовать правило – Noffls

0

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

+0

Я изучил это, и похоже, что мне, вероятно, придется получить версию оплаты, чтобы иметь возможность добавлять свои собственные запросы. –

2

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

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^