1. #1
    Membre du Club
    Inscrit en
    octobre 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 94
    Points : 52
    Points
    52

    Par défaut sonar - PMD customs rules

    Bonjour,

    je tente d'integrer des regles PMD (que j'ai créé) dans sonar.
    Je ne comprend pas se qui bloque.

    voila ce que j'ai:

    un jar avec l'arborescence suivante:

    pmd.jar (placé dans SONAR_HOME/extensions/rules/pmd/)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -pmd.xml
    -org
         |_sonar
                  |_pmd
                          |_WhileLoopsMustUseBracesRule
    fichier pmd.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?xml version="1.0" encoding="utf-8"?>
    <ruleset name="Mes regles PMD" xmlns="http://pmd.sf.net/ruleset/1.0.0"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0
    	http://pmd.sf.net/ruleset_xml_schema.xsd"
    	xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
    
    	<description>Mes regles PMD</description>
    
    	<rule name="WhileLoopsMustUseBracesRule" 
    		message="Ne pas utiliser de while sans accolades (version Java)"
    		class="org.sonar.pmd.WhileLoopsMustUseBracesRule">
    		<description>Controle la prosence d'accolades apres les while (version Java)</description>
    		<priority>3</priority>
    		<example>
    		<![CDATA[
    			   public void doSomething() {
    				 while (true)
    					 x++;
    			   }
    		  ]]>
    		</example>
    	</rule>           	
    </ruleset>

    le fichier WhileLoopsMustUseBracesRule.java (exemple du site pmd.sourceforge):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    package org.sonar.pmd;
    
    import net.sourceforge.pmd.AbstractRule;
    import net.sourceforge.pmd.ast.ASTBlock;
    import net.sourceforge.pmd.ast.ASTWhileStatement;
    import net.sourceforge.pmd.ast.SimpleNode;
    
    
    
    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));
    	    }
    }

    fichier index.xml (placé a coté du jar)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0"?>
    <rules>
    	<rule key="WhileLoopsMustUseBracesRule">
    		<name>While statements need braces</name>
    		<configKey>pmd.xml/WhileLoopsMustUseBracesRule</configKey>
    		<category name="Usability" />
    		<description>contrôle la présence d'accolades après les while (version Java)</description>
    	</rule>	
    </rules>

    le probleme est que sonar ne se demarre pas.
    Par contre si j'enleve le fichier index.xml, ca demarre, mais biensur ca ne marche pas

    je vous donne egalement le log de sonar (quand il ne se demarre pas)

    j'espere que quelqu'un pourra m'aider

    merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Inscrit en
    octobre 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 94
    Points : 52
    Points
    52

    Par défaut

    arg....... personne ne peut m'aider?

  3. #3
    Membre du Club
    Inscrit en
    octobre 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 94
    Points : 52
    Points
    52

    Par défaut

    j'ai resolu mon probleme tout seul

    Pour une raison inconnu je suis obligé de mettre un paramettre pour chaque regle dans mon fichier index.xml

    du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <param key="maxviolations" type="i">
    			<description>The maximum number of violations per class.</description>
    		</param>

    voila

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2012, 01h17
  2. Sonar Maven erreur PMD
    Par princedelu79230 dans le forum Intégration Continue
    Réponses: 3
    Dernier message: 13/07/2011, 15h36
  3. New regles pmd avec sonar
    Par captu dans le forum Intégration Continue
    Réponses: 19
    Dernier message: 08/12/2009, 10h28
  4. [PMD] Création de régle PMD Rule Desinger
    Par menakikou dans le forum Autres
    Réponses: 0
    Dernier message: 20/10/2009, 09h49
  5. héritage de "custom build rule"
    Par nec3 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 22/07/2009, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo