9 ответов:
Да, для ReSharper делает это. Щелкните правой кнопкой мыши на своем решении и выберите "Найти проблемы с кодом". Одним из результатов является "неиспользуемые символы". Это покажет вам классы, методы и т. д.- это не используется.
Это отличный вопрос, но имейте в виду, что вы ступаете в опасные воды здесь. Когда вы удаляете код, вам нужно будет убедиться, что вы часто компилируете и тестируете.
один большой инструмент приходит на ум:
NDepend - этот инструмент Просто удивительно. Это занимает немного времени, чтобы grok, и после первых 10 минут я думаю, что большинство разработчиков просто говорят: "К черту!"и удалите приложение. Как только вы получите хорошее представление о NDepend, это даст вам удивительное представление о том, как ваши приложения в сочетании. Проверьте это:http://www.ndepend.com/. Самое главное, этот инструмент позволит вам просматривать методы, которые не имеют каких-либо прямых абонентов. Он также покажет вам обратное, полное дерево вызовов для любого метода в сборке (или даже между сборками).
какой бы инструмент вы ни выбрали, это не задача, чтобы принять легко. Особенно если вы имеете дело с общедоступными методами в сборках типа библиотеки, поскольку вы никогда не узнаете, когда приложение ссылается их.
Resharper хорош для этого, как и другие заявили. Будьте осторожны, хотя эти инструменты не находят вам код, который используется отражением, например, не может знать, если какой-то код не используется отражением.
как указал Джефф инструмент вопросом, что происходит может помочь найти неиспользуемые методы, поля и типы.
разработать немного, вопросом, что происходит, предлагает написать правило кода над запросом LINQ (CQLinq). Вокруг 200 правил кода по умолчанию предлагаются, 3 из них посвящены неиспользованных/мертвый код определение
в основном такое правило для обнаружения неиспользуемого метода например выглядит например:
// <Name>Dead Methods</Name> warnif count > 0 from m in Application.Methods where !m.MethodsCallingMe.Any() select mно это правило наивно и вернет тривиальные ложные срабатывания. Есть много ситуаций, когда метод никогда не вызывается, но он не используется (точка входа, конструктор класса, финализатор...) вот почему 3 правила по умолчанию более уточнил:
- потенциально мертвого (следовательно, обнаружьте неиспользуемый класс, структуру, интерфейс, делегат...)
- потенциально мертвых Методы
- потенциально мертвые поля
NDepend интегрируется в Visual Studio 2017,2015, 2013, 2012, 2010, таким образом, эти правила могут быть проверять/просматривать/редактировать непосредственно в IDE. Этот инструмент также может быть интегрирован в процесс CI и он может построить отчеты это покажет нарушенные правила и элементы кода виновника. NDepend также имеет VS Team Services extension.
Если вы нажмете эти 3 ссылки выше к исходному коду этих правил, вы увидите, что те, которые касаются типов и методов, немного сложны. Это происходит потому, что они обнаруживают не только неиспользуемые типы и методы, но и типы и методы, используемые только по неиспользуемым мертвым типам и методам (рекурсивным).
Это статический анализ, следовательно префикс потенциально в имена правила. Если используется элемент кода только через отражения, эти правила могут рассматривать его как неиспользуемый, что не так.
в дополнение к использованию этих 3 Правил, я бы посоветовал измерять покрытие кода тестами и стремиться к полному покрытию. Часто вы увидите, что код, который не может быть покрыт тестами, на самом деле неиспользованных/мертвый код, который можно спокойно выбросить. Это особенно полезно в сложных алгоритмах, где не ясно, достижима ли ветвь кода или нет.
отказ от ответственности: я работаю на Вопросом, что происходит.
Я бы также упомянул, что использование IOC aka Unity может ввести в заблуждение эти оценки. Возможно, я ошибся, но несколько очень важных классов, которые создаются через Unity, похоже, не имеют экземпляра, насколько может судить Решарпер. Если бы я следовал рекомендациям ReSharper, меня бы облили из шланга!
ReSharper делает большую работу по поиску неиспользуемого кода.
в VS IDE вы можете щелкнуть правой кнопкой мыши по определению и выбрать " Найти все Ссылок, хотя это работает только на уровне решения.
я наткнулся на AXTools CODESMART..Попробуй один раз. Использование анализатора кода в обзорах section.It перечислит мертвые локальные и глобальные функции вместе с иные вопросы.
FXCop-это анализатор кода... Это гораздо больше, чем найти неиспользуемый код. Я использовал FXCop на некоторое время, и был настолько потерян в своих рекомендациях, что я удалил его.
Я думаю, что NDepend выглядит как более вероятный кандидат.
правда в том, что инструмент никогда не может дать вам 100% определенный ответ, но инструмент покрытия может дать вам довольно хороший пробег за деньги.
Если вы считаете с полным набором модульных тестов, то вы можете использовать инструмент тестового покрытия, чтобы точно увидеть, какие строки кода не были выполнены во время выполнения теста. Вам все равно нужно будет проанализировать код вручную: либо устранить то, что вы считаете мертвым кодом, либо написать тест для улучшения тестового покрытия.
одним из таких средств является NCover, С открытым исходным кодом предшественника на Sourceforge. Другой альтернативой является PartCover.
зацените ответ на stackoverflow.

Comments