2010-03-23 3 views
12

Tôi có dự án VS.NET 2008. Có thể kiểm tra các lớp không được sử dụng trong dự án không? Với FXcop tôi có thể tìm các biến không sử dụng và mã không sử dụng, nhưng không tìm thấy các lớp không sử dụng.Tìm các lớp chưa sử dụng trong dự án .net

+0

Hãy cẩn thận khi xóa lớp học. Nó vẫn có thể được sử dụng bởi mã phía sau một bộ tiền xử lý hoặc được sử dụng bởi một dự án hiện không được tải. – Carra

Trả lời

8

Công cụ NDepend có thể giúp tìm mã không sử dụng trong một cơ sở mã NET. Tuyên bố từ chối trách nhiệm: Tôi là một trong những nhà phát triển của công cụ này.

Để xây dựng một chút, NDepend đề xuất viết Code Rule over LINQ Query (CQLinq). Khoảng 200 default code rules được đề xuất, 3 trong số đó được dành riêng cho không sử dụng/code chết phát hiện

Về cơ bản như một nguyên tắc để phát hiện phương pháp không sử dụng ví dụ trông giống như:

// <Name>Dead Methods</Name> 
warnif count > 0 
from m in Application.Methods where !m.MethodsCallingMe.Any() 
select m 

NDepend rule to find unused methods (dead methods)

Nhưng quy tắc này là ngây thơ và sẽ trả về những thứ tích cực sai. Có rất nhiều tình huống mà một phương pháp không bao giờ được gọi nhưng nó không phải là không sử dụng (điểm nhập cảnh, nhà xây dựng lớp, finaliser ...) đây là lý do tại sao các quy tắc mặc định 3 có nhiều xây dựng:

NDepend được tích hợp trong Visual Studio, do đó những quy tắc có thể checked/browsed/edited right inside the IDE. Công cụ này cũng có thể được tích hợp vào quá trình CI của bạn và nó có thể xây dựng reports sẽ hiển thị các quy tắc vi phạm và các yếu tố mã thủ phạm.

Nếu bạn nhấp vào 3 liên kết này đến mã nguồn của các quy tắc này, bạn sẽ thấy rằng các liên kết liên quan đến các loại và phương thức có chút phức tạp. Điều này là do họ phát hiện không chỉ các loại và phương pháp không sử dụng, mà còn các loại và phương pháp được sử dụng chỉ bởi các loại và phương pháp đã chết chưa sử dụng (đệ quy).

Đây là phân tích tĩnh, do đó tiền tố Có khả năng trong tên quy tắc. Nếu một phần tử mã được sử dụng chỉ thông qua phản ánh, các quy tắc này có thể coi nó là không được sử dụng.

Ngoài việc sử dụng 3 quy tắc này, tôi khuyên bạn nên đo lường phạm vi mã bằng thử nghiệm và phấn đấu để có phạm vi phủ sóng đầy đủ. Thông thường, bạn sẽ thấy mã không thể được kiểm tra bởi các kiểm tra, thực tế là không sử dụng/đã chết mã có thể bị hủy an toàn. Điều này đặc biệt hữu ích trong các thuật toán phức tạp, nơi nó không rõ ràng nếu một chi nhánh mã có thể truy cập được hay không.

3

Resharper (với giải pháp toàn kiểm tra trên) tự động thông báo cho bạn về những lớp học không sử dụng trong dự án của bạn & giải pháp

+0

Không biết về kiểm tra toàn bộ giải pháp, cảm ơn – Ivo

+0

Chỉ hoạt động từ> 4.5. – Carra

+1

có cách nào để chạy "báo cáo" để cho tôi biết các lớp nào trong giải pháp của tôi không được sử dụng cùng một lúc? – Alex