2014-04-16 15 views
11

Chcę wiedzieć, czy istnieje sposób uruchamiania wszystkich zestawów reguł PMD z wiersza polecenia.Uruchamianie wszystkich zestawów reguł PMD z wiersza polecenia

Użyłem PMD zintegrowanego z Eclipse IDE i Maven. Ale teraz muszę uruchomić go z CLI. Sprawdziłem tę stronę http://pmd.sourceforge.net/pmd-5.1.0/running.html i mówi, można go uruchomić z CLI, ale z określonych zestawów reguł:

C:\tmp\pmd-bin-5.1.0\pmd\bin>pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R rulesets/java/unusedcode.xml 

W tym przykładzie, po prostu uzyskać wyniki dla Java niewykorzystany kod reguły i próbuję Aby uzyskać coś takiego:

C:\tmp\pmd-bin-5.1.0\pmd\bin>pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R rulesets/java/*.xml 

i uzyskać wyniki dla wszystkich reguł w zestawach reguł Java.

Odpowiedz

7

Możesz zdefiniować plik konfiguracyjny zawierający zestawy reguł, które chcesz uruchomić. Możesz nadać ten plik jako parametr po argumencie -R w wierszu poleceń.

Przykładowy plik jest tutaj (MyRules.xml): argumenty linii

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<ruleset name="PMD.rul" xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd"> 

    <description>This ruleset was created from PMD.rul</description> 

    <rule ref="rulesets/java/basic.xml"> 
    <exclude name="UnnecessaryFinalModifier"/> 
    </rule> 

    <rule ref="rulesets/java/braces.xml"/> 
    <rule ref="rulesets/java/clone.xml"/> 
    <rule ref="rulesets/java/comments.xml"/> 

    <rule ref="rulesets/java/controversial.xml"> 
    <exclude name="AtLeastOneConstructor"/> 
    <exclude name="UnnecessaryParentheses"/> 
    </rule> 

    <rule ref="rulesets/java/design.xml"> 
    <exclude name="GodClass"/> 
    </rule> 

    <rule ref="rulesets/java/empty.xml"/> 
    <rule ref="rulesets/java/finalizers.xml"/> 
    <rule ref="rulesets/java/imports.xml"/> 
    <rule ref="rulesets/java/j2ee.xml"/> 
    <rule ref="rulesets/java/javabeans.xml"/> 
    <rule ref="rulesets/java/junit.xml"/> 
    <rule ref="rulesets/java/logging-jakarta-commons.xml"/> 
    <rule ref="rulesets/java/logging-java.xml"/> 
    <rule ref="rulesets/java/naming.xml"/> 
    <rule ref="rulesets/java/optimizations.xml"/> 
    <rule ref="rulesets/java/strictexception.xml"/> 
    <rule ref="rulesets/java/strings.xml"/> 
    <rule ref="rulesets/java/sunsecure.xml"/> 
    <rule ref="rulesets/java/typeresolution.xml"/> 

    <rule ref="rulesets/java/unnecessary.xml"> 
    <exclude name="UnnecessaryFinalModifier"/> 
    <exclude name="UnnecessaryReturn"/> 
    <exclude name="UselessParentheses"/> 
    </rule> 

    <rule ref="rulesets/java/unusedcode.xml"/> 

</ruleset> 

polecenie będzie wyglądać następująco:

C:\tmp\pmd-bin-5.1.0\pmd\bin>pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R MyRules.xml 
+13

Akceptuję swoją odpowiedź, ponieważ jest to ważne rozwiązanie. Ale znalazłem, jak to zrobić, używając tylko plików PMD. Po prostu uruchom "rulesets/internal/all-java.xml" – Angelo

+0

Aby uzyskać zaktualizowaną listę wszystkich reguł java, zajrzyj do katalogu zawierającego wszystkie zestawy reguł Javy w repozytorium kodu źródłowego - [pmd/pmd/pmd-java/src/main/resources/rulesets/java] (https://github.com/pmd/pmd/tree/master/pmd-java/src/main/resources/rulesets/java). – mucaho

+0

Dodatkowo, dla wygodnej listy wszystkich reguł java, zobacz odpowiedni plik [pmd/pmd/pmd-core/src/main/resources/rulesets/internal/all-java.xml] (https://github.com/ pmd/pmd/blob/master/pmd-core/src/main/resources/rulesets/internal/all-java.xml). – mucaho

Powiązane problemy