Существует ли инструмент для поиска функций, на которые нет ссылок (мертвый, устаревший код) в приложении C#?[закрыто]

StackOverflow https://stackoverflow.com/questions/65585

  •  09-06-2019
  •  | 
  •  

Вопрос

Я хочу удалить foo(), если foo() ниоткуда не вызывается.

Это было полезно?

Решение

Жандарм обнаружит частные методы без исходящих вызовов.Доступна кроссплатформенность, и последняя версия поддерживает "ИзбегайтеУнколледПриватеКодеРуле".

FXCop обнаружит общедоступные/защищенные методы без исходящих вызовов.Однако FxCop не обнаруживает все методы без вышестоящих вызывающих объектов, поскольку он предназначен для проверки того, является ли ваш код частью библиотеки, поэтому открытые члены не учитываются. Вы можете использовать NDepend для поиска общедоступных участников без восходящих вызывающих абонентов, о чем я подробно рассказываю здесь, в другом ответе StackOverflow..

(редактировать:добавлена ​​информация о Жандарме, который на самом деле делает то, что спросил спрашивающий)

Другие советы

NDepend также сообщит о потенциально неиспользуемом коде.

Имейте в виду, что Resharper (и, возможно, другие подобные инструменты) не будет выделять неиспользуемые методы, если они отмечены как public.Инструмент статического анализа кода не сможет проверить, используются ли методы вашей сборки другими сборками за пределами вашего решения.Поэтому первым шагом в отсеивании неиспользуемых методов является уменьшение их видимости до private или internal.

Да, MZ-Инструменты В надстройке есть функция проверки мертвого кода.

Решарпер делает это, и не только с помощью методов.Он также делает это с помощью операторов, переменных и т. д.

Инструмент NDepend может помочь найти неиспользуемый код в базе кода .NET. Отказ от ответственности:Я один из разработчиков этого инструмента.

NDepend предлагает написать Правило кода для запроса LINQ (CQLinq).Вокруг 200 правил кода по умолчанию предложены, 3 из них посвящены неиспользуемый/мертвый код обнаружение:

NDepend интегрирован в Visual Studio, поэтому эти правила можно проверено/просмотрено/редактировано прямо внутри IDE.Этот инструмент также можно интегрировать в ваш процесс CI и создавать отчеты который покажет нарушенные правила и виновные элементы кода.

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

Это статический анализ, отсюда и префикс Потенциально в именах правил.Если используется элемент кода только в результате отражения эти правила могут считать его неиспользованным, но это не так.

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

Что ж, если VS не делает этого изначально, простой метод — щелкнуть правой кнопкой мыши по методу и выбрать «найти все ссылки».Если есть только одна ссылка (там, где она объявлена), скорее всего, она больше нигде не используется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top