Resharper - Найти все неиспользуемые классы - PullRequest
118 голосов
/ 10 января 2011

Я знаю, как найти неиспользуемые ссылки на один файл, щелкнув правой кнопкой мыши по файлу и выбрав опцию «Найти использование». Можно ли как-нибудь просмотреть или получить список всех неиспользуемых классов или файлов в моем проекте?

Ответы [ 2 ]

188 голосов
/ 10 января 2011

Сначала включите «Анализ ошибок в решении» (щелкните правой кнопкой мыши значок Resharper в строке состояния).

Затем щелкните правой кнопкой мыши узел решения и выберите «Поиск проблем с кодом».В окне инструмента «Результаты проверки» вы можете группировать по «Типу проблемы» и искать «Тип или элемент типа никогда не используется», чтобы получить все неиспользуемые классы (и многие другие неиспользуемые символы).(после включения «Анализ ошибок в решении»), чтобы перейти к любому неиспользуемому классу, нажмите Alt + Enter, выберите «Опции для проверки« Введите или введите элемент ... »» |Найти все проблемы с кодом этого типа |Целое решение.

Inspection results window sample

17 голосов
/ 16 октября 2014

Решение от @ulrichc звучит идеально и отлично работает для небольших и средних проектов, в которых вы не используете Dependency Injection фреймворк, такой как Castle или Ninject, но что, если вы используете DI контейнер [Замок например], и у вас есть что-то вроде следующего:

public class IoC
{
    private WindsorContainer _container;

    private IoC()
    {
         _container = new WindsorContainer();
    }

    public static void RegisterFromAssembly(Assembly assembly, string classEndsWith, LifeTime lifeTime)
    {
        var lifestyle = ConvertLifeStyleType(lifeTime);

        _container.Register(AllTypes.FromAssembly(assembly)
                  .Where(type => type.Name.EndsWith(classEndsWith))
                  .WithService.AllInterfaces()
                  .Configure(c => c.LifeStyle.Is(lifestyle))
                  .WithService.FirstInterface());
    }
}

Как вы видите, RegisterFromAssembly просматривает все типы внутри сборки и вслепую [на основе параметра методов] добавляет их в контейнер во время выполнения.

Вам понадобится что-то вроде Agent Mulder плагин, который обеспечивает навигацию для типов, зарегистрированных или разрешенных внутри ваших контейнеров. Это опять-таки может визуально [время разработки возможно] сработать, но вы не будете в этом уверены, если каждый раз, когда вы удаляете неиспользуемый класс, вы запускаете все тесты внутри своего приложения [каждого возможного уровня], чтобы быть на 80% уверенными в своей безопасности. Мораль истории: класс может показаться неиспользованным для Ресарпера, но он может воскреснуть, когда вы используете Dependency Injection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...