PHP质量工具系列之php-depend

php-depend是一个开源的静态代码分析工具,它的主要功能包括:
代码质量分析
复杂度度量:计算类、方法和函数的Cyclomatic Complexity(循环复杂度),帮助识别潜在的复杂代码段。
耦合度度量:分析类之间的耦合,以确定哪些类可能更难维护或重构。
继承分析:评估类的继承层次结构,以及类之间的继承关系。
设计问题检测:发现设计模式,如过深的继承树、过大的类等,这些都是代码质量下降的信号。
代码结构可视化
图形报告:生成诸如类图、调用图等图表,帮助开发者直观地理解代码结构。
文本报告:提供详细的文本报告,列出代码的度量指标。
可维护性指标
Maintainability Index(MI):计算代码的可维护性指数,帮助预测代码的可读性和可维护性。
自动化集成
持续集成:可以轻松集成到持续集成(CI)流程中,作为代码质量检查的一部分。

安装

composer global require --dev pdepend/pdepend

执行

pdepend --jdepend-xml=reports/pdepend_jdepend.xml --coverage-report=reports/phpunit_coverage_clover.xml ./app,./config,./route

参数介绍:
–jdepend-xml 指定结果输出文件
–coverage-report 利用phpunit执行的代码覆盖率,更精准的执行扫描和得到更精准的结果
后面三个位置需要扫描的目录,多个之间以逗号隔开

结果解读

在这里插入图片描述
TC(Total Classes):包中的总类数。
CC(Concrete Classes):包中的具体类数(非抽象类)。
AC(Abstract Classes):包中的抽象类数。
Ca(Afferent Couplings):进入该包的耦合数(即其他包有多少类使用了这个包中的类)。
Ce(Efferent Couplings):从这个包出去的耦合数(即这个包中的类使用了多少个其他包的类)。
A(Abstractness):抽象度,通常是抽象类数与总类数的比值(AC / (AC + CC))。
I(Instability):不稳定性,通常是Efferent Couplings与(Efferent Couplings + Afferent Couplings)的比值(Ce / (Ce + Ca))。
D(Distance):距离,通常用于表示抽象度和不稳定性的平衡,是抽象度和不稳定性的差的绝对值(|A + I - 1|)。
面向对象设计度量指标
Afferent Couplings (AC):一个类或包被其他类或包依赖的程度。高AC值可能表示该类或包是核心组件,但需要小心维护以保持其稳定性。
Efferent Couplings (EC):一个类或包依赖其他类或包的程度。高EC值可能表示该类或包与其他部分紧密耦合,可能导致维护困难。
Abstractness (A):衡量类或包中抽象成分的比例。高抽象度通常意味着更好的可扩展性和可维护性。
Instability (I):衡量类或包的稳定性。不稳定性高的类更容易发生变化,因为它们高度依赖于其他类或包。
Distance (D):是抽象度和不稳定性的函数,用于评估类和包的设计是否达到了理想状态(即高抽象度和低不稳定性)。

Jenkins中使用

jenkins插件之Jdepend

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/684167.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HSC Mailinspector loader.php 任意文件读取漏洞复现(CVE-2024-34470)

0x01 产品简介 HSC Mailinspector是一款远程电子邮件检查工具,支持POP3/IMAP4协议。它允许用户远程扫描最新邮件,并进行浏览、垃圾邮件排除、编辑、删除等操作,无需实际登录邮箱。 0x02 漏洞概述 由于HSC Mailinspector /public/loader.ph…

Linux系统安全(用户、密码、grub引导密码、增加终端)

目录 系统安全 用户安全 密码安全 PAM认证 命令的历史 用户切换 命令的执行权限 grub引导密码 增加终端 系统安全 用户安全 命令 说明 chattr i /etc/passwd chattr:为文件添加特殊权限 i:指定文件设为不可修改,只有root用户能为…

AMEYA360代理品牌 |ROHM罗姆6月研讨会报名开启

电阻器是ROHM的创业产品,ROHM在电阻器产品开发方面始终走在行业前列。电流检测用分流电阻器主要用于电机驱动电路、电源的过电流保护以及电池剩余电量检测,目前已被广泛应用于汽车、工业设备、消费电子设备等众多领域。要满足各种应用的节能要求&#xf…

【react】react项目支持鼠标拖拽的边框改变元素宽度的组件

目录 安装使用方法示例Props 属性方法示例代码调整兄弟div的宽度 re-resizable github地址 安装 $ npm install --save re-resizable这将安装re-resizable库并将其保存为项目的依赖项。 使用方法 re-resizable 提供了一个 <Resizable> 组件&#xff0c;它可以包裹任何…

三、go微服务项目“商城项目实战开发”用户管理user-web端编写和登录校验

文章目录 商城项目实战开发user-web端编写和用户登录校验03、user-web接口的gin的整合和路由的搭建04、gin如何调用grpc接口05 登录接口安全性检验05、用户服务整合微服务注册中心组件—Nacos06、用户服务整合微服务配置中心组件—Nacos商城项目实战开发user-web端编写和用户登…

c#vb代码互转工具

下载地址&#xff1a; https://download.csdn.net/download/wgxds/88979921

做电化学研究如何发表Angew Chemie,案例分析

✨【元素魔方学术俱乐部】✨ &#x1f469;‍&#x1f3eb;&#x1f468;‍&#x1f3eb;我们创建了一个学术交流群 给全国各地以及各种研究方向的硕博 和老师们提供一个交流的平台&#x1f4da;&#x1f9ea; 感兴趣的话欢迎加入 &#x1f4f2;本公众号中回复“社群” 会自动发…

Python for循环 使用两个变量

https://geek-docs.com/python/python-ask-answer/336_python_for_loop_with_two_variables.html 一、使用zip()函数进行迭代 zip()函数可以将两个或多个可迭代对象打包成一个元组序列。 fruits [apple, banana, orange] prices [0.5, 0.3, 0.4]for fruit, price in zip(f…

基于springboot实现社区养老服务系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现社区养老服务系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本社区养老服务系统就是在这样的大环境下诞生&#xff0c;其可以帮助…

ubuntu top命令的参数和快捷键

命令选项 -1 单个、所有cpu信息切换 top -1-b 批处理 top -b > top.txt这将保存top命令的输出到文件&#xff0c;直到手动终止或关机。所以使用这个命令要注意和其他命令配合&#xff0c;否则文件速度增长会很快。 在文件中&#xff0c;将会重复输入top命令。 -c 切换命…

vulnhub靶机实战_DC-2

下载 靶机下载链接汇总&#xff1a;https://download.vulnhub.com/使用搜索功能&#xff0c;搜索dc类型的靶机即可。本次实战使用的靶机是&#xff1a;DC-2下载链接&#xff1a;https://download.vulnhub.com/dc/DC-2.zip 启动 下载完成后&#xff0c;打开VMware软件&#xf…

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第5章——序列

第2 部分&#xff1a;数学分析中的基本概念 (Concepts in Analysis) 5. 序列(Sequences) 本章介绍了序列属性&#xff0c;例如单调性、有界性和收敛性&#xff0c;使用图表和示例来解释这些属性&#xff0c;并演示如何在各种证明中使用它们的定义。讨论了趋于无穷大的序列出…

神经网络 torch.nn---Containers

torch.nn — PyTorch 2.3 documentation torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) nn是Neural Network的简称&#xff0c;帮助程序员方便执行如下的与神经网络相关的行为&#xff1a; &#xff08;1&#xff09;创建神经网络 &#xff08;2&#xff09;训练…

项目部署服务器--浏览器拒绝访问问题

一、检查自己的环境 是本地环境、还是虚拟环境 当您使用 Gunicorn 启动 Flask 应用并监听 0.0.0.0:5000 时&#xff0c;您的 Flask 应用已经可以在服务器上运行并通过该端口提供服务了。但是&#xff0c;0.0.0.0 是一个特殊的 IP 地址&#xff0c;它表示“所有可用的网络接口”…

全球AI新闻速递6.4

1.港大&百度&#xff1a;发布首个智慧城市大模型UrbanGPT。 2.科大讯飞&#xff1a;讯飞星火 V4.0 正在训练中&#xff0c;对标GPT-4o产品在研发中。 3.阿里巴巴与世卫组织达成战略合作&#xff0c;全球推广达摩院 AI 癌症筛查技术。 4.赛迪顾问研究&#xff1a;2026 年…

LINUX系统编程:信号(2)

目录 2.信号的保存 2.1信号保存的基本概念 2.2信号在哪里保存的&#xff1f;怎么保存的&#xff1f; 2.3处理信号的三张表 2.4三张表的匹配操作和系统调用接口 2.4.1sigprocmask 2.4.2sigemptyset 2.4.3sigfillset 2.4.4sigaddset&&sigdelset 2.4.5sigismembe…

代码随想录 day 30

回溯总结&#xff1a; 相当于暴力for循环&#xff0c;其目的用递归控制for循环嵌套的数量。当剪枝时&#xff0c;就可以使得嵌套数量减少。把回溯问题抽象一颗树比较好懂。并且使得代码更简洁。 对于组合问题&#xff0c;什么时候需要startIndex呢&#xff1f; 在一个集合求组合…

awdawdawd

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

Java+前端+Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码

Java前端Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码 UWB定位系统由硬件定位设备、定位引擎和应用软件组成。该定位系统应用软件支持PC端和移动端访问&#xff0c;并提供位置实时显示、历史轨迹回放、人员考勤、电子围栏、行为分析、智能巡检等功能…

深度学习中torch.max函数的作用

文章目录 解释代码举例 解释 torch.max 是 PyTorch 中的一个函数&#xff0c;用于在张量中沿指定维度计算最大值。它有两种用法&#xff1a; ① 如果只提供一个输入张量&#xff0c;则返回该张量中的最大值和对应的索引。     ② 如果提供两个输入张量&#xff0c;则返回两…