Найдите неиспользуемый код
Мне нужно провести рефакторинг большого 9X_c-sharp приложения C#, и я обнаружил множество функций, которые 9X_c#-language никогда не используются. Как проверить наличие 9X_refactoring неиспользуемого кода и удалить все неиспользуемые 9X_.cs-file функции?
- возможный дубликат [Какие инструменты и методы вы ...
Ответ #1
Ответ на вопрос: Найдите неиспользуемый код
Да, это делает ReSharper. Щелкните правой 9X_c# кнопкой мыши свое решение и выберите «Найти 9X_c#.net проблемы с кодом». Один из результатов - «Неиспользуемые 9X_visual-c# символы». Это покажет вам классы, методы 9X_c-sharp и т. Д., Которые не используются.
- Мы используем инъекцию зависимостей. В результате все выгляд ...
Ответ #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 обращается к ним.
- Еще одно предостережение, если ваше приложение - asp.net, с NDepend вам нужно будет предварительно ...
Ответ #3
Ответ на вопрос: Найдите неиспользуемый код
Resharper хорош для этого, как утверждали 9X_dot-net другие. Однако будьте осторожны, эти инструменты 9X_.net-framework не находят вам код, который используется 9X_dotnet при отражении, например не может знать, НЕ 9X_refactor используется ли какой-то код при отражении.
Ответ #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_.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.
Ответ #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
Ответ на вопрос: Найдите неиспользуемый код
ReSharper отлично справляется с поиском неиспользуемого 9X_visual-c# кода.
В VS IDE можно щелкнуть определение 9X_c# правой кнопкой мыши и выбрать "Найти 9X_c-sharp все". Ссылки », хотя это работает только 9X_dotnet на уровне решения.
Ответ #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.
Ответ #8
Ответ на вопрос: Найдите неиспользуемый код
Я наткнулся на AXTools CODESMART .. Попробуйте 9X_.net хоть раз. Используйте анализатор кода в 9X_c#.net разделе обзоров, он перечислит мертвые локальные 9X_visual-c# и глобальные функции вместе с другие вопросы.
-
13
-
7
-
2
-
5
-
3
-
2
-
3
-
4
-
12
-
4
-
11
-
7
-
8
-
8
-
4
-
6
-
3
-
7
-
3
-
3
-
1
-
1
-
3
-
2
-
6
-
14
-
20
-
11
-
18
-
41
-
7
-
11
-
19
-
19
-
14
-
5
-
6
-
17
-
2
-
4
-
7
-
8
-
5
-
9
-
11
-
18
-
9
-
16
-
3
-
11