2011-01-10 32 views
107

Tôi biết cách tìm tài liệu tham khảo chưa 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 nhận danh sách tất cả các lớp hoặc tệp không được sử dụng trong dự án của tôi không?Resharper- Tìm tất cả các lớp chưa sử dụng

+2

Tôi đã sử dụng ndepend cho điều này trong quá khứ. – Cine

Trả lời

167

Bật đầu tiên "Phân tích lỗi trong giải pháp" (nhấp chuột phải vào biểu tượng Chia sẻ lại trong 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 vấn đề về 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" để nhận tất cả các lớp không sử dụng (và nhiều biểu tượng 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 chưa sử dụng nào, nhấn Alt + Enter, chọn "Tùy chọn cho 'Nhập hoặc nhập 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.

Inspection results window sample

+40

Các lớp/Phương pháp không được sử dụng sắp xuất hiện trong phần "Loại hoặc loại thành viên không bao giờ được sử dụng" trong "Dự phòng trong Bản Tuyên bố Biểu tượng". Không chắc chắn nếu điều này là do sự thay đổi phiên bản, hoặc tôi đang nhìn nó một cách khác nhau. – bulltorious

+4

Điều này không trả lại bất kỳ lớp nào chưa sử dụng dưới 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. –

+1

Ít nhất trong ReSharper 8, bạn không phải bật "Phân tích lỗi trong giải pháp" để nhận kết quả. –

17

Solution bởi @ulrichc âm thanh hoàn hảo và hoạt động tốt cho nhỏ cho các dự án hạng trung, trong đó bạn đang không sử dụng bất kỳ Dependency Injection khuôn khổ như Castle hoặc Ninject nhưng những gì nếu bạn đang sử dụng container DI [Castle ví dụ] 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 thấy RegisterFromAssembly đi qua tất cả các loại bên trong lắp ráp và mù quáng [dựa trên các tham số phương pháp] thêm chúng vào container tại Run-time.

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

+1

Cũng không chỉ DI, cho bất kỳ việc sử dụng phản chiếu nào mà giải pháp có thể thất bại. – Mohayemin

Các vấn đề liên quan