格式 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,但可能有问题。