2009-10-10 17 views
5

Tôi đang duy trì một API đã không dùng một số trường tĩnh công cộng.Tôi có thể vô hiệu hóa khiếu nại của CheckStyle đối với các phương thức và lớp học không được chấp nhận không?

CheckStyle phàn nàn lớn về những điều này nhưng tôi muốn nó bỏ qua chúng hoàn toàn vì tôi đã giải quyết vấn đề bằng cách đánh dấu các trường là không được chấp nhận.

Cụ thể, thư viện có hằng số để liệt kê (kết quả tĩnh công cộng) nhưng chúng không được đánh dấu là cuối cùng. CheckStyle sẽ phàn nàn về họ, nhưng tôi không thể chỉ thay đổi họ để cuối cùng mà không vi phạm hợp đồng.

Gói của tôi là đánh dấu chúng là không dùng nữa và sau đó xóa chúng sau. Nhưng đánh dấu chúng là không được chấp nhận sẽ không xóa chúng khỏi Báo cáo CheckStyle.

+0

Bạn có thể cung cấp kết quả chính xác không? –

Trả lời

8

tôi có hai lựa chọn cho bạn:

  1. ngăn chặn cảnh báo cho mỗi dòng bằng tay

    Cách tiếp cận này là ít linh hoạt như bạn phải duy trì cấu hình ức chế mỗi khi bạn đang chuyển hướng dòng . Nhưng bạn có thể xử lý từng lần xuất hiện riêng lẻ.

    <suppress checks="YOURCHECK" files=".*YOURCLASS\.java" lines="YOURLINES"/> 
    

    Tôi không biết séc nào đang gây ra sự cố, vì vậy bạn phải thay thế YOURCHECK bằng tên riêng. YOURCLASS đặt tên tệp java, chứa mã không dùng nữa, nhưng bạn có thể chèn .* để áp dụng nó cho mọi tệp. YOURLINES là danh sách các giá trị được phân tách bằng dấu phẩy, trong đó mỗi giá trị là một số nguyên hoặc một dải số nguyên được biểu thị bằng số nguyên-số nguyên.

  2. sử dụng một bình luận để tư vấn checkstyle phớt lờ cảnh báo

    Giải pháp này cho phép bạn tắt kiểm tra đối với tất cả các thành viên NỮA cùng một lúc. Nhưng bạn phải tuân theo một quy ước nghiêm ngặt. Bạn phải thêm một bình luận @deprecated cho những thành viên đó (những gì bạn có thể làm) ở vị trí cuối cùng, bởi vì bộ lọc này có một phạm vi nghiêm ngặt các dòng.

    /** 
    * @deprecated I don't like this anymore. 
    */ 
    public static String EXAMPLE = "example"; 
    

    Giải pháp này cần thay đổi trong tệp cấu hình của bạn. Trước tiên, bạn phải thêm FileContentsHolder khi còn nhỏ là TreeWalker.

    <module name="TreeWalker"> 
        ... 
        <module name="FileContentsHolder"/> 
        ... 
    </module> 
    

    Bây giờ bạn có thể cấu hình các SuppressWithNearbyCommentFilter mà là một phần của mô-đun Checker.

    <module name="Checker"> 
        ... 
        <module name="SuppressWithNearbyCommentFilter"> 
         <property name="commentFormat" value=".*deprecated.*"/> 
         <property name="checkFormat" value=".*"/> 
         <property name="influenceFormat" value="2"/> 
        </module> 
        ... 
    </module> 
    

    Nếu bạn quyết định bỏ qua chỉ séc cụ thể, hãy điều chỉnh thuộc tính checkFormat. Hoặc nếu bạn muốn sử dụng một nhận xét khác, hãy thay đổi thuộc tính commentFormat. Nhưng điều rất quan trọng là bạn phải đặt influenceFormat thành giá trị phù hợp. Nó cho biết checkstyle trong vòng bao nhiêu dòng sau bình luận nó là do bỏ qua các kiểm tra đó.

P.S .: Lưu ý rằng các plugin Eclipse CheckStyle loại bỏ các mô-đun FileContentsHolder, khi bạn thay đổi cấu hình với giao diện người dùng của nó, vì vậy bạn không phải sử dụng nó.

+2

Điều này thật tuyệt. Hoàn hảo! –

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