Resharper - Kullanılmayan tüm sınıfları bulun


122

Dosyayı sağ tıklayıp "Kullanımları Bul" seçeneğini seçerek tek bir dosyanın kullanılmayan referanslarını nasıl bulacağımı biliyorum. Projemdeki kullanılmayan tüm sınıfların veya dosyaların listesini görebilmemin veya alabilmemin bir yolu var mı ?


2
Bunun için geçmişte ndepend'i kullandım.
Cine

Yanıtlar:


195

Önce "Çözümdeki Hataları Analiz Et" i etkinleştirin (durum çubuğundaki Yeniden Paylaşım simgesine sağ tıklayın).

Ardından çözüm düğümünü sağ tıklayın ve "Kod Sorunlarını Bul" u seçin. "İnceleme sonuçları" araç penceresinde, kullanılmayan tüm sınıfları (ve daha birçok kullanılmayan sembolü) almak için "Sorun türü" ne göre gruplayabilir ve "Tür veya tür üyesi hiçbir zaman kullanılmaz" ifadesini arayabilirsiniz.

İkinci bir seçenek ("Çözümdeki Hataları Analiz Et" seçeneğini etkinleştirdikten sonra), kullanılmayan herhangi bir sınıfa gitmek, Alt + Enter tuşuna basmak, "'Üye yazın veya yazın ...' için seçenekler incelemek" | Bu türdeki tüm kod sorunlarını bulun | Tüm çözüm.

İnceleme sonuçları penceresi örneği


41
Kullanılmayan sınıflar / Yöntemler, "Sembol Bildirimlerindeki Artıklıklar" altında "Tür veya tür üyesi asla kullanılmaz" altında geliyor. Bunun sürüm değişikliğinden mi kaynaklandığından emin değilim veya ben farklı şekilde bakıyorum.
12'de boğmaca

4
Bu, Windows 8'de VS2013'te Resharper 7.1 veya Windows 7'de VS2012'yi kullanan herhangi bir kategori altında kullanılmayan sınıfları döndürmedi.
Sam Jones

1
En azından ReSharper 8'de, sonuçları almak için "Çözümdeki Hataları Analiz Et" seçeneğini etkinleştirmeniz gerekmez.
Pieter van Ginkel

@SamJones: haklısınız .. Resharper 8.1 altında kullanılmayan sınıfları da geri
getirmiyor

3
Yeniden Paylaşım 10: Bu rapor, kullanılmayan sınıfları göstermez. Çözüm:
Kodda

17

@Ulrichc'in çözümü kulağa mükemmel geliyor ve Castle veya Ninject gibi herhangi bir Bağımlılık Enjeksiyon çerçevesi kullanmadığınız küçük ila orta ölçekli projeler için iyi çalışıyor, ancak ya DI kapsayıcı [örneğin Castle] kullanıyorsanız ve aşağıdaki gibi bir şeye sahipseniz:

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());
    }
}

Gördüğünüz gibi RegisterFromAssembly, derlemenin içindeki tüm türlerden geçer ve körü körüne [yöntemler parametresine göre] bunları Çalıştırma zamanında kapsayıcıya ekler.

Kapsayıcılarınızın içinde kayıtlı veya çözülmüş türler için gezinme sağlayan Agent Mulder eklentisi gibi bir şeye ihtiyacınız olacak . Bu yine görsel olarak [muhtemelen tasarım zamanı] işe yarayabilir, ancak kullanılmayan sınıfı her kaldırdığınızda, güvende olduğunuzdan% 80 emin olmak için uygulamanızdaki [olası her katman] içindeki tüm testleri çalıştırmadığınız sürece gerçekten emin olamazsınız. Hikayenin ahlaki: Bir sınıf, Yeniden Paylaşım'a alışkın görünmeyebilir, ancak Bağımlılık Enjeksiyonunu kullandığınızda yeniden dirilebilir.


3
Sadece DI değil, herhangi bir yansıma kullanımı için bu çözüm başarısız olabilir.
Mohayemin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.