Tôi đã có cùng một vấn đề này với cấu hình triệt tiêu kiểu kiểm tra khi tôi chuyển qua lại giữa Linux và Windows. Đây là cách tôi giải quyết nó trong hệ thống xây dựng dựa trên Ant của mình:
Về cơ bản, tôi chèn giá trị thư mục nền tảng cụ thể vào tệp cấu hình Checkstyle chính bằng cách định cấu hình tệp thuộc tính Checkstyle với tập lệnh xây dựng Ant.
Tệp cấu hình Checkstyle chính của tôi có khai báo mô-đun SuppressionFilter
như được hiển thị bên dưới. Giá trị của tài sản checkstyle-suppressions-file
xuất phát từ một thuộc tính Checkstyle file:
<module name="SuppressionFilter">
<property name="file" value="${checkstyle-suppressions-file}"/>
</module>
các Checkstyle thuộc tính tập tin không phải là tĩnh, nó được tạo ra bởi một xây dựng kịch bản Ant từ một thuộc tính tập tin mẫu được gọi là template-checkstyle.properties
. Đây là những gì mẫu trông giống như đối với tài sản đàn áp file:
che[email protected][email protected]/checkstyle_suppressions.xml
Ant bản sao của tôi xây dựng kịch bản tập tin này vào một tập tin có tên checkstyle.properties
. Bản sao có dấu hiệu đặc biệt thay thế bằng giá trị hợp lý của thư mục mà tập tin được tìm thấy đàn áp:
<copy file="${scm.dir}/template-checkstyle.properties" tofile="${scm.dir}/checkstyle.properties">
<filterset>
<filter token="SCM_DIR" value="${scm.dir.unix}"/>
</filterset>
</copy>
Bây giờ, nơi nào giá trị của scm.dir.unix
đến từ đâu? Vâng, đó là bắt nguồn từ từ thuộc tính của bản dựng của tôi, hãy đọc tiếp. Bạn sẽ cần chỉ định một giá trị như vậy với các giá trị thư mục mà bạn đã đề cập.
Lưu ý rằng có một vấn đề hơi không rõ ràng liên quan đến cách bạn chỉ định thư mục này. Tôi nói rằng giá trị scm.dir.unix
bắt nguồn từ thuộc tính xây dựng vì tôi quan sát thấy tệp cấu hình Checkstyle chính không thể chứa dấu gạch chéo ngược, tức là ký tự dấu tách Windows, trong giá trị thuộc tính file
của mô-đun SuppressionFilter
. Ví dụ, chỉ định một cái gì đó như C:\foo\bar\baz
dẫn đến một thông báo lỗi Checkstyle nói rằng không thể tìm thấy C:foobarbaz
.Tôi làm việc này bằng cách "chuyển đổi" các scm.dir
thư mục build tài sản sang một định dạng "unix" với pathconvert
nhiệm vụ của Ant:
<pathconvert targetos="unix" property="scm.dir.unix">
<path location="${scm.dir}"/>
</pathconvert>
Sau đó tôi gọi là nhiệm vụ Ant checkstyle
như thế này:
<checkstyle config="${scm.dir}/checkstyle_checks.xml"
properties="${scm.dir}/checkstyle.properties">
<!-- details elided -->
</checkstyle>
Cuộc gọi tác vụ checkstyle
tiêm cặp khóa/giá trị có trong tệp checkstyle.properties
vào cấu hình Checkstyle chính.
Nếu bạn thích, bạn có thể xem toàn bộ kịch bản here
Hope this helps
Cảm ơn những lời khuyên, kiến kiến của tôi bây giờ là tốt, bỏ qua các con số ma thuật trong các lớp Test (đó là một sự khởi đầu!). Tôi phải thực hiện một thay đổi đối với mã được cung cấp của bạn (để tham khảo bất kỳ ai khác có thể đến sau này), nhiệm vụ thiếu "lọc = true"; ít nhất là khi chạy với phiên bản kiến của tôi. –