2010-11-11 40 views
18

Dự án của chúng tôi chứa một số lớp mà chúng ta có phương thức equals() và hashCode() được tạo bởi Eclipse (Right Click -> Source -> Generate hashCode() và equals()).Làm cách nào để tôi có thể lấy kiểu kiểm tra để bỏ qua phương thức equals() và hashcode() được tạo ra bởi nhật thực?

Ví dụ:

@Override 
public boolean equals(Object obj) { 
    if (this == obj) 
     return true; 
    if (obj == null) 
     return false; 
    if (getClass() != obj.getClass()) 
     return false; 
    final MyTO other = (MyTO) obj; 
    if (num != other.num) 
     return false; 
    if (name == null) { 
     if (other.name != null) 
      return false; 
    } else if (!name.equals(other.name)) 
     return false; 
    if (table == null) { 
     if (other.table != null) 
      return false; 
    } else if (!table.equals(other.table)) 
     return false; 
    return true; 
} 

Những phương pháp mà làm việc tốt cho các ứng dụng của chúng tôi, nhưng tiếc là không vượt qua kiểm tra phức tạp cyclomatic của chúng tôi với Checkstyle. Vì các phương thức này được tạo tự động, chúng tôi không quan tâm đến độ phức tạp của chúng. Chúng tôi có thể ngăn chặn toàn bộ lớp học từ Checkstyle, nhưng chúng tôi muốn có thể loại trừ chỉ hai phương pháp này.

Có ai biết cách tạo quy tắc tùy chỉnh trong Checkstyle cho phép chúng tôi loại trừ các phương thức equals() và hashCode() được tạo theo bất kỳ cách nào mà không loại trừ toàn bộ lớp không?

Trả lời

5

Bạn nên thiết lập SupressionCommentFilter. Thông tin thêm về điều này here.

Đôi khi có lý do chính đáng để vi phạm séc. Khi đây là vấn đề của mã được đề cập và không phải là sở thích cá nhân, nơi tốt nhất để ghi đè chính sách là trong chính mã đó. Nhận xét có cấu trúc bán có thể được liên kết với séc.

+0

Tôi không quen thuộc với Trình gỡ rối. Làm thế nào tôi có thể xác định những con số dòng để loại trừ cho mỗi tập tin dựa trên, nói, tên phương pháp? – Brent

+0

Trông giống như ['SuppressionCommentFilter'] (http://checkstyle.sourceforge.net/config.html#SuppressionCommentFilter) (từ cùng một liên kết) là những gì cần thiết. Nó thậm chí còn bao gồm một ví dụ về việc loại bỏ mã được tạo ra. – matt

+0

Yup matt, i confused'em :). Đã chỉnh sửa trong câu trả lời. Ty – mgv

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