2010-06-21 3 views
2

Je souhaite utiliser un fichier de jeu de règles PMD personnalisé pour ma génération. Fondamentalement, je veux utiliser de nombreux paquets de jeux de règles intégrés avec certaines règles désactivées.Utilisation d'un fichier de jeu de règles PMD personnalisé dans Ant

Par exemple, supposons que je ne voulais que les règles de cordes et les bases, j'ai ce fichier ruleset, appelé ruleset.xml:

<?xml version="1.0"?> 
    <ruleset name="Custom ruleset" 
     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> 
    This ruleset checks my code for bad stuff 
    </description> 
    <rule ref="rulesets/strings.xml"/> 
    <rule ref="rulesets/basics.xml"/> 

</ruleset> 

Et puis-je inclure une référence à ce fichier dans ma tâche Ant, comme ceci:

<target name="pmd" 
      description="Analyzes our source code for violations of good Java"> 
     <pmd shortFilenames="true" failuresPropertyName="failures.count" 
      rulesetfiles="ruleset.xml"> 

     <formatter type="xml" toFile="${build.home}/pmd.xml" /> 
     <fileset dir="src"> 
      <include name="**/*.java" /> 
     </fileset> 
     </pmd> 
     <echo message="PMD detected ${failures.count} violations" /> 
     <xslt in="${build.home}/pmd.xml" 
     style="tools/pmd/etc/xslt/pmd-report.xslt" 
     out="${build.home}/pmd.html" /> 

    </target> 

ceci échoue avec l'exception suivante:

BUILD FAILED E: \ build.xml: 120: java.lang.RuntimeException: Couldn » t trouve cette classe Can not find resources rulesets/basics.xml. Assurez-vous que la ressource est un fichier valide ou une URL ou est sur le CLASSPATH à net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode (RuleSetFactory.java:229) à net.sourceforge.pmd.RuleSetFactory.createSingleRuleSet (RuleSetFactory.java:135) à net.sourceforge.pmd.RuleSetFactory.createRuleSets (RuleSetFactory.java:85) ...

Fondamentalement, le fichier xml ruleset rompt le classpath pour la tâche. J'ai essayé d'ajouter un élément classpath à la tâche pmd, mais cela ne fonctionne pas.

Que dois-je ajouter pour que mon fichier de jeu de règles personnalisé fonctionne? Je préférerais ajouter quelque chose au fichier ant, plutôt que le fichier ruleset.

Répondre

0

Doh! L'écriture sur SO a permis de déboguer mon problème. Le problème était qu'il n'y avait pas de fichier basics.xml, il s'appelait basic.xml. Corrigez la faute de frappe et tout va bien.

Questions connexes