8

Tôi sử dụng trong kiểu kiểm tra dự án và tôi đã xác định SuppressionFilter trong cấu hình kiểu kiểm tra của mình. Tôi sử dụng kiến ​​Apache để tạo các bản dựng tự động thông qua Tích hợp liên tục.Làm thế nào để xác định các định nghĩa ức chế cho kiểu kiểm tra, làm việc với cả kiến ​​và nhật thực

Vấn đề của tôi xuất phát từ tình huống sau: Tôi không muốn điền vào nhiều tệp vào dự án dựa trên, vì vậy checkstyle.xml và suppressions.xml đều nằm trong thư mục con có tên conf (để cấu hình cho xây dựng). Bây giờ Ant và Eclipse làm việc khác nhau để tìm ra tệp suppressions.xml.

Ant sử dụng project-basedir làm cơ sở cho việc tìm kiếm suppressions.xml, sau khi tôi khai báo một tác vụ ant để tìm checkstyle.xml với cấu hình cơ sở của kiểu kiểm tra. checkstyle.xml này bây giờ chứa những điều sau đây:

<module name="SuppressionFilter"> 
    <property name="file" value="conf/suppressions.xml"/> 
</module> 

Bằng cách này, ant-build tìm suppressions.xml, vì basedir của xây dựng là dự án-thư mục.

Hiện đang sử dụng checkstyle-plugin cho Eclipse mang lại sự cố. Nó tìm kiếm tệp suppressions.xml bắt đầu bằng đường dẫn mà checkstyle.xml có (conf). Đối với Eclipse, việc khai báo phải giống như thế này, để làm việc:

<module name="SuppressionFilter"> 
    <property name="file" value="suppressions.xml"/> 
</module> 

EDIT: Ngay cả khi không hoạt động, Eclipse dường như luôn luôn cần một đường dẫn tuyệt đối.

Tôi muốn biết một cách, cả Eclipse và Ant đều có thể làm việc với cùng một cấu hình kiểu kiểm tra. Ai đó biết một giải pháp cho vấn đề này? Đường dẫn tuyệt đối không có giải pháp, bởi vì mọi nhà phát triển và CI-Server đều có các đường dẫn khác nhau cho thư mục dự án.

Trả lời

6

Sử dụng chức năng property expansion của Checkstyle. Trong checkstyle.xml của bạn tuyên bố bạn SupressionFilter như:

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

Sau đó sửa đổi nhiệm vụ Checkstyle của bạn trong xây dựng kịch bản Ant của bạn để bao gồm một tài sản lồng nhau:

<checkstyle config="conf/checkstyle.xml"> 
    <fileset dir="src" includes="**/*.java"/> 
    <property key="checkstyle.suppressions.file" value="conf/suppressions.xml"/> 
</checkstyle> 
+0

Cảm ơn, mà làm việc. Một ngoại lệ là lỗi của tôi trong mô tả, Eclipse dường như cần một đường dẫn tuyệt đối. – Mnementh

9

Câu hỏi này là khá cũ, nhưng tôi đã tìm thấy một cách tốt hơn để thực hiện việc đó bằng cách sử dụng Checkstyle Advanced properties:

Đối với plugin Kiểu kiểm tra Eclipse, thuộc tính ${samedir} mở rộng đến thư mục mà tệp cấu hình nằm trong:

Trong trường hợp của bạn, cấu hình mô-đun của bạn sẽ trông như thế này:

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

Mục tiêu Ant cũng sẽ thiết lập các samedir tài sản:

<checkstyle config="${checkstyle.tool.dir}/checks.xml" failOnViolation="false"> 
    <fileset dir="${src.dir}" includes="**/*.java" /> 
    <property key="samedir" value="${checkstyle.tool.dir}/conf" /> 
</checkstyle> 
+0

Được thăng hạng. $ {samedir} là những gì tôi theo đuổi. –

+1

Bạn có thể sử dụng '$ {basedir}' (xem liên kết để có thêm đường dẫn proprties) cho đường dẫn tương đối của dự án. Điều này cho phép bạn sử dụng một 'checkstyle.xml' phổ biến cho nhiều dự án nhưng vẫn lưu trữ các tệp đàn áp với từng dự án. –

+0

Có cách nào để sử dụng $ {samedir} trong plugin kiểm tra gradle không? http://stackoverflow.com/questions/29602867/using-samedir-in-gradle-and-eclipse – Edward

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