Có cách nào để tự động kiểm tra mã nguồn C# hiện tại cho các trường hợp đối tượng không được xử lý đúng cách không. sử dụng try/catch/finally hoặc sử dụng câu lệnh? Hoặc tôi có cần phải chỉ xem mã theo cách thủ công không?Kiểm tra đối tượng triển khai IDisposable nhưng không được xử lý đúng cách
Trả lời
Hãy xem FxCop cho VS2010 - Tôi tin rằng họ đã khôi phục quy tắc DisposeObjectsBeforeLeavingScope - có thể thực hiện chính xác những gì bạn muốn.
Sử dụng Cop FX cho một quy tắc để kiểm tra xem IDisposable được đặt trong một Sử dụng khối thích hợp ...
Bạn có thể sử dụng phản xạ đi qua đối tượng với IDisposable
Ref. : Is there a list of common object that implement IDisposable for the using statement? cho ý tưởng thêm
HTH
CodeRush có một số hỗ trợ cho đốm rõ ràng biến thể của việc này. Một tùy chọn khác có thể là (có thể thông qua một biểu tượng biên dịch tùy chọn) thêm một finalizer cho các đối tượng IDisposable
của riêng bạn và phàn nàn lớn nếu chúng được hoàn thành mà không bị xử lý (đặt cờ bool trong Dispose
). Nhưng lưu ý: có một finalizer thay đổi hành vi của các đối tượng, do đó, không để nó trong mã sản xuất (hoặc thậm chí kiểm tra đơn vị thường xuyên của bạn).
- 1. System.ServiceModel.ServiceHost triển khai IDisposable nhưng Dispose không công khai
- 2. Xử lý ngoại lệ trong hàm dựng khi triển khai IDisposable
- 3. Làm cách nào để quản lý các đối tượng IDisposable được lưu trong bộ nhớ cache?
- 4. Tôi có nên triển khai IDisposable tại đây không?
- 5. ClientBase không triển khai thành viên IDisposable
- 6. Singleton với finalizer nhưng không IDisposable
- 7. Có danh sách đối tượng chung nào triển khai IDisposable cho câu lệnh sử dụng không?
- 8. Điều khiển của tôi không được xử lý đúng cách?
- 9. Làm thế nào để xác minh StructureMap được xử lý các đối tượng đúng
- 10. Cách xử lý đúng cách các ngoại lệ không được kiểm soát quan trọng
- 11. Triển khai Model-View-Controller đúng cách
- 12. Xử lý iDisposable trong initializer thất bại hoặc constructor
- 13. C# không thể truy cập đối tượng được xử lý
- 14. Android - Đúng cách để chờ đối tượng xử lý được tạo ra
- 15. C#: Xử lý đúng đối tượng C# khi được tạo qua COM Interop từ VB6
- 16. Tại sao Enumerable.Range triển khai IDisposable?
- 17. Kiểm tra xem chức năng có được khai báo bằng bộ tiền xử lý C không?
- 18. Tại sao đối tượng được xử lý không ném ngoại lệ khi sử dụng nó sau khi xử lý?
- 19. Cách triển khai xử lý ngoại lệ cấp cao nhất?
- 20. Không thể truy cập lỗi đối tượng được xử lý
- 21. "Không thể truy cập đối tượng được xử lý"
- 22. Lỗi trình xử lý khi triển khai
- 23. Phát hiện "bị rò rỉ" đối tượng IDisposable
- 24. Cách xử lý đúng lỗi trong Express?
- 25. Tôi có nên triển khai IDisposable cho User Control không?
- 26. Triển khai IDisposable cho lớp chứa chủ đề
- 27. Kiểm tra các thuộc tính hộp kiểm tra là đúng, nhưng đánh dấu không được hiển thị
- 28. Xử lý đối tượng StringBuilder
- 29. Đây có phải là cách đúng để xử lý SQLConnection
- 30. Làm cách nào để tìm tất cả các Lớp triển khai IDisposable?
Tôi đã tải xuống phiên bản dùng thử của VS2010 Premium và thực sự có quy tắc CA2000 này. Cảm ơn. – etoisarobot