2009-03-05 3 views
6

У меня есть приложение C# с Visual Studio 2005. В коде есть около 300 KLOC, которые были оскорблены в течение 3 лет.Очистка нежелательного кода C#

Когда я проходил через код, выяснилось, что много неиспользуемых функций/методов/свойств. Его невозможно очистить вручную (требуется проверка каждого члена, и если найдено никаких ссылок, удалите его.)

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

Я уверен, что кто-то его взломал раньше.

+1

Надеюсь, приложение не использует методы отражения для вызова. – kenny

ответ

13

Resharper имеет функцию «Чистый код» и дает довольно хорошее представление о том, какие методы/классы не используются.

+0

Я не уверен, что это автоматизировано или нет ... но Resharper указывает, имеет ли метод какие-либо ссылки. –

4

С помощью CQL вы можете запросить базу кода с помощью NDepend, чтобы узнать, какие методы и классы не используются.

+0

NDepend поможет вам еще лучше понять кодовую базу, предоставив вам информацию о большинстве используемых типов, зависимости между типами, прямыми и косвенными зависимостями, измеренной сложностью типов и методов и т. Д. – flq

0

1-я повторная резка, как и другие.

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

4

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

Самым безопасным является запуск ваших модульных тестов (у вас уже есть эти права?) До и после рефакторинга, чтобы все работало.

0

Я использовал Gendarme (как FxCop), чтобы определить, какой код не вызывался. AFAIK не может быть автоматизирован, но по крайней мере вам не нужно идти по строкам.

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