2013-04-15 12 views
12

Chcę wykluczyć pojedynczą regułę PMD w POM, ale ona nie działa. Próbowałem tworzenia PMD-exclude.xml (w tym samym katalogu co pom.xml):Usuwanie pojedynczego sprawdzenia reguły z PMD w dodatku do wtyczki

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

Od http://www.ing.iac.es/~docs/external/java/pmd/howtomakearuleset.html i odwołuje go w 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> 

ale trzyma zgłaszanie tych zasad.

Ponadto: Nie chcę określać reguł, które należy sprawdzić, ponieważ nowsze wersje mogą (i będą) zawierać nowe i nie chcę sprawdzać, które nowe reguły będą uruchamiane w każdej nowej wersji.

+0

były znaleźć żadnego rozwiązania? Próbuję z excludeFromFailureFile, ale nawet to nie działa. – Jaga

+1

Nie mogłem znaleźć prawdziwego rozwiązania tego problemu. Później przenieśliśmy się do Sonaru i możesz skonfigurować, które reguły obowiązują, a czego potrzebowałem, plus całą grafikę i inne fajne rzeczy. Ale to nie jest odpowiedź na to pytanie. –

+0

Dzięki za szybką reakcję – Jaga

Odpowiedz

5

Myślę, że będziesz musiał dodać zestawy reguł, które chcesz sprawdzić, i odrzucić tylko te reguły, których nie potrzebujesz.

PMD-exclude.xml powinna wyglądać następująco:

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

nowe zestawy reguł są dodawane z czasem przez zespół PMD? Twoja odpowiedź wydaje się być zbliżona do tego, czego potrzebowałem. –

0

@ rozwiązanie marcelopazzo pracował dla mnie. Chcę tylko dodać, że jeśli pracujesz z projektem wielomodułowego maven, będziesz musiał zaktualizować swoje odwołanie do pmd-exclude.xml, chyba że masz zamiar mieć kopię tego pliku w każdym module.

Przykład

<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> 
Powiązane problemy