1

我有一个 JAVA ANT 项目,我正在尝试将 PMD 脚本与其集成,以便我可以检查项目中的所有错误和警告。
下面是我在 build.xml 中添加的 ANT 脚本片段:

<property name="pmd.dir" value="buildconfig/build/pmd/" />
<path id="pmd.lib" >
   <fileset dir="${pmd.dir}">
     <include name="*.jar"/>
     <exclude name="/rulesets" />
   </fileset>
</path>
<target name="pmd" depends="init">
   <echo message="PMD Starting-----" />
   <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.lib"/>
   <pmd shortFilenames="true">
      <ruleset>unusedcode</ruleset>
      <formatter type="text" toFile="${pmd.dir}/pmd-ant-results.txt"/>
      <fileset dir="modules/app/">
         <include name="**/*.java"/>
      </fileset>    
   </pmd>
</target>  

ANT 构建与 PMD 一起工作正常,提供正确的错误报告,但是当 PMD 遇到代码中的任何错误时,我需要将构建中止为失败。
我尝试添加failOnRuleViolation="yes",但这并没有停止构建。
还有什么我需要在脚本中添加的吗?

4

1 回答 1

1

尝试failOnRuleViolation="true"而不是failOnRuleViolation="yes"...

<pmd shortFilenames="true" failOnRuleViolation="true">
    ...

一些 Ant 任务将trueyes视为等价的,但许多任务根本不知道如何处理yes。这可能<pmd>是那些无法处理的任务之一yes

根据经验,以后总是使用trueandfalse而不是yesand来避免这个问题no

于 2015-10-19T14:52:21.310 回答