PHP质量工具系列之phpmd

PHPMD PHP Mess Detector

它是PHP Depend的一个衍生项目,用于测量的原始指标。

PHPMD所做的是,扫描项目中可能出现的问题如:

  • 可能的bug
  • 次优码
  • 过于复杂的表达式
  • 未使用的参数、方法、属性

PHPMD是一个成熟的项目,它提供了一组不同的预定义规则

安装

shell 复制代码
composer global require --dev phpmd/phpmd

使用

shell 复制代码
phpmd app/ xml ./phpmd.xml --report-file ./reports/phpmd_result.xml --ignore-errors-on-exit --ignore-violations-on-exit

参数介绍:

格式固定为 phpmd 被扫描目录 输出格式 规则集文件或规则名称(多个规则名称以逗号分隔)

后面的参数全部是option

--report-file 结果输出文件地址

--ignore-errors-on-exit phpmd发生错误时也以0码退出脚本

--ignore-violations-on-exit phpmd扫描出问题时也以0码退出脚本 主要用在自动构建的场景终止,避免打断整个项目的执行

--suffixes "php,phtml" 有效源代码文件扩展名,多个以逗号隔开

--exclude 需要忽略的目录,多个以逗号隔开

自定义规则集

复制以下内容,保存为phpmd.xml到项目,phpmd第三个参数即可使用此配置

xml 复制代码
<?xml version="1.0"?>
<ruleset name="Custom Ruleset">
    <description>Custom rules for PHPMD</description>

    <rule ref="rulesets/cleancode.xml">
        <exclude name="StaticAccess"/>
        <exclude name="ElseExpression"/>
    </rule>
    
    <rule ref="rulesets/codesize.xml"/>
    
    <rule ref="rulesets/controversial.xml">
        <exclude name="Superglobals"/>
    </rule>
    
    <rule ref="rulesets/design.xml"/>

    <rule ref="rulesets/naming.xml">
        <exclude name="ShortMethodName"/>
        <exclude name="ShortVariable"/>
    </rule>
    
    <rule ref="rulesets/unusedcode.xml"/>
</ruleset>

结果查看

此图是利用jenkins中的插件warnings可视化的

Jenkins中的应用

构建步骤新增执行shell

shell 复制代码
#执行phpmd
if `docker exec phpfpm82 /tmp/composer/vendor/bin/phpmd >/dev/null 2>&1`; then
  echo '开始执行pdepend'
else
  docker exec phpfpm82 composer global require --dev phpmd/phpmd
fi

docker exec phpfpm82 /bin/sh -c "cd /var/www/workspace/$JOB_NAME/ && /tmp/composer/vendor/bin/phpmd app/ xml ./phpmd.xml --report-file ./reports/phpmd_result.xml --ignore-errors-on-exit --ignore-violations-on-exit"

输出可视化报告

查看jenkins插件之Warnings的 phpmd一章

看到这里了,点个赞再走吧

PHP质量工具系列

PHP/JS质量工具,安全工具,Jenkins插件 总结
TOP 6 PHP代码质量工具
PHP质量工具系列之php-depend
PHP质量工具系列之phpmd
PHP质量工具系列之phpcpd
PHP质量工具系列之phploc
PHP质量工具系列之paslm
PHP质量工具系列之phpstan
PHP质量工具系列之Owasp dependency-check
PHP质量工具系列之php_codesniffer
PHP质量工具系列之phpunit
PHP质量工具系列之xhprof
SBOM生成之CycloneDX

CI/CD之Jenkins插件使用系列

jenkins插件之Jdepend
jenkins插件之plot
jenkins插件之dependency-check
jenkins插件之Warnings
jenkins插件之xunit

相关推荐
BingoGo21 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack21 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
feifeigo1234 天前
matlab画图工具
开发语言·matlab