2013-04-15 8 views
12

Ich möchte eine einzelne PMD-Regel in POM ausschließen, aber es funktioniert nicht. Ich habe versucht, ein PMD-exclude.xml Erstellen (im selben Verzeichnis wie die pom.xml):Entfernen Sie eine einzelne Regelprüfung von PMD in Maven-Plugin

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

Von http://www.ing.iac.es/~docs/external/java/pmd/howtomakearuleset.html und verweisen sie 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> 

Aber es hält Berichterstattung über diese Regeln.

Auch: Ich möchte nicht angeben, welche Regeln es überprüfen muss, da neuere Versionen neue enthalten können (und werden) und ich möchte nicht überprüfen, welche neuen Regeln in jeder neuen Version ausgeführt werden.

+0

Waren eine Lösung zu finden? Ich versuche mit excludeFromFailureFile, aber selbst das funktioniert nicht. – Jaga

+1

Ich konnte dafür keine echte Lösung finden. Später sind wir nach Sonar gewandert und Sie können konfigurieren, welche Regeln angewendet werden. Das ist, was ich brauchte, plus all die Grafiken und andere coole Sachen. Aber das ist nicht die Antwort auf diese Frage. –

+0

Vielen Dank für Ihre schnelle Antwort – Jaga

Antwort

5

Ich denke, Sie müssen die Regelsätze hinzufügen, die Sie überprüfen und verwerfen nur die bestimmte Regel, die Sie nicht benötigen.

Der PMD-exclude.xml sollte wie folgt aussehen:

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

neue Regelsätze werden im Laufe der Zeit von PMD-Team hinzugefügt? Ihre Antwort scheint genau zu sein, was ich brauchte. –

0

@ marcelopazzo Lösung für mich gearbeitet. Ich möchte nur hinzufügen, dass wenn Sie mit einem Maven-Projekt mit mehreren Modulen arbeiten, Sie Ihre Referenz auf pmd-exclude.xml aktualisieren müssen, es sei denn, Sie planen, eine Kopie dieser Datei in jedem Modul zu haben.

Beispiel

<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> 
Verwandte Themen