lakshmaji/phpmd

PHPMD 是 PHP Depend 的一个衍生项目,旨在成为广为人知的 Java 工具 PMD 的 PHP 等价物。

安装: 28

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 347

类型:项目

2.6.5 2018-01-03 18:28 UTC

README

PHPMD 是 PHP Depend 的一个衍生项目,旨在成为广为人知的 Java 工具 PMD 的 PHP 等价物。PHPMD 可以被视为 PHP Depend 测量的原始指标流的用户友好前端应用程序。

https://phpmd.org

Latest Stable Version License Travis Build Status AppVeyor Build Status Scrutinizer Build Status Scrutinizer Code Quality

安装

请参阅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 文档。