当前位置: 首页 > news >正文

PHP质量工具系列之phpmd

PHPMD PHP Mess Detector
它是PHP Depend的一个衍生项目,用于测量的原始指标。
PHPMD所做的是,扫描项目中可能出现的问题如:

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

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

安装

composer global require --dev phpmd/phpmd

使用

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 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

#执行phpmd
if `docker exec phpfpm82 /tmp/composer/vendor/bin/phpmd >/dev/null 2>&1`; thenecho '开始执行pdepend'
elsedocker exec phpfpm82 composer global require --dev phpmd/phpmd
fidocker 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

http://www.lryc.cn/news/366639.html

相关文章:

  • 【java】速度搭建一个springboot项目
  • SystemVerilog测试框架示例
  • 每天一个数据分析题(三百五十六)-图表决策树
  • Prism 入门06,发布订阅(入门完结)
  • 2. pytorch环境安装
  • 力扣爆刷第148天之贪心算法五连刷(区间合并)
  • JSON及Python操作JSON相关
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)
  • Android 高德地图API(新版)
  • LeetCode---二叉树
  • 从0开发一个Chrome插件:核心功能开发——弹出页面
  • AIGC笔记--Stable Diffusion源码剖析之UNetModel
  • Linux文件系统与日志分析
  • 【SkyWalking】使用PostgreSQL做存储K8s部署
  • 详解大模型微调数据集构建方法(持续更新)
  • 自制植物大战僵尸:HTML5与JavaScript实现的简单游戏
  • Istio_1.17.8安装
  • [数据集][目标检测]室内积水检测数据集VOC+YOLO格式761张1类别
  • 17_Vue高级监听器生命周期Vue组件组件通信
  • 【ROS使用记录】—— ros使用过程中的rosbag录制播放和ros话题信息相关的指令与操作记录
  • Laravel 富文本内容
  • Spark Python环境搭建与优化:深入剖析四个方面、五个方面、六个方面及七个关键要点
  • 【微信小程序开发】小程序中的上滑加载更多,下拉刷新是如何实现的?
  • 从 Android 恢复已删除的备份录
  • 如何使用Python中的random模块生成随机数
  • AI大数据处理与分析实战--体育问卷分析
  • C++第二十五弹---从零开始模拟STL中的list(下)
  • STM32/keil把多个c文件编译为静态库lib
  • L45---506.相对名次(java)--排序
  • 跨网段路由