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

Я знаю, как найти неиспользуемые ссылки одного файла, щелкнув правой кнопкой мыши на файле и выбрав опцию "Найти использование". Есть ли способ увидеть или получить список all неиспользуемых классов или файлов в моем проекте?

Ответ 1

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

Затем щелкните правой кнопкой мыши по решению node и выберите "Найти проблемы с кодом". В окне инструмента "Результаты проверки" вы можете группировать "Тип проблемы" и искать "Тип или тип члена никогда не используется", чтобы получить все неиспользуемые классы (и еще много неиспользуемых символов).

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

Inspection results window sample

Ответ 2

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

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%. Мораль истории: класс может звучать неприменимо к Resharper, но он может быть воскрешен при использовании Injection Dependency.