someblackmagic / phpmd
PHPMD 是 PHP Depend 的一个衍生项目,旨在成为著名 Java 工具 PMD 的 PHP 等价物。
该软件包的官方仓库似乎已消失,因此该软件包已被冻结。
Requires
- php: >=5.6.0
- ext-xml: *
- pdepend/pdepend: ^2.5
Requires (Dev)
- mikey179/vfsstream: v1.6.4
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: 5.7.
- squizlabs/php_codesniffer: ^2.0
- 2.7.2.x-dev
- 2.7.1
- 2.6.0
- 2.5.0
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.3
- 2.1.2
- 2.1.1
- 2.0.0
- 2.0.0-beta.7
- 2.0.0-beta.6
- 2.0.0-beta.4
- 2.0.0-beta.3
- 2.0.0-beta.1
- 1.5.x-dev
- 1.5.1
- 1.5.0
- 1.4.1
- 1.4.0
- dev-2.7.2_ImgBot_Optimize_images
- dev-2.7.2-xdebugHandler
- dev-fix-scrutinizer
- dev-add_docker
- dev-new_ui
This package is auto-updated.
Last update: 2023-05-03 05:52:26 UTC
README
PHPMD 是 PHP Depend 的一个衍生项目,旨在成为著名 Java 工具 PMD 的 PHP 等价物。PHPMD 可以看作是 PHP Depend 测量原始指标流的用户友好的前端应用程序。
安装
请参阅 https://phpmd.org/download/index.html
命令行使用
输入 phpmd [文件名|目录] [报告格式] [规则集文件]
,例如
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文件。
- json,格式化JSON报告。
API文档
您可以在codedoc.pub找到最新的类API文档。