2010-10-26 23 views
13

Tôi có hai gói cụ thể làDisable tất cả các kiểm tra checkstyle cho một gói java cụ thể

com/mydomain/abc/đại biểu/xyz/jaxws/quản lý

com/mydomain/abc/xyz/jaxws/managed

Tôi yêu cầu checkstyle chỉ được vô hiệu hóa cho gói thứ hai vì chúng chứa các lớp proxy được tạo tự động.

tôi sử dụng một suppression.xml như hình dưới đây

<?xml version="1.0"?> 

<!DOCTYPE suppressions PUBLIC 
    "-//Puppy Crawl//DTD Suppressions 1.1//EN" 
    "suppressions_1_1.dtd"> 

<suppressions> 
     <!-- Suppress JavadocPackage in the test packages --> 
     <suppress checks="JavadocPackage" files="[\\/]test[\\/]"/> 

    <!-- Suppress all checkstyle for autogenerated jaxws.managed package --> 
    <suppress checks="[a-zA-Z0-9]*" files="([^(delegate)])+([a-z]*[\\/]jaxws[\\/]managed[\\/])+"/> 
</suppressions> 

Xin lưu ý ức chế đầu tiên cho việc vô hiệu hóa JavadocPackage kiểm tra hoạt động tốt nhưng cái thứ hai thì không. Tôi sợ rằng regex của tôi cho việc lựa chọn các gói có thể là sai. Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.

Để nêu yêu cầu của tôi với một ví dụ:

Các tiêu chí lựa chọn là tên gói nên kết thúc ở jaxws.managed nhưng không nên chứa delegate trong tên gói. Nhiều hơn delegate nên đến trước khi jaxws.managed trong tên gói:

ví dụ: kiểm tra checktyle trong gói com.mycomany.delegate.service.jaxws.managed phải được cho phép trong khi đó ở com.mycompany.abc.service.jaxws.service phải tắt và nó là cần lưu ý rằng tôi không biết tất cả các tên pakages trả trước trừ cho mẫu này.

Cảm ơn và chúc Sibi

Trả lời

16

Chỉ cần sử dụng ức chế:

<suppress checks="." files="com[\\/]mydomain[\\/]abc[\\/]xyz[\\/]jaxws[\\/]managed[\\/]"/> 

Ngoài ra, tôi sẽ khuyên bạn nên chỉ đi qua các tập tin mà bạn muốn kiểm tra để Checkstyle. Ví dụ: nếu bạn đang sử dụng ANT, hãy sử dụng a để chỉ định các tệp cần xử lý và sử dụng để chỉ định các tệp cần bỏ qua.

Ví dụ:

<fileset dir="src"> 
    <include name="**/*.java"/> 
    <exclude name="com/mycompany/abc/service/jaxws/service/*.java"/> 
</fileset> 
+0

Hi Oliver, Thankyou để hồi âm. Giải pháp của bạn hoạt động khi biết toàn bộ tên gói. Trong trường hợp của tôi, tiêu chí lựa chọn là tên gói phải kết thúc bằng "jaxws.managed" nhưng không được chứa "delegate" trong tên gói. Thông tin thêm về "ủy quyền" sẽ đến trước "jaxws.managed" trong tên gói: ví dụ: kiểm tra checktyle trong gói "com.mycomany.delegate.service.jaxws.managed" phải được bật trong khi đó trong com.mycompany.abc.service .jaxws.service "phải bị vô hiệu hóa. Cảm ơn bạn đã chỉ ra sự vô nghĩa này trong câu hỏi của tôi. –

-3

(?! Đại biểu \ b) [\ /] [az] * [\ /] jaxws [\ /] quản lý [\ /]

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