2014-04-16 12 views
11

Desidero sapere se esiste un modo per eseguire tutti i set di regole PMD dalla riga di comando.Esecuzione di tutti i set di regole PMD dalla riga di comando

Ho utilizzato PMD integrato con Eclipse IDE e Maven. Ma ora ho bisogno di eseguirlo dalla CLI. Ho controllato questa pagina http://pmd.sourceforge.net/pmd-5.1.0/running.html e si dice è possibile eseguire da CLI, ma con set di regole specificate:

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 

In questo esempio, è appena ottenere risultati per Java inutilizzato codice regola e sto cercando per ottenere qualcosa di simile:

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 

e ottenere risultati per tutte le regole di set di regole Java.

risposta

7

È possibile definire un file di configurazione che include i set di regole che si desidera eseguire. È possibile assegnare questo file come parametro dopo l'argomento -R nella riga di comando.

Un file di esempio è qui (MyRules.xml): gli argomenti della riga

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

Il comando sarà simile a questa:

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

accetto la tua risposta, perché è una valida soluzione. Ma ho trovato come farlo usando solo i file PMD. Basta eseguire "rulesets/internal/all-java.xml" – Angelo

+0

Per un elenco aggiornato di tutte le regole java, dare un'occhiata alla directory che contiene tutti i set di regole java nel repository del codice sorgente - [pmd/pmd/pmd-java/src/principale/risorse/set di regole/java] (https://github.com/pmd/pmd/tree/master/pmd-java/src/main/resources/rulesets/java). – mucaho

+0

Inoltre, per un elenco conveniente di tutte le regole java, consultare il rispettivo file [pmd/pmd/pmd-core/src/main/resources/rulesets/internal/all-java.xml] (https://github.com/ PMD/PMD/blob/master/PMD-core/src/main/risorse/set di regole/interno/all-java.xml). – mucaho

Problemi correlati