2010-06-21 90 views
2

我想爲我的構建使用自定義PMD規則集文件。基本上,我想使用許多內置的規則集包,並關閉了一些規則。在Ant中使用自定義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:Couldn」找到那個類找不到資源規則集/ 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任務添加一個classpath元素,但這不起作用。

爲了使我的自定義規則集文件起作用,我必須添加什麼?我寧願添加一些東西到ant文件中,而不是規則集文件。

回答

0

Doh!把它寫在SO上幫助調試了我的問題。問題是沒有basics.xml,它被稱爲basic.xml。修復錯字,一切都運行良好。

相關問題