3

ビルドにカスタムPMDルールセットファイルを使用したいのですが。基本的に、いくつかのルールをオフにして、組み込みのルールセットパッケージの多くを使用したいと思います。

たとえば、文字列と基本ルールのみが必要だとすると、次のルールセットファイルがあります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>

次に、次のように、そのファイルへの参照をAntタスクに含めます。

<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>

これは、次の例外で失敗します。

ビルドに失敗しましたE:\ build.xml:120:java.lang.RuntimeException:そのクラスが見つかりませんでしたリソースrulesets/basics.xmlが見つかりません。リソースが有効なファイルまたはURLであるか、net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:229)のCLASSPATH(net.sourceforge.pmd.RuleSetFactory.createSingleRuleSet(RuleSetFactory.java:135))にあることを確認してください。 net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:85)..。

基本的に、ルールセットxmlファイルはタスクのクラスパスを壊します。クラスパス要素をpmdタスクに追加しようとしましたが、機能しません。

カスタムルールセットファイルを機能させるには、何を追加する必要がありますか?ルールセットファイルではなく、antファイルに何かを追加したいと思います。

4

1 に答える 1

1

ドー!SOにこれを書き出すことは、私の問題をデバッグするのに役立ちました。問題は、basic.xmlと呼ばれるbasics.xmlがないことでした。タイプミスを修正すると、すべてが正常に実行されます。

于 2010-06-21T14:27:20.960 に答える