Resharper- Temukan semua kelas yang tidak digunakan

122

Saya tahu bagaimana menemukan referensi yang tidak terpakai dari satu file dengan mengklik kanan pada file tersebut dan memilih opsi "Temukan Penggunaan". Adakah cara agar saya dapat melihat atau mendapatkan daftar semua kelas atau file yang tidak digunakan dalam proyek saya?

Rocky Singh
sumber
2
Saya telah menggunakan ndependen untuk ini di masa lalu.
Cine

Jawaban:

195

Pertama aktifkan "Analisis Kesalahan Dalam Solusi" (klik kanan pada ikon Resharper di bilah status).

Kemudian klik kanan node solusi dan pilih "Temukan masalah Kode". Di jendela alat "Hasil pemeriksaan" Anda dapat mengelompokkan menurut "Jenis masalah" dan mencari "Jenis atau jenis anggota tidak pernah digunakan" untuk mendapatkan semua kelas yang tidak digunakan (dan banyak lagi simbol yang tidak digunakan).

Pilihan kedua (setelah mengaktifkan "Analisis Kesalahan Dalam Solusi") adalah pergi ke kelas yang tidak digunakan, tekan Alt + Enter, pilih "Pilihan untuk 'Jenis atau jenis anggota ...' inspeksi" | Temukan semua masalah kode jenis ini | Seluruh solusi.

Contoh jendela hasil pemeriksaan

ulrichb
sumber
41
Kelas / Metode yang tidak digunakan akan muncul di bawah "Jenis atau tipe anggota tidak pernah digunakan" di bawah "Redundansi dalam Deklarasi Simbol". Tidak yakin apakah ini karena perubahan versi, atau saya melihatnya secara berbeda.
bulltorious
4
Ini belum mengembalikan kelas yang tidak digunakan di bawah kategori apa pun menggunakan Resharper 7.1 di VS2013 di Windows 8 atau VS2012 di Windows 7.
Sam Jones
1
Setidaknya di ReSharper 8, Anda tidak harus mengaktifkan "Analisis Kesalahan Dalam Solusi" untuk mendapatkan hasil.
Pieter van Ginkel
@ SamJones: Anda benar .. itu tidak mengembalikan kelas yang tidak digunakan di bawah Resharper 8.1 juga ...
Revious
3
Resharper 10: Laporan ini tidak menunjukkan kelas yang tidak digunakan. Solusi: temukan beberapa kelas yang tidak terpakai dalam kode, dan lakukan "Temukan masalah serupa dalam solusi"
altumano
17

Solusi oleh @ulrichc terdengar sempurna dan berfungsi dengan baik untuk proyek kecil hingga kelas menengah di mana Anda tidak menggunakan kerangka kerja Dependency Injection seperti Castle atau Ninject tetapi bagaimana jika Anda menggunakan kontainer DI [Castle misalnya] dan Anda memiliki sesuatu seperti berikut ini:

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

Seperti yang Anda lihat RegisterFromAssembly menelusuri semua tipe di dalam assembly dan secara membabi buta [berdasarkan parameter metode] menambahkannya ke container saat Run-time.

Anda akan membutuhkan sesuatu seperti plugin Agent Mulder yang menyediakan navigasi untuk jenis yang terdaftar atau diselesaikan di dalam container Anda. Ini lagi mungkin secara visual [desain waktu mungkin] bekerja tetapi Anda tidak akan benar-benar yakin kecuali setiap kali Anda menghapus kelas yang tidak digunakan Anda menjalankan semua tes di dalam aplikasi Anda [setiap lapisan yang memungkinkan] untuk menjadi 80% yakin Anda aman. Pesan moral dari cerita ini: kelas mungkin terdengar tidak biasa bagi Resharper tetapi mungkin dibangkitkan ketika Anda menggunakan Injeksi Ketergantungan.

MHOOS
sumber
3
Bukan hanya DI, karena setiap penggunaan refleksi solusi itu mungkin gagal.
Mohayemin