2010-10-02 6 views
1

Quelqu'un pourrait m'aider à créer une règle dans pmd pour eclipse? Je suis incapable de commencer même j'ai suivi à travers le site officiel de PMD. Je prévois de créer une règle en java au lieu de la règle XPath. Des instructions simples pour le démarrer? Mercicomment créer une règle pour les commentaires java dans pmd?

+1

Avez-vous essayé de suivre le tutoriel? http://pmd.sourceforge.net/howtowritearule.html –

+0

s j'ai suivi, mais je suis toujours incapable de choisir quelle est la meilleure façon de créer une règle, par exemple 'Ecrire une règle en Java' ou 'Écrire une expression XPath'. Quel est le moyen le plus simple? – hemanth

Répondre

0

Essayez la méthode 'Ecrire une règle en utilisant Java' car vous pouvez facilement démarrer de cette façon et plus tard vous pouvez essayer avec les expressions XPath. Vous pouvez suivre ces étapes en même temps que le link officiel.

  • Démarrer avec le package src qui vient avec PMD (par exemple PMD-4.2.x \ src), créez votre classe Java dans un package existant (par exemple PMD-4.2.5 \ src \ net \ sourceforge \ PMD \ règles \ base). Dans ce cas, il est l'exemple de code suivant (WhileLoopsMustUseBracesRule):

    package net.sourceforge.pmd.rules.basic; 

    import net.sourceforge.pmd.*; 
    import net.sourceforge.pmd.ast.*; 

    public class WhileLoopsMustUseBracesRule extends AbstractRule { 
     public Object visit(ASTWhileStatement node, Object data) { 
      SimpleNode firstStmt = (SimpleNode)node.jjtGetChild(1); 
      if (!hasBlockAsFirstChild(firstStmt)) { 
       addViolation(data, node); 
      } 
      return super.visit(node,data); 
     } 
     private boolean hasBlockAsFirstChild(SimpleNode node) { 
      return (node.jjtGetNumChildren() != 0 && (node.jjtGetChild(0) instanceof ASTBlock)); 
     } 
    } 

  • Append la règle suivante à l'intérieur basic.xml (PMD-4.2.5 \ rulesets \ basic.xml):

    Copiez coller le contenu xml de la section "Placez la règle WhileLoopsMustUseBracesRule dans un fichier de jeu de règles" dans basic.xml.

    Remplacer la ligne

    class="WhileLoopsMustUseBracesRule"> 
    

    avec

    class="net.sourceforge.pmd.rules.basic.WhileLoopsMustUseBracesRule"> 
    

    que vous devez avoir créé le fichier java (WhileLoopsMustUseBracesRule.java) à l'intérieur paquet "net.sourceforge.pmd.rules.basic"

  • Exécutez cette commande à partir de l'invite cmd si dans Windows.


    pmd.bat C:\JAVAFILE_ON_WHICH_YOU_WANT_TO_RUN_THIS_RULE xml C:\PMD\pmd-4.2.5\pmd-4.2.5\rulesets\basic.xml 

  • Pour l'OS nix (linux/Mac OS), utilisez pmd.sh au lieu de pmd.bat
  • Une fois que vous êtes en mesure de le faire fonctionner, vous pouvez créer votre propre règle à l'intérieur votre propre paquet.

Espérons que cela aide.!

Questions connexes