2013-04-15 21 views
12

Tôi muốn loại trừ một quy tắc PMD duy nhất trong POM, nhưng nó không hoạt động. Tôi đã cố gắng tạo ra một PMD-exclude.xml (trong cùng một thư mục như pom.xml):Xóa một quy tắc kiểm tra duy nhất từ ​​PMD trong plugin maven

<?xml version="1.0"?> 
<ruleset name="remove_rules"> 
    <description>Remove rules</description> 
    <rule ref="rulesets/unnecessary.xml"> 
     <exclude name="UselessParentheses"/> 
    </rule> 
</ruleset> 

Từ http://www.ing.iac.es/~docs/external/java/pmd/howtomakearuleset.html và tham chiếu nó trong pom.xml:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-pmd-plugin</artifactId> 
    <version>3.0.1</version> 
    <configuration> 
     <sourceEncoding>utf-8</sourceEncoding> 
      <rulesets> 
        <ruleset>${pom.basedir}/pmd-exclude.xml</ruleset> 
      </rulesets> 
    </configuration> 
</plugin> 

Nhưng nó vẫn không ngừng báo cáo các quy tắc này.

Ngoài ra: Tôi không muốn chỉ định quy tắc nào phải kiểm tra, vì phiên bản mới hơn có thể (và sẽ) bao gồm các phiên bản mới và tôi không muốn kiểm tra quy tắc mới sẽ chạy trong mọi phiên bản mới.

+0

Were để tìm giải pháp nào? Tôi đang cố gắng với excludeFromFailureFile, nhưng ngay cả điều đó không hoạt động. – Jaga

+1

Tôi không thể tìm ra giải pháp thực sự cho việc này. Sau đó, chúng tôi di chuyển sang Sonar và bạn có thể cấu hình các quy tắc nào áp dụng, đó là những gì tôi cần cộng với tất cả đồ họa và những thứ tuyệt vời khác. Nhưng đây không phải là câu trả lời cho câu hỏi này một cách chính xác. –

+0

Cảm ơn bạn đã phản hồi nhanh chóng – Jaga

Trả lời

5

Tôi nghĩ bạn sẽ cần phải thêm các quy tắc bạn muốn kiểm tra và loại bỏ quy tắc cụ thể mà bạn không cần.

Các PMD-exclude.xml sẽ trông như thế này:

<?xml version="1.0" encoding="UTF-8"?> 
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    name="Android Application Rules" 
    xmlns="http://pmd.sf.net/ruleset/1.0.0" 
    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" 
    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" > 

    <description>Remove rules</description> 

    <rule ref="rulesets/clone.xml" /> 
    <rule ref="rulesets/finalizers.xml" /> 
    <rule ref="rulesets/imports.xml" /> 
    <rule ref="rulesets/logging-java.xml" /> 
    <rule ref="rulesets/unnecessary.xml" > 
     <exclude name="UselessParentheses" /> 
    </rule> 

</ruleset> 
+0

các quy tắc mới được nhóm PMD thêm vào theo thời gian? Câu trả lời của bạn dường như gần gũi với những gì tôi cần. –

0

@ giải pháp marcelopazzo của làm việc cho tôi. Tôi chỉ muốn thêm rằng nếu bạn đang làm việc với một dự án maven đa mô-đun thì bạn sẽ phải cập nhật tham chiếu của mình thành tệp pmd-exclude.xml, trừ khi bạn dự định có một bản sao của tệp này trong mỗi mô-đun.

Ví dụ

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-pmd-plugin</artifactId> 
     <version>3.6</version> 
     <configuration> 
      <rulesets> 
       <ruleset>${project.parent.basedir}/pmd-exclude.xml</ruleset> 
      </rulesets> 
     </configuration> 
    </plugin> 
Các vấn đề liên quan