Resharper- Tìm tất cả các lớp không sử dụng


122

Tôi biết cách tìm các tham chiếu không sử dụng của một tệp bằng cách nhấp chuột phải vào tệp và chọn tùy chọn "Tìm Tập quán". Có cách nào tôi có thể xem hoặc lấy danh sách tất cả các lớp hoặc tệp không sử dụng trong dự án của mình không?


2
Tôi đã sử dụng ndepend cho việc này trong quá khứ.
Cine

Câu trả lời:


195

Đầu tiên hãy kích hoạt "Phân tích lỗi trong giải pháp" (nhấp chuột phải vào biểu tượng Trình sạc lại trên thanh trạng thái).

Sau đó nhấp chuột phải vào nút giải pháp và chọn "Tìm sự cố mã". Trong cửa sổ công cụ "Kết quả kiểm tra", bạn có thể nhóm theo "Loại vấn đề" và tìm "Loại hoặc loại thành viên không bao giờ được sử dụng" để lấy tất cả các lớp không sử dụng (và nhiều ký hiệu không sử dụng nữa).

Tùy chọn thứ hai (sau khi bật "Phân tích lỗi trong giải pháp") là chuyển đến bất kỳ lớp nào không sử dụng, nhấn Alt + Enter, chọn "Tùy chọn cho 'Loại hoặc loại thành viên ...' kiểm tra" | Tìm tất cả các vấn đề về mã thuộc loại này | Toàn bộ giải pháp.

Mẫu cửa sổ kết quả kiểm tra


41
Các lớp / Phương thức không sử dụng sắp xuất hiện trong "Loại hoặc thành viên loại không bao giờ được sử dụng" trong "Dự phòng trong Khai báo Biểu tượng". Không chắc đây là do thay đổi phiên bản hay tôi đang xem xét nó theo cách khác.
bulltorious

4
Điều này đã không trả lại bất kỳ lớp không sử dụng nào trong bất kỳ danh mục nào bằng cách sử dụng Resharper 7.1 trên VS2013 trên Windows 8 hoặc VS2012 trên Windows 7.
Sam Jones

1
Ít nhất trong ReSharper 8, bạn không cần phải bật "Phân tích lỗi trong giải pháp" để nhận được kết quả.
Pieter van Ginkel

@SamJones: bạn nói đúng .. nó cũng không trả lại bất kỳ lớp nào không sử dụng trong Resharper 8.1 ...
Revious

3
Resharper 10: Báo cáo này không hiển thị các lớp không sử dụng. Cách giải quyết: tìm thấy một số lớp không sử dụng trong mã, và đừng "Tìm vấn đề tương tự trong dung dịch"
altumano

17

Giải pháp của @ulrichc nghe có vẻ hoàn hảo và hoạt động tốt cho các dự án từ nhỏ đến trung bình mà bạn không sử dụng bất kỳ khuôn khổ Dependency Injection nào như Castle hoặc Ninject nhưng nếu bạn đang sử dụng DI container [Castle chẳng hạn] và bạn có một cái gì đó như sau:

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

Như bạn có thể thấy RegisterFromAssembly đi qua tất cả các loại bên trong assembly và một cách mù quáng [dựa trên tham số phương thức] thêm chúng vào vùng chứa tại Run-time.

Bạn sẽ cần một cái gì đó như plugin Agent Mulder cung cấp điều hướng cho các loại được đăng ký hoặc giải quyết bên trong vùng chứa của bạn. Điều này một lần nữa có thể hoạt động trực quan [có thể có thời gian thiết kế] nhưng bạn sẽ không thực sự chắc chắn trừ khi mỗi khi xóa lớp không sử dụng, bạn chạy tất cả các thử nghiệm bên trong ứng dụng của mình [mọi lớp có thể] để chắc chắn 80% là bạn an toàn. Đạo đức của câu chuyện: một lớp có thể không được sử dụng đối với Resharper nhưng nó có thể được hồi sinh khi bạn sử dụng Dependency Injection.


3
Không chỉ DI, đối với bất kỳ việc sử dụng phản chiếu nào, giải pháp đó có thể thất bại.
Mohayemin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.