Tôi là một C# /. Net/Visual Studio noob. Tôi thừa kế một ứng dụng C# đã hoàn thành một nửa cho một chiếc điện thoại di động. Trong quá trình gỡ lỗi, tôi đã xem qua một số lớp đã hoàn thành một nửa mà dường như không được sử dụng ở bất kỳ nơi nào khác trong mã. Có cách nào để xác định xem định nghĩa lớp có được khởi tạo ở bất kỳ đâu không?Tìm các lớp chưa sử dụng trong ứng dụng C#
Trả lời
Cách nhanh nhất (trong Visual Studio) là click chuột phải vào tên loại và chọn Tìm tất cả các tài liệu tham khảo từ trình đơn ngữ cảnh sẽ hiển thị cho bạn tất cả các địa điểm mà loại đó được tham chiếu trong giải pháp hiện tại
Bạn có thể liệt kê tất cả các lớp (tìm kiếm class [a-zA-Z0-9_]+
), sau đó tìm kiếm new <classname>
. Những cái không tìm thấy ở lần tìm kiếm thứ hai không được sử dụng. Tất nhiên, một kịch bản đơn giản trong ngôn ngữ kịch bản yêu thích của bạn sẽ giúp bạn.
Tuy nhiên, bạn sẽ cần phải lọc ra các lớp được sử dụng làm lớp cơ sở của các lớp đã sử dụng.
Lưu ý rằng theo cách này bạn sẽ không tìm thấy các lớp chỉ được sử dụng từ các lớp không sử dụng, do đó có thể cần một số lần lặp lại. Hơn nữa, nếu một số hai lớp đang sử dụng lẫn nhau (nhưng không được sử dụng từ bên ngoài), việc loại bỏ chúng có thể cần thêm nỗ lực.
Chỉnh sửa:
Cách tiếp cận tốt hơn là xây dựng cây phụ thuộc: cho mỗi lớp bạn xác định lớp nào được lớp đó sử dụng và lớp nào là lớp cơ sở cho lớp đó. Bằng cách này bạn sẽ tìm thấy các lớp nào được yêu cầu cho mỗi lớp đơn. Sau đó, bạn có thể xác định các lớp nào được yêu cầu (trực tiếp hoặc gián tiếp) từ lớp có chứa Main
. Tất cả các lớp khác là "không thể truy cập" và do đó không được sử dụng.
Tuy nhiên, phương pháp này sẽ loại bỏ các lớp được khởi tạo bằng phản chiếu. Vâng, không có cách nào để tìm hiểu tại thời gian biên dịch, mà các lớp học sẽ được instantiated bởi sự phản ánh anyway.
Có thể sử dụng các công cụ sẵn sàng (như các công cụ khác được đề xuất) là một giải pháp thay thế đơn giản hơn.
Without ReSharper hoặc một công cụ tương tự, bạn luôn có thể thực hiện tìm kiếm tập tin cho "ClassName mới (" trong toàn bộ giải pháp.
Tôi thường bắt đầu bằng Shift-F12 (hoặc nhấp chuột phải vào tên lớp và chọn "Tìm Tất cả Tài liệu tham khảo ")
Trừ khi bạn biết mã và mô-đun có thể sử dụng nó., CodeRush hoặc Resharper là lựa chọn tốt hơn của bạn.
Không có câu trả lời nào khác đề cập đến các công cụ sửa đổi có thể áp dụng cho các lớp/chức năng. Bạn chắc chắn muốn xem xét phạm vi trước khi xóa mã. Bạn có thể có các hội đồng khác sử dụng các lớp/chức năng.
Xóa chúng khỏi dự án và để thử nghiệm đơn vị của bạn (ahem, bạn có quyền đó?) Và nhóm QA của bạn (bạn có quyền đó không?) Xác định sự cố.
Truyện cười sang một bên, nếu nó rõ ràng là nó không hoàn chỉnh, tại sao không chỉ đơn giản là loại bỏ mã và biên dịch lại?
Các bước tiếp theo tôi sẽ thực hiện là sử dụng công cụ như "Tìm tất cả các tham chiếu" hoặc Resharper (thậm chí nó có tính năng để làm điều đó không?)
Mã này được thừa kế từ một sinh viên thực tập sinh đại học. Nó không có bài kiểm tra đơn vị. Tôi sẽ thêm các bài kiểm tra đơn vị, nhưng trước khi tôi có thể làm điều đó tôi cần phải hiểu mã, điều này khá khó khăn khi có các lớp và các phương thức thậm chí không được sử dụng. Trong khi xem xét mã trước khi đăng ký, tôi đã dành một khoảng thời gian đáng kể để tìm ra cách thức hoạt động của phương thức dường như bị hỏng. Tôi không phải là một anh chàng C#, vì vậy tôi đã dành thời gian xem xét các tài liệu suy nghĩ điều gì đó ma thuật đã xảy ra, trong khi thực tế nó đã thực sự bị hỏng, và chỉ không được gọi từ bất cứ nơi nào: ( – limscoder
- 1. Tìm các lớp chưa sử dụng trong dự án .net
- 2. Tìm hình ảnh chưa sử dụng trong ứng dụng Rails?
- 3. Resharper- Tìm tất cả các lớp chưa sử dụng
- 4. Tìm các mô-đun Perl "use'd" chưa sử dụng
- 5. Async/Await trong các ứng dụng C# nhiều lớp
- 6. Sử dụng các lớp Java với C#
- 7. Tích hợp CUDA vào ứng dụng C++ để sử dụng lớp C++ hiện có
- 8. Thử nghiệm mua hàng trong ứng dụng Android với các ứng dụng chưa được xuất bản
- 9. Cách sử dụng tệp App.config trong các ứng dụng WPF?
- 10. Cách sử dụng "Lớp" trong C#
- 11. Cách sử dụng lớp C# trong dự án VB.NET trong ứng dụng windows?
- 12. Tìm "mã chết" trong ứng dụng kế thừa lớn C++
- 13. Sử dụng VB.NET và C# trong cùng một ứng dụng?
- 14. sử dụng C# cho các ứng dụng thời gian thực
- 15. Sử dụng Ứng dụng :: sử dụng (thay vì Ứng dụng :: nhập) trong Trình cắm CakePHP 2.1
- 16. Làm cách nào để tìm các phương thức không sử dụng trong ứng dụng Ruby?
- 17. Sử dụng thư viện c/C++ sử dụng mạng cho mục tiêu ứng dụng iphone c
- 18. Sử dụng các chuỗi từ các lớp khác C#
- 19. Tìm các câu lệnh nhập chưa sử dụng trong nguồn Java
- 20. Thực hành tốt nhất Sử dụng C# XSD typed-datasets Trong các ứng dụng doanh nghiệp
- 21. Cách sử dụng tệp cấu hình ứng dụng trong C#?
- 22. Tìm biểu mẫu đang mở trong ứng dụng C# windows
- 23. Xác định các lọ chưa sử dụng bằng mã vùng?
- 24. Tìm nút cổ chai trong ứng dụng
- 25. Bạn đã bắt đầu sử dụng C++ 0x chưa?
- 26. Tự động xóa các lớp CSS chưa được sử dụng khỏi dự án
- 27. Tìm tất cả các bộ điều khiển trong ứng dụng
- 28. Khi nào sử dụng Lớp học trong C#?
- 29. Cố gắng sử dụng lớp C# SpellCheck
- 30. Sử dụng C++ CLI mẫu lớp trong C#
+1 tìm tất cả các tham chiếu/Sử dụng nếu chúng ta dính vào Visual Studio –
Nhấn SHIFT-F12 được cho là nhanh hơn. :) –
Nếu một lớp A chỉ được tham chiếu từ một số lớp B không được sử dụng, lớp A cũng có thể được coi là không được sử dụng. – Vlad