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
相关文章:
PHP质量工具系列之phpmd
PHPMD PHP Mess Detector 它是PHP Depend的一个衍生项目,用于测量的原始指标。 PHPMD所做的是,扫描项目中可能出现的问题如: 可能的bug次优码过于复杂的表达式未使用的参数、方法、属性 PHPMD是一个成熟的项目,它提供了一组不同的…...
【java】速度搭建一个springboot项目
使用软件:IDEA,mysql 使用框架:springboot mybatis-plus druid 坑点 使用IDEA搭建一个springboot项目的时候,需要考虑一下IDEA版本支持的JDK版本以及maven版本。否则再构建项目,引入pom的时候就会报错。 需要检查…...
SystemVerilog测试框架示例
这里是一个完整的SystemVerilog测试框架示例,包括随机化测试和详细注释。 顶层模块 (Top Module) module top;// 信号声明logic clk;logic rst_n;// 接口实例化dut_if dut_if_inst(.clk(clk), .rst_n(rst_n));// DUT实例化 (假设DUT模块名为dut)dut u_dut(.clk(du…...
每天一个数据分析题(三百五十六)-图表决策树
图表决策树中将图表分成四类,分别是? A. 比较类 B. 序列类 C. 构成类 D. 描述类 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案...
Prism 入门06,发布订阅(入门完结)
本章节介绍使用 Prism 框架的消息聚合器 IEventAggregator ,实现如何进行消息发布,订阅,取消订阅的功能 继续使用上一章节使用的 Prism WPF 空模板项目 BlankApp1 1.首先,在使用 Prism 框架当中,进行事件消息的发布和订阅之前,需要定义发布事件的事件消息模型。如下所示:…...
2. pytorch环境安装
概述 本文提供基于Anaconda环境Windows11操作系统的Pytorch深度学习环境的配置。深度学习环境分为GPU和CPU两大部分。使用GPU进行环境配置,需要保证电脑配有独立显卡,并且显卡驱动安装正常,详情见前文。 1. 创建新的虚拟环境用来配置Pyt…...
力扣爆刷第148天之贪心算法五连刷(区间合并)
力扣爆刷第148天之贪心算法五连刷(区间合并) 文章目录 力扣爆刷第148天之贪心算法五连刷(区间合并)一、406. 根据身高重建队列二、452. 用最少数量的箭引爆气球三、435. 无重叠区间四、763. 划分字母区间五、56. 合并区间六、738.…...
JSON及Python操作JSON相关
JSON及Python操作JSON相关 Json简介及Python操作Json相关示例。 1. JSON概念及支持的数据类型 1.1 什么是 JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解…...
[ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)
🏡作者主页:点击! 🤖网络通信基础TCP/IP专栏:点击! ⏰️创作时间:2024年6月8日14点23分 🀄️文章质量:94分 前言—— 在现代通信网络中,传输介质是数据传…...
Android 高德地图API(新版)
新版高德地图 前言正文一、创建应用① 获取PackageName② 获取调试版安全码SHA1③ 获取发布版安全码SHA1 二、配置项目① 导入SDK② 配置AndroidManifest.xml 三、获取当前定位信息① ViewBinding使用和导包② 隐私合规设置③ 权限请求④ 初始化定位⑤ 获取定位信息 四、显示地…...
LeetCode---二叉树
144/94/145. 二叉树的前、中、后序的递归遍历 以中序遍历为例,其余类似: 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 代码示例: /*** Definition for a binary tree node.* struct TreeNode {* int val;* Tr…...
从0开发一个Chrome插件:核心功能开发——弹出页面
前言 这是《从0开发一个Chrome插件》系列的第十一篇文章,本系列教你如何从0去开发一个Chrome插件,每篇文章都会好好打磨,写清楚我在开发过程遇到的问题,还有开发经验和技巧。 专栏: 从0开发一个Chrome插件:什么是Chrome插件?从0开发一个Chrome插件:开发Chrome插件的必…...
AIGC笔记--Stable Diffusion源码剖析之UNetModel
1--前言 以论文《High-Resolution Image Synthesis with Latent Diffusion Models》 开源的项目为例,剖析Stable Diffusion经典组成部分,巩固学习加深印象。 2--UNetModel 一个可以debug的小demo:SD_UNet 以文生图为例&#…...
Linux文件系统与日志分析
目录 inode block 链接 文件修复 实验步骤 针对ext文件系统恢复删除文件 针对xfs文件系统恢复删除文件 日志 日志级别 rsyslogd服务 日志目录 messages日志文件(系统日志) 集中管理日志 - 实验 1.环境配置 1.1 1.2 1.3 1.4 1.5 2.远…...
【SkyWalking】使用PostgreSQL做存储K8s部署
拉取镜像 docker pull apache/skywalking-ui:10.0.1 docker tag apache/skywalking-ui:10.0.1 xxx/xxx/skywalking-ui:10.0.1 docker push xxx/xxx/skywalking-ui:10.0.1docker pull apache/skywalking-oap-server:10.0.1 docker tag apache/skywalking-oap-server:10.0.1 xxx…...
详解大模型微调数据集构建方法(持续更新)
大家好,我是herosunly。985院校硕士毕业,现担任算法t研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算…...
自制植物大战僵尸:HTML5与JavaScript实现的简单游戏
引言 在本文中,我们将一起探索如何使用HTML5和JavaScript来创建一个简单的植物大战僵尸游戏。这不仅是一项有趣的编程挑战,也是学习游戏开发基础的绝佳机会。 什么是植物大战僵尸? 植物大战僵尸是一款流行的策略塔防游戏,玩家需…...
Istio_1.17.8安装
项目背景 按照istio官网的命令一路安装下来,安装好的istio版本为目前的最新版本,1.22.0。而我的k8s集群的版本并不支持istio_1.22的版本,导致ingress-gate网关安装不上,再仔细查看istio的发布文档,如果用istio_1.22版本…...
[数据集][目标检测]室内积水检测数据集VOC+YOLO格式761张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):761 标注数量(xml文件个数):761 标注数量(txt文件个数):761 标注类别…...
17_Vue高级监听器生命周期Vue组件组件通信
文章目录 1. 数据监听器watch2. Vue生命周期3. Vue组件4. Vue组件通信Appendix 1. 数据监听器watch 首先watch需要单独引 import {watch} from vuewatch函数监听ref响应式数据 watch(监听的内容,监听行为)监听行为默认为(newValue,oldValue) let firstname ref…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
