Найдите неиспользованный код [закрытым]

206
задан FastAl 24 September 2015 в 11:44
поделиться

7 ответов

Да, ReSharper делает это. Щелкните правой кнопкой мыши свое решение и выберите «Найти проблемы с кодом». Один из результатов - «Неиспользуемые символы». Это покажет вам классы, методы и т. Д., Которые не используются.

218
ответ дан 23 November 2019 в 04:49
поделиться

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

Один большой инструмент придите на ум:

NDepend - этот инструмент просто удивителен. Это берет некоторое время к grok, и после первых 10 минут я думаю, что большинство разработчиков просто говорит, "Завинчивают его!" и удалите приложение. Как только Вы получаете хорошее ощущение NDepend, это дает Вам удивительное понимание тому, как связаны Ваши приложения. Проверьте его: http://www.ndepend.com/ . Самое главное этот инструмент позволит Вам методам просмотра, которые не имеют никаких прямых вызывающих сторон. Это также покажет Вам инверсию, полное дерево вызова для любого метода в блоке (или даже между блоками).

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

28
ответ дан Mitch Wheat 23 November 2019 в 04:49
поделиться

Resharper хорош для этого как другие, указали. Будьте осторожны, хотя, эти инструменты не находят, что Вы кодируете, который используется отражением, например, не может знать, не используется ли некоторый код отражением.

16
ответ дан mmiika 23 November 2019 в 04:49
поделиться

ReSharper делает отличную работу по нахождению неиспользованного кода.

В IDE VS, можно щелкнуть правой кнопкой по определению и выбрать 'Find All References', хотя это только работает на уровне решения.

4
ответ дан Mitch Wheat 23 November 2019 в 04:49
поделиться

Истина - то, что инструмент никогда не может давать Вам, 100%-й определенный ответ, но инструмент покрытия может дать Вам довольно хороший шанс за деньги.

, Если Вы рассчитываете со всесторонним комплектом модульного теста, чем Вы, может использовать инструмент тестового покрытия для наблюдения точно, какие строки кода не выполнялись во время тестового прогона. Необходимо будет все еще проанализировать код вручную: или устраните то, что Вы полагаете, что мертвый код или тест записи улучшают тестовое покрытие.

Один такой инструмент NCover с предшественником с открытым исходным кодом на Sourceforge. Другая альтернатива PartCover.

Выезд этот ответ на stackoverflow.

1
ответ дан Community 23 November 2019 в 04:49
поделиться

FXCop является анализатором кода... Это действительно намного больше, чем находит неиспользованный код. Я использовал FXCop некоторое время и был так потерян в его рекомендациях, что я удалил его.

я думаю, что NDepend похож на более вероятного кандидата.

0
ответ дан 23 November 2019 в 04:49
поделиться

Как указал Джефф, инструмент NDepend может помочь найти неиспользуемые методы, поля и типы.

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

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

// <Name>Dead Methods</Name>
warnif count > 0 
from m in Application.Methods where !m.MethodsCallingMe.Any()
select m

NDepend rule to find unused methods (dead methods)

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

] NDepend интегрируется в Visual Studio 2017, 2015, 2013, 2012, 2010, поэтому эти правила можно проверить/просмотреть/отредактировать прямо внутри IDE. Инструмент также можно интегрировать в ваш процесс CI, и он может создавать отчеты, в которых будут показаны нарушенные правила и элементы кода виновника. У NDepend также есть расширение VS Team Services.

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

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

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

Отказ от ответственности: я работаю в компании NDepend.

15
ответ дан 23 November 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: