2012-02-05 27 views
6

Tôi có PMD chạy qua Maven 2. Ngay bây giờ tôi có tất cả các rulesets để xem những gì được tạo ra (xem mã dưới đây). Tôi đang đi qua và sửa chữa những thứ có ý nghĩa với tôi để sửa chữa. Tuy nhiên, có những trường hợp như trong ruleset "tối ưu hóa" mà tôi muốn giữ nguyên quy tắc, nhưng vô hiệu hoá chỉ một trong các quy tắc trong bộ quy tắc. Trong trường hợp của tôi, tôi muốn vô hiệu hóa quy tắc "AvoidInstantiatingObjectsInLoopss".PMD với Maven - Làm thế nào để vô hiệu hóa một quy tắc trong một ruleset?

Dưới đây là phần báo cáo của pom.xml của tôi

<reporting> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jxr-plugin</artifactId> 
      <version>2.3</version> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-pmd-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <linkXref>true</linkXref> 
       <sourceEncoding>utf-8</sourceEncoding> 
       <minimumTokens>${pmd.minimumTokens}</minimumTokens> 
       <failOnViolation>${pmd.failOnViolation}</failOnViolation> 
       <targetJdk>${projectTargetJdk}</targetJdk> 

       <rulesets> 
        <!-- See the FAQ here: http://maven.apache.org/maven-1.x/plugins/pmd/faq.html --> 
        <!-- See the rule sets here: http://pmd.sourceforge.net/ (menu on the left has a Rule Sets section --> 
        <!-- Unused rule sets --> 
        <!-- <ruleset>/rulesets/naming.xml</ruleset> --> 

        <!-- Unable to find rule sets --> 
        <!-- <ruleset>/rulesets/emptycode.xml</ruleset> --> 
        <!-- <ruleset>rulesets/comments.xml</ruleset> --> 
        <!-- <ruleset>/rulesets/unnecessary.xml</ruleset> --> 
        <!-- <ruleset>/rulesets/logging.xml</ruleset> --> 

        <!-- used rule sets --> 
        <!-- http://pmd.sourceforge.net/rules/java/basic.html --> 
        <ruleset>/rulesets/basic.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/braces.html --> 
        <ruleset>/rulesets/braces.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/clone.html --> 
        <ruleset>/rulesets/clone.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/codesize.html --> 
        <ruleset>/rulesets/codesize.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/controversial.html --> 
        <ruleset>/rulesets/controversial.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/coupling.html --> 
        <ruleset>/rulesets/coupling.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/design.html --> 
        <ruleset>/rulesets/design.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/finalizers.html --> 
        <ruleset>/rulesets/finalizers.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/imports.html --> 
        <ruleset>/rulesets/imports.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/j2ee.html --> 
        <ruleset>/rulesets/j2ee.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/junit.html --> 
        <ruleset>/rulesets/junit.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/javabeans.html --> 
        <ruleset>/rulesets/javabeans.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/migrating.html --> 
        <ruleset>/rulesets/migrating.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/optimizations.html --> 
        <ruleset>/rulesets/optimizations.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/strictexception.html --> 
        <ruleset>/rulesets/strictexception.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/strings.html --> 
        <ruleset>/rulesets/strings.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/sunsecure.html --> 
        <ruleset>/rulesets/sunsecure.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/typeresolution.html --> 
        <ruleset>/rulesets/typeresolution.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/unusedcode.html --> 
        <ruleset>/rulesets/unusedcode.xml</ruleset> 
       </rulesets> 
      </configuration> 
     </plugin> 
    </plugins> 
</reporting> 
+0

Tôi chạy PMD như một phần của Sonar. Sonar cung cấp một GUI để quản lý các quy tắc nào được kích hoạt. –

+0

Sonar trông rất thú vị. Tôi sẽ điều tra thêm về vấn đề đó. Bây giờ, tôi vẫn quan tâm đến sự hiểu biết nếu có một cách để giải quyết nhu cầu của tôi thông qua cấu hình maven ví dụ? – Bellini

Trả lời

2

Định nghĩa của các quy tắc và kích hoạt của nó là trên các tập tin ruleset. Khi bạn có một bản sao của các tệp trên thư mục "rulesets", chỉ cần xóa hoặc nhận xét nút trên tệp ruleset chứa tham chiếu đến quy tắc. Trong trường hợp này, "AvoidInstantiatingObjectsInLoops" (net.sourceforge.pmd.rules.optimization.AvoidInstantiatingObjectsInLoops) là một quy tắc Tối ưu hóa, do đó, nó có thể nằm trong "/rulesets/optimizations.xml".

Chỉ cần chỉnh sửa tệp, tìm kiếm sự bao gồm của quy tắc và nhận xét hoặc xóa nút quy tắc tương ứng.

Tôi không biết nội dung tệp của bạn, vì vậy bạn có thể có quy tắc bao gồm nhiều lần.

+0

"rulesets" là một phần của plugin, không phải là thư mục cục bộ cho dự án maven của riêng tôi. – Basil

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