2013-04-15 11 views
12

Voglio escludere una singola regola PMD in POM, ma non funziona. Ho provato a generare un PMD-exclude.xml (nella stessa directory come pom.xml):Rimuovere una singola regola di controllo da PMD nel plugin Maven

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

Da http://www.ing.iac.es/~docs/external/java/pmd/howtomakearuleset.html e referenziata in 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> 

Ma mantiene riferire queste regole.

Inoltre: non voglio specificare quali regole deve controllare, poiché le versioni più recenti possono (e lo saranno) includerne di nuove e non voglio controllare quali nuove regole verranno eseguite in ogni nuova versione.

+0

dovessimo trovare una soluzione? Sto provando con excludeFromFailureFile, ma anche quello non funziona. – Jaga

+1

Non sono riuscito a trovare una soluzione reale per questo. Successivamente, siamo passati a Sonar e puoi configurare quali regole applicare, che è ciò di cui avevo bisogno oltre a tutta la grafica e altre cose interessanti. Ma questa non è esattamente la risposta a questa domanda. –

+0

Grazie per la tua risposta rapida – Jaga

risposta

5

Penso che sarà necessario aggiungere i set di regole che si desidera controllare e scartare solo la regola specifica che non è necessario.

Il PMD-exclude.xml dovrebbe assomigliare a questa:

<?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

i nuovi set di regole vengono aggiunti nel tempo dal team PMD? La tua risposta sembra essere strettamente legata a ciò di cui avevo bisogno. –

0

@ soluzione marcelopazzo ha lavorato per me. Voglio solo aggiungere che se stai lavorando con un progetto Maven multi-modulo, dovrai aggiornare il tuo riferimento a pmd-exclude.xml, a meno che tu non abbia intenzione di avere una copia di questo file in ogni modulo.

Esempio

<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> 
Problemi correlati