2010-02-17 15 views
18

Vì vậy, tôi muốn sử dụng các chú giải tìm kiếm để ngăn chặn các cảnh báo mà chúng tôi cho là mã ok.Chú thích Findbugs - Tôi có cần chú thích.jar và jsr305.jar trong mã được triển khai của mình không?

Chúng ta có cần triển khai chú thích.jar và jsr305.jar vào thời gian chạy sản xuất của chúng ta hay chúng ta chỉ cần các jars này trong đường dẫn lớp cho dự án Eclipse và môi trường xây dựng unix của chúng ta?

Trả lời

11

Chú thích đã thay đổi retention policies:

  • NGUỒN - không trong tập tin lớp học, loại bỏ bởi trình biên dịch (sẽ không cần thiết trong thời gian chạy)
  • CLASS - trong tập tin lớp, nhưng VM có thể ném chúng đi
  • RUNTIME - sẵn sàng cho phản ánh trong thời gian chạy

logic sẽ chỉ ra rằng chú thích duy trì NGUỒN sẽ không cần thiết trong thời gian chạy, CLASS không được và RUNTIME phải khả dụng.

Xem nhanh chú thích JSR 305 cho biết rằng họ sử dụng chính sách lưu giữ RUNTIME (example), cho tôi biết rằng các lọ này thực sự cần thiết để tải các lớp trong thời gian chạy để thỏa mãn hợp đồng chú thích.

Nhưng tôi chưa thực sự tự mình thử nghiệm điều này.

+1

Alex, cảm ơn đã hướng tôi xuống con đường bên phải bằng các chú thích. Tôi chỉ định sử dụng chú thích edu.umd.cs.findbugs.annotations.SuppressWarnings, có chú thích CLASS. Tôi sẽ cố gắng thử nghiệm trong vài ngày tới bằng cách quảng bá một số tệp được chú thích thành một công cụ xây dựng và chạy. – tinman

+1

Rất tiếc là không chính xác. Như [Matt McHenry chỉ ra] (http://stackoverflow.com/a/3577312/1005481), các chú thích này * không * cần phải có mặt khi chạy. –

8

Mỗi my related question, bạn thường sẽ không gặp bất kỳ sự cố nào nếu các chú thích này không có trong thời gian chạy, mặc dù một số chú thích không có @Retention(RUNTIME).