TITLE:AntでPMDを実行する
#navi(../)
*AntでPMDを実行する [#le25bc07]
#adsense2
>編集者:[[Terai Atsuhiro>aterai]]~
作成日:2012-01-24~
更新日:&lastmod;

#contents(none)

**概要 [#s4081d7a]
AntからPMDを実行します。

**サンプルターゲット [#h0deaf72]
#code{{
<target name="pmd">
  <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" />
  <mkdir dir="${build.reports}" />
  <pmd rulesetfiles="basic,imports,strings"
       encoding="${compile.encoding}" targetjdk="${compile.source}">
    <classpath refid="project.class.path" />
    <formatter type="xml" toFile="${build.reports}/pmd.xml" />
    <formatter type="text" toConsole="true" />
    <fileset dir="${src.dir}">
      <include name="**/*.java" />
    </fileset>
  </pmd>
</target>
}}

**解説 [#i9aab092]
+[http://pmd.sourceforge.net/ PMD]からダウンロードしたpmd-bin-4.3.zipのlib以下にあるpmd-4.3.jarなどのjarファイルを%ANT_HOME%\lib にコピー
+ ant pmd で、pmd.xml を生成し、jenkinsのPMDプラグインなどで読み込む

*** toFile or toConsole [#w61eb2ba]
FindBugsのように、xmlファイルとコンソールの両方に結果を表示したい場合が多いのですが、
 ant -v pmd
では、情報が多すぎるので formatter 要素の toConsole 属性を使用します。

- [http://pmd.sourceforge.net/snapshot/ant-task.html PMD - Ant Task] にあるように、<formatter type="html" toFile="pmd_report.html" toConsole="true"/> や、<formatter type="xml" toFile="${build.reports}/pmd.xml" toConsole="true" /> と toFile と toConsole を指定しても、ファイルにのみ結果が書き出されて、コンソールには何も出力されない
- <formatter type="text" toConsole="true" /> と、toFile 属性なしでtoConsole="true"とする必要がある?
-- <formatter type="text" toConsole="false" /> は、「toFile or toConsole needs to be specified in Formatter」となって、BUILD FAILED
- ファイルとコンソールの両方に出力する場合は、formatterを複数指定しなくてはならない?

**参考リンク [#c56145b8]
- [http://pmd.sourceforge.net/ PMD]

**コメント [#sc369256]
#comment