lakshmaji / phpmd
PHPMD 是 PHP Depend 的一个衍生项目,旨在成为广为人知的 Java 工具 PMD 的 PHP 等价物。
Requires
- php: >=5.4.0
- ext-xml: *
- pdepend/pdepend: ^2.5
Requires (Dev)
- mikey179/vfsstream: v1.6.4
- phpunit/phpunit: ^4.0
- squizlabs/php_codesniffer: ^2.0
This package is auto-updated.
Last update: 2024-08-27 03:56:39 UTC
README
PHPMD 是 PHP Depend 的一个衍生项目,旨在成为广为人知的 Java 工具 PMD 的 PHP 等价物。PHPMD 可以被视为 PHP Depend 测量的原始指标流的用户友好前端应用程序。
安装
请参阅https://phpmd.org/download/index.html
命令行使用
输入 phpmd [filename|directory] [report format] [ruleset file]
,例如
mapi@arwen ~ $ phpmd PHP/Depend/DbusUI/ xml rulesets/codesize.xml
虽然 rulesets/codesize.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>
您可以将包含 PHP 源代码的文件名或目录名传递给 PHPMD。
PHPMD Phar 分发包含规则集文件,即使上面的 "rulesets/codesize.xml" 参数看起来像文件系统引用。
命令行选项
请注意,默认输出为 XML,因此您可以将其重定向到文件并进行 XSLT 或其他操作。
您还可以使用缩写名称来引用内置的规则集,如下所示
phpmd PHP/Depend/DbusUI/ xml codesize
命令行界面还接受以下可选参数
--minimumpriority
- 规则优先级阈值;优先级低于此的规则将不会使用。--reportfile
- 将报告输出发送到指定的文件,而不是默认输出目标STDOUT
。--suffixes
- 以逗号分隔的有效源代码文件扩展名字符串,例如 php,phtml。--exclude
- 以逗号分隔的用于忽略目录的模式。--strict
- 也报告带有 @SuppressWarnings 注释的节点。--ignore-violations-on-exit
- 即使发现违规行为,也将退出代码为零。
示例命令行
phpmd PHP/Depend/DbusUI xml codesize --reportfile phpmd.xml --suffixes php,phtml
使用多个规则集
PHPMD 使用所谓的规则集,该规则集配置/定义了一组将在测试源代码中应用的规则。PHPMD 的默认分发已经包含了一些默认集,可以直接使用。您可以使用集的名称调用 PHPMD 的 cli 工具以应用此配置
~ $ phpmd /path/to/source text codesize
但是,如果您想针对源代码应用多个规则集,您也可以传递一个以逗号分隔的规则集名称列表给 PHPMD 的 cli 工具
~ $ phpmd /path/to/source text codesize,unusedcode,naming
您还可以将自定义的规则集文件与内置规则集混合使用
~ $ phpmd /path/to/source text codesize,/my/rules.xml
就是这样。通过这种行为,您可以指定要检查源代码的自定义规则集组合。
使用多个源文件和文件夹
如果需要为代码的某些部分创建一个输出,PHPMD 也允许您指定多个源目录
~ $ phpmd /path/to/code,index.php,/another/place/with/code text codesize
退出代码
PHPMD 的命令行工具目前定义了三个不同的退出代码。
- 0,此退出代码表示一切按预期工作。这意味着没有错误/异常,PHPMD 没有在测试代码中检测到任何规则违规。
- 1,此退出代码表示在执行期间发生了错误/异常,这中断了 PHPMD。
- 2,此退出代码表示 PHPMD 已成功处理测试代码,未发生错误/异常,但在分析源代码时检测到违规规则。您也可以使用
--ignore-violations-on-exit
标志来防止这种行为,即使找到违规,也会返回 0。
渲染器
目前 PHPMD 包含以下三种渲染器
- xml,将报告格式化为 XML。
- text,简单的文本格式。
- html,包含可能问题的单个 HTML 文件。
API 文档
您可以在 codedoc.pub 找到最新的类 API 文档。