2012-02-05 7 views
6

Mam PMD uruchomiony przez Maven 2. Teraz mam wszystkie zestawy reguł w miejscu, aby zobaczyć, co jest generowane (patrz kod poniżej). Przejmuję i naprawiam rzeczy, które mają sens, aby je naprawić. Istnieją jednak przypadki, takie jak w zestawie reguł "optymalizacje", w którym chcę zachować ustawioną regułę, ale wyłącza jedną z reguł w zestawie reguł. W moim przypadku chcę wyłączyć regułę "AvoidInstantiatingObjectsInLoopss".PMD z Maven - Jak wyłączyć jedną regułę w zestawie reguł?

Oto odcinek raportowanie moim pom.xml

<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

Prowadzę PMD jako część sonaru. Sonar dostarcza GUI do zarządzania włączonymi regułami. –

+0

Sonar wygląda bardzo interesująco. Zbadam więcej w tym zakresie. Na razie nadal jestem zainteresowany zrozumieniem, czy istnieje sposób na zaspokojenie moich potrzeb poprzez np. Konfiguracje maven? – Bellini

Odpowiedz

2

Definicja zasad, a jego aktywacja jest zestaw reguł plików. Ponieważ masz kopię plików w folderze "setssets", po prostu usuń lub skomentuj węzeł w pliku zestawu reguł, który zawiera odniesienie do reguły. W tym przypadku "AvoidInstantiatingObjectsInLoops" (net.sourceforge.pmd.rules.optimization.AvoidInstantiatingObjectsInLoops) jest regułą optymalizacji, więc prawdopodobnie znajduje się w "/rulesets/optimizations.xml".

Po prostu wyedytuj plik, znajdź włączanie reguły i skomentuj lub usuń odpowiedni węzeł reguły.

Nie znam zawartości Twoich plików, więc możesz włączyć regułę więcej niż raz.

+0

"Zestawy reguł" są częścią wtyczki, a nie folderem lokalnym do mojego własnego projektu. – Basil