Найдите неиспользуемый код

Мне нужно провести рефакторинг большого 9X_c-sharp приложения C#, и я обнаружил множество функций, которые 9X_c#-language никогда не используются. Как проверить наличие 9X_refactoring неиспользуемого кода и удалить все неиспользуемые 9X_.cs-file функции?

221
3

  • возможный дубликат [Какие инструменты и методы вы ...
8
Общее количество ответов: 8

Ответ #1

Ответ на вопрос: Найдите неиспользуемый код

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

228
7

  • Мы используем инъекцию зависимостей. В результате все выгляд ...

Ответ #2

Ответ на вопрос: Найдите неиспользуемый код

Это отличный вопрос, но имейте в виду, что 9X_csharp вы здесь попадаете в опасные воды. Когда 9X_dotnet вы удаляете код, вам придется часто компилировать 9X_refactoring и тестировать.

На ум приходит один отличный 9X_dot-net инструмент:

NDepend - инструмент просто потрясающий. Это 9X_visual-c# займет некоторое время, и после первых 10 9X_.cs-file минут, я думаю, большинство разработчиков 9X_.cs-file просто скажут: «К черту!» и удалите приложение. Как 9X_refactoring только вы познакомитесь с NDepend, вы получите 9X_c#-language потрясающее представление о том, как связаны 9X_dotnet ваши приложения. Проверьте это: http://www.ndepend.com/. Самое 9X_.net главное, этот инструмент позволит вам просматривать 9X_refactor методы, у которых нет прямых вызовов. Он 9X_.net-framework также покажет вам обратное, полное дерево 9X_refactor вызовов для любого метода в сборке (или 9X_csharp даже между сборками).

Какой бы инструмент 9X_dot-net вы ни выбрали, это непростая задача. Особенно, если 9X_dotnet вы имеете дело с общедоступными методами 9X_c#-language в сборках библиотечных типов, поскольку 9X_.net вы никогда не узнаете, когда приложение 9X_.net-framework обращается к ним.

29
1

  • Еще одно предостережение, если ваше приложение - asp.net, с NDepend вам нужно будет предварительно ...

Ответ #3

Ответ на вопрос: Найдите неиспользуемый код

Resharper хорош для этого, как утверждали 9X_dot-net другие. Однако будьте осторожны, эти инструменты 9X_.net-framework не находят вам код, который используется 9X_dotnet при отражении, например не может знать, НЕ 9X_refactor используется ли какой-то код при отражении.

16
0

Ответ #4

Ответ на вопрос: Найдите неиспользуемый код

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

Чтобы 9X_c# уточнить, NDepend предлагает написать Code Rule over LINQ Query (CQLinq). Предлагается 9X_refactoring около 200 default code rules, 3 из которых предназначены для обнаружения 9X_c#-language неиспользуемого / мертвого кода

В основном такое правило для обнаружения 9X_c# неиспользуемого метода, например, выглядит 9X_c-sharp так:

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

9X_Найдите неиспользуемый код_dotnet

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

  • Potentially dead Types (следовательно, обнаружение неиспользуемого класса, структуры, интерфейса, делегата ...)
  • Potentially dead Methods
  • Potentially dead Fields

NDepend 9X_c# интегрируется в Visual Studio 2017,2015, 2013, 2012, 2010, поэтому 9X_csharp эти правила могут быть checked/browsed/edited right inside the IDE. Инструмент также 9X_refactor может быть интегрирован в ваш процесс CI, и 9X_dotnet он может создавать reports, который будет показывать 9X_visual-c# нарушенные правила и элементы кода виновных. У 9X_.net-framework NDepend также есть VS Team Services extension.

Если вы щелкнете по 9X_c-sharp этим 3 ссылкам выше, ведущим к исходному 9X_csharp коду этих правил, вы увидите, что те, которые 9X_refactor касаются типов и методов, немного сложны. Это 9X_dotnet связано с тем, что они обнаруживают не только 9X_.cs-file неиспользуемые типы и методы, но также типы 9X_refactor и методы, используемые только неиспользуемыми 9X_refactoring мертвыми типами и методами (рекурсивными).

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

В дополнение к этим 3 правилам я 9X_refactoring бы посоветовал измерять покрытие кода тестами 9X_c# и стремиться к полному охвату. Часто вы 9X_.cs-file видите, что код, который не может быть покрыт 9X_c#.net тестами, на самом деле является неиспользованным / мертвым кодом, который 9X_visual-c# можно безопасно отбросить. Это особенно 9X_refactor полезно в сложных алгоритмах, где неясно, достижима 9X_refactor ветвь кода или нет.

Заявление об отказе от ответственности: я работаю в NDepend.

15
0

Ответ #5

Ответ на вопрос: Найдите неиспользуемый код

Я также хотел бы упомянуть, что использование 9X_dot-net IOC, также известного как Unity, может ввести 9X_c#.net в заблуждение эти оценки. Возможно, я ошибся, но 9X_c#.net несколько очень важных классов, которые 9X_c-sharp создаются через Unity, похоже, не имеют 9X_dotnet экземпляров, насколько может судить ReSharper. Если 9X_c#-language бы я следовал рекомендациям ReSharper, меня 9X_c# бы облажали!

6
0

Ответ #6

Ответ на вопрос: Найдите неиспользуемый код

ReSharper отлично справляется с поиском неиспользуемого 9X_visual-c# кода.

В VS IDE можно щелкнуть определение 9X_c# правой кнопкой мыши и выбрать "Найти 9X_c-sharp все". Ссылки », хотя это работает только 9X_dotnet на уровне решения.

4
0

Ответ #7

Ответ на вопрос: Найдите неиспользуемый код

На самом деле этот инструмент никогда не 9X_c#-language может дать вам 100% -ный ответ, но инструмент 9X_dot-net покрытия может дать вам неплохую прибыль 9X_.net-framework за деньги.

Если у вас есть исчерпывающий 9X_.net-framework набор модульных тестов, вы можете использовать 9X_c#.net инструмент покрытия тестами, чтобы точно 9X_c#-language увидеть, какие строки кода не были выполнены 9X_.net во время выполнения теста. Вам все равно 9X_refactoring придется анализировать код вручную: либо 9X_refactoring устраните то, что вы считаете мертвым кодом, либо 9X_refactor напишите тест, чтобы улучшить охват тестированием.

Одним 9X_refactor из таких инструментов является NCover с предшественником 9X_c# с открытым исходным кодом на Sourceforge. Другой альтернативой 9X_visual-c# является PartCover.

Посмотрите этот answer на stackoverflow.

1
0

Ответ #8

Ответ на вопрос: Найдите неиспользуемый код

Я наткнулся на AXTools CODESMART .. Попробуйте 9X_.net хоть раз. Используйте анализатор кода в 9X_c#.net разделе обзоров, он перечислит мертвые локальные 9X_visual-c# и глобальные функции вместе с другие вопросы.

1
0