🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 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" /> ```