Я знаю, як знайти невикористані посилання на один файл, клацнувши правою кнопкою миші на файл та вибравши опцію «Знайти користування». Чи є спосіб я побачити або отримати список усіх невикористаних класів або файлів у своєму проекті?
Я знаю, як знайти невикористані посилання на один файл, клацнувши правою кнопкою миші на файл та вибравши опцію «Знайти користування». Чи є спосіб я побачити або отримати список усіх невикористаних класів або файлів у своєму проекті?
Відповіді:
Спочатку увімкніть "Аналіз помилок у вирішенні" (клацніть правою кнопкою миші на піктограмі Resharper на панелі стану).
Потім клацніть правою кнопкою миші вузол рішення та виберіть "Знайти проблеми з кодом". У вікні інструменту "Результати перевірки" ви можете згрупуватися за "Тип випуску" і шукати "Тип або член типу ніколи не використовується", щоб отримати всі невикористані класи (та багато інших невикористаних символів).
Другий варіант (після ввімкнення "Аналіз помилок у рішенні") - це перейти до будь-якого невикористаного класу, натисніть Alt + Enter, виберіть "Параметри для 'Тип або введіть член ...' перевірка" | Знайти всі проблеми такого коду | Ціле рішення.
Рішення від @ulrichc звучить ідеально і прекрасно працює для малих та середніх вагомих проектів, у яких ви не використовуєте жодної структури введення залежностей, наприклад, 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 проходить всі типи всередині збірки і сліпо [на основі параметра методу] додає їх до контейнера під час виконання.
Вам знадобиться щось на зразок плагіна агента Малдера, який забезпечує навігацію для типів, зареєстрованих або вирішених усередині ваших контейнерів. Це знову-таки може візуально [час проектування можливо] спрацювати, але ви насправді не будете впевнені, якщо щоразу, коли ви видаляєте невикористаний клас, ви запускаєте всі тести всередині вашої програми [кожного можливого шару], щоб бути на 80% впевненим, що ви безпечні. Мораль розповіді: клас може звучати невикористаним для Resharper, але він може бути відроджений, коли ви використовуєте Dependency Injection.