2012-02-05 11 views
6

devo PMD correre via Maven 2. In questo momento ho tutti i set di regole in atto per vedere ciò che viene generato (vedi codice qui sotto). Sto esaminando e sistemando le cose che per me hanno senso fissare. Tuttavia, ci sono casi, come nel set di regole "ottimizzazioni" dove voglio mantenere il set di regole, ma disattivare solo una delle regole all'interno del set di regole. Nel mio caso, voglio disabilitare la regola "AvoidInstantiatingObjectsInLoopss".PMD con Maven - Come disabilitare una regola all'interno di un set di regole?

Qui è la sezione di riferimento della mia 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

corro PMD come parte del Sonar. Sonar fornisce una GUI per la gestione delle regole abilitate. –

+0

Il sonar sembra molto interessante. Indagherò di più a riguardo. Per ora, sono ancora interessato a capire se c'è un modo per soddisfare le mie esigenze tramite le configurazioni di Maven, ad esempio? – Bellini

risposta

2

La definizione delle regole e la sua attivazione è sui file set di regole. Come si dispone di una copia dei file nella cartella "set di regole", basta cancellare o commentare il nodo sul file set di regole che contiene il riferimento alla regola. In questo caso, "AvoidInstantiatingObjectsInLoops" (net.sourceforge.pmd.rules.optimization.AvoidInstantiatingObjectsInLoops) è una regola di ottimizzazione, quindi è probabile che sia in "/rulesets/optimizations.xml".

Basta modificare il file, ricercare l'inserimento della regola, e commentare o eliminare il nodo regola corrispondente.

non so il contenuto dei file, in modo si potrebbe avere la regola incluso più di una volta.

+0

Il "set di regole" è parte del plugin, non una cartella locale per il mio progetto maven. – Basil

Problemi correlati