2012-12-14 24 views
7

Tôi đang sử dụng Maven 3Checkstyle 2.9.1 trong dự án java của tôi và tôi có một cấu hình checkstyle phổ biến mà chúng ta đang sử dụng trong một số dự án khác nữa. Để tránh sao chép và chỉnh sửa tệp cấu hình đó vào dự án của riêng tôi, tôi sử dụng tệp ngăn chặn để vô hiệu hóa tất cả các kiểm tra trong một số gói (mã được tạo).Cú pháp chính xác để ngăn chặn các quy tắc kiểm tra cụ thể trên các tệp nhất định là gì?

Bây giờ tôi muốn chặn các quy tắc cụ thể trong tất cả các tệp.

Đây là đàn áp tập tin của tôi:

<?xml version="1.0"?> 
<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> 
<suppressions> 
    <suppress files="my[\\/]generated[\\/]code[\\/]package" checks="."/> 
    <suppress files=".*\\.java$" checks="IndentationCheck"/> 
    <suppress files=".*\\.java$" checks="LineLengthCheck"/> 
    <suppress files=".*\\.java$" checks="ExplicitInitializationCheck"/> 
    <suppress files=".*\\.java$" checks="MemberNameCheck"/> 
</suppressions> 

Đây là POM của tôi:

... 
<build> 
    ... 
    <plugins> 
    ... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <version>2.9.1</version> 
      <configuration> 
       <configLocation>${checkstyle.ruleset}</configLocation> 
       <suppressionsLocation>${checkstyle.suppressions}</suppressionsLocation> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

tôi sau đó gọi

mvn checkstyle:checkstyle 

để tạo ra các báo cáo, nhưng bị đàn áp cảnh báo vẫn còn trong đó.

Tôi đang làm gì sai ở đây?

Trả lời

10

Ok, cuối cùng tôi đã tạo một tệp ngăn chặn hoạt động cho cấu hình kiểu kiểm tra của mình.

My Vấn đề ban đầu là với regex, vì vậy thay vì files=".*\\.java$" Tôi hiện đang sử dụng files="." để chặn kiểm tra đặc biệt trên tất cả các tệp. Tôi cũng chặn tất cả các kiểm tra trên một số tệp nhất định.

Dưới đây là một số ví dụ từ đàn áp của tôi file:

<?xml version="1.0"?> suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> 
<suppressions> 
    <!-- suppress certain checks on all files in a package --> 
    <suppress files="my[\\/]super[\\/]package[\\/]name" checks="ModifierOrderCheck|NeedBracesCheck|MagicNumberCheck"/> 
    <!-- suppress all checks on all files in a package --> 
    <suppress files="another[\\/]super[\\/]package[\\/]of[\\/]mine" checks=".*"/> 
    <!-- suppress certain checks on all files --> 
    <suppress files="." checks="IndentationCheck"/> 
    <suppress files="." checks="LineLengthCheck"/> 
    <suppress files="." checks="ExplicitInitializationCheck"/> 
    <suppress files="." checks="MemberNameCheck"/> 
    <suppress files="." checks="FinalClassCheck"/> 
</suppressions> 

Nếu bạn cần giúp đỡ với Maven phần của cấu hình, xem answer của @Mawia.

0

Điều này phù hợp với tôi.

Thay vì làm

<suppressionsLocation>${checkstyle.suppressions}</suppressionsLocation> 

tôi đặt này trong $ {} checkstyle.ruleset (mà tôi giả định là tập tin xml của bạn cho phong cách kiểm tra)

<module name="SuppressionFilter"> 
    <property name="file" value="${checkstyle.suppressions}" /> 
</module> 

Và $ của tôi {checkstyle.suppressions } có

<suppressions> 
    <suppress files="package-info.java" checks="[a-zA-Z0-9]*"/> 
    <suppress files="SomeClass.java" checks="[a-zA-Z0-9]*"/> 
</suppressions> 
+0

Vâng, tệp đàn áp được nhận dạng và sử dụng. Nhưng sự đàn áp thực sự không hiệu quả. Tôi đã tìm ra giải pháp, nhưng hôm nay tôi không có mã nguồn. Tôi sẽ cập nhật câu hỏi của tôi vào thứ hai. – cringe

+0

$ {checkstyle.ruleset} và $ {checkstyle.suppressions} điều gì xảy ra trong hai trường hợp này? – user1730789

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