# PHPMD配合ant用法
我們提供了一個集成PHPMD到[ant構建工具](http://ant.apache.org/)的[ant任務](http://ant.apache.org/manual/targets.html),來使構建過程變得更輕松。ant任務jar文件可以從PHPMD主頁[下載].(https://phpmd.org/download/extensions#ant-task)
您有兩種方式使用。一種是copy或者關聯jar文件到ant安裝目錄的lib文件夾。
```bash
mapi@arwen ~ $ wget \
http://phpmd.org/download/extensions/ant-phpmd-0.1.0.jar
...
mapi@arwen ~ $ ln -s ~/ant-phpmd-0.1.0.jar /opt/ant/lib/ant-phpmd.jar
```
第二種是使用``-lib``開關調用ant
```mapi@arwen ~ $ ant -lib ant-phpmd-0.1.0.jar```
現在可以在build.xml中使用PHPMD了。我們增加一個任務定義通知ant有新任務,并使用自定義的標識符來注冊它。
```xml
<?xml version="1.0" encoding="UTF-8" ?>
<project name="phpmd.example" default="example" basedir=".">
<taskdef name="phpmd" classname="org.phpmd.ant.PHPMDTask"/>
</project>
```
現在我們可以用PHPMD任務的xml元素``<phpmd />``調用PHPMD任務:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="phpmd.example" default="example" basedir=".">
<taskdef name="phpmd" classname="org.phpmd.ant.PHPMDTask"/>
<target name="example">
<phpmd rulesetfiles="unusedcode" failonerror="off">
<formatter type="xml" toFile="${basedir}/pmd.xml" />
<fileset dir="${basedir}/PHPMD">
<include name="*.php" />
</fileset>
</phpmd>
</target>
</project>
```
## 參數
PHPMD任務的xml元素可以使用的屬性
屬性 | 描述 | 必選
---|---|----
rulesetfiles | 逗號隔開的規則集 ('rulesets/basic.xml,rulesets/design.xml') 或者內建規則集標識符 | 必須,或者使用規則集內嵌元素
failonerror | 在處理文件時出現錯誤是否導致失敗 | No
failOnRuleViolation | PHPMD發現問題時是否導致失敗 | No
minimumPriority | 規則閾值;低權重規則將不被使用 | No
## 內嵌xml元素
``<formatter />``指定輸出文件的格式
**參數**
屬性 | 描述 | 必選
---|---|----
type | 報告輸出格式.可以是xml,html,text | Yes
toFile | 報告寫入文件名 | Yes
``<ruleset />``元素 也可以指定規則集。這是上一個示例的修改版:
```xml
<target name="example">
<phpmd failonerror="off">
<formatter type="text" toFile="${basedir}/pmd.xml" />
<ruleset>unusedcode</ruleset>
<ruleset>codesize</ruleset
<fileset dir="${basedir}/PHPMD">
<include name="*.php" />
</fileset>
</phpmd>
</target>
```
## XSLT對報告文件后期處理
有幾個XSLT腳本可以把XML報告轉換成漂亮的html頁面。確保在PHPMD任務調用里使用XML格式化工具,例如:
```<formatter type="xml" toFile="${builddir}/~report.xml"/>```
然后在PHPMD任務的后面使用:
```xml
<xslt in="${builddir}/~report.xml"
style="${basedir}/report.xslt"
out="${reportdir}/report.html" />
```