Voici un exemple d’utilisation des règles PMD définies dans un fichier pom.xml par sonar.
La synchronisation n’est pas automatique mais peut se faire simplement. On doit décrire les nouvelles règles façon sonar, et déployer le tout sur le serveur.

Petites explications :

Maven permet de configurer des règles pmd spécifiques.

      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-pmd-plugin</artifactId>
      <configuration>
        <rulesets>
          <ruleset>${project.build.outputDirectory}/rulesets/org-printstacktrace-pmd.xml</ruleset>
        </rulesets>
      </configuration>

Dans le monde réel, vous pouvez utiliser une configuration posée sur un serveur :

  <ruleset>http://myserveur/rulesets/org-printstacktrace-pmd.xml</ruleset>

Configuration d’une règle PMD dans le ficher org-printstacktrace-pmd.xml

<ruleset name="Try-finally PMD ruleset">
    <rule name="PrintStackTracePackageName" message="Package name must start with org.printstacktrace"
class="net.sourceforge.pmd.rules.XPathRule">
        <description>
        Package name must start with org.printstacktrace.
        </description>
            <properties>
                <property name="xpath">
                    <value>
                        //PackageDeclaration/Name[not
(starts-with(@Image,'org.printstacktrace.') )]
                    </value>
                </property>
            </properties>
        <priority>3</priority>
    </rule>
</ruleset>

Décrire la règle pour sonar dans le fichier yourdsonarhome\extensions\rules\pmd\pmd-sonar.xml

<rules>
  <rule key="PrintStackTracePackageName">
    <name>Package name must start with org.printstacktrace.</name>
    <configKey>org-printstacktrace-pmd.xml/PrintStackTracePackageName</configKey>
    <category name="Reliability"/>
    <description><![CDATA[Package name must start with org.printstacktrace.]]></description>
  </rule>
</rules>

Tester en 2 minutes …

  • télécharger la dernière version de sonar : http://sonar.codehaus.org/
  • installer sonar (dé-zipper l’archive)
  • dé-zipper le fichier extensions.zip dans le répertoire de sonar (installation des nouvelles règles).
  • lancer sonar
  • activer la nouvelle règle dans le profil sonar.
  • décompresser l’archive :sonar-pmd.zip
  • exécuter  « mvn install sonar:sonar »
  • vérifier le résultat sur http://localhost:9000/
  • A ajouter à ma ‘Todo List’

  • Rechercher un plugin sonar de synchronisation des configurations maven de checkstyle, pmd, findbug, …
  • Trouver un plugin sonar de synchronisation des profils de check sonar avec la configuration maven.
  • Réaliser les plugins si dessus, si ils n’existent pas.

    Liens utiles :

    http://markmail.org/message/m7lwwnzy67i5ll3g
    http://old.nabble.com/PMD-custom-rule-problem-td20304856.html
    http://sonar.codehaus.org/what-makes-checkstyle-pmd-findbugs-and-macker-complementary/
    http://www.developpez.net/forums/d848532/general-developpement/conception/outils/integration-continue/sonar-pmd-customs-rules/

    Tags: , ,