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 …
A ajouter à ma ‘Todo List’
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/