格式 phpmd [filename|directory] [report format] [ruleset file]:
```bash
mapi@arwen ~ $ phpmd PHP/Depend/DbusUI/ xml rulesets/codesize.xml
```
```xml
<?xml version="1.0" encoding="UTF-8" ?>
<pmd version="0.0.1" timestamp="2009-12-19T22:17:18+01:00">
<file name="/projects/pdepend/PHP/Depend/DbusUI/ResultPrinter.php">
<violation beginline="67"
endline="224"
rule="TooManyMethods"
ruleset="Code Size Rules"
package="PHP_Depend\DbusUI"
class="PHP_Depend_DbusUI_ResultPrinter"
priority="3">
This class has too many methods, consider refactoring it.
</violation>
</file>
</pmd>
```
可以給PHPMD傳一個文件名,也可以是一個PHP代碼目錄。
PHPMD Phar包里面包含了規則集文件,雖然"rulesets/codesize.xml"參數看起來很像一個文件。
## 命令行選項
- 默認輸出是XML格式,你可以把它重定向到一個文件中,然后對其XSLT,或者做些其他操作。
- 對于內建規則集,可以使用簡短的名字,比如:phpmd PHP/Depend/DbusUI/ xml codesize
- 命令行界面也接受附加參數:
- --minimumpriority - 規則優先級; 更低優先級的規則不會使用。
- --reportfile - 輸出報告到文件,代替默認的STDOUT。
- --suffixes - 有效文件后綴名,以逗號分隔多個文件。
- --exclude - 忽略的目錄,以逗號分隔多個目錄。
- --strict - 同時報告那些以@SuppressWarnings注釋掉的節點。(注:@SuppressWarning意為禁止告警)
```bash
#An example command line:
phpmd PHP/Depend/DbusUI xml codesize --reportfile phpmd.xml --suffixes .php
```
## 使用多個規則集
PHPMD使用的所謂規則集,配置/定義了應用到被測代碼上的一組規則。PHPMD默認發布的版本中包含了一些規則集,可以直接使用。可以調用PHPMD命令,其中包含了規則集名:
```bash
~ $ phpmd /path/to/source text codesize
```
可以使用逗號傳遞多個規則名:
```bash
~ $ phpmd /path/to/source text codesize,unusedcode,naming
```
也可以在內建規則集中混合自定義規則集:
```bash
~ $ phpmd /path/to/source text codesize,/my/rules.xml
```
這就是說,可以自定義規則集組合檢查代碼。
## 退出碼
PHPMD命令行工具當前定義了三個退出碼。
- 0 表示一切正常。這意味著沒有錯誤/異常,同時在本次測試中PHPMD沒有檢查到任何違規代碼。
- 1 表示出現錯誤/異常,打斷了PHPMD執行過程。
- 2 這個退出碼表明PHPMD執行完了測試過程,沒有被錯誤/異常打斷。但是在分析過的代碼里檢測到了違規代碼。
## 渲染器
目前 PHPMD 帶有以下三個渲染器:
- xml, 把報告格式化為XML
- text, 簡單文本格式
- html, 簡單HTML,但可能有問題。