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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐网站(20)ai工具集,你想要的ai工具里面都有

今天,我要向您介绍一个综合性的在线平台——AI工具集,这是一个集成了多种人工智能工具的网站,旨在为用户提供一站式的智能解决方案。无论您是专业人士、创意工作者,还是仅仅对AI技术感兴趣的普通用户,AI工具集都能满足…

UE4动作游戏实例RPG Action解析-导语

UE实战篇(动作游戏) 概述 解析官方示例游戏《动作RPG》 动作角色扮演游戏示例项目(简称ARPG)是一个快节奏的第三人称砍杀类游戏 本篇作用是从零开始写 官方示例游戏 重要部分,学完这篇再去研究官方示例,会轻松很多 学完会获取…

Pico4 MR Unity零基础开发之获取手柄按键

一、导入示例资源 1、打开Package Manager面板,导入示例资源。 2、打开示例场景,方面后面测试。 二、打开 XRI Default Input Actions 三、设置XRI Default Input Actions 面板参数 1、点击号新增一项,重命名为Pico 2、新增并重命名Action …

springboot启动配置文件-bootstrap.yml常用基本配置

4.1.5.配置文件 SpringBoot的配置文件支持多环境配置,基于不同环境有不同配置文件: 说明: 文件说明bootstrap.yml通用配置属性,包含服务名、端口、日志等等各环境通用信息bootstrap-dev.yml线上开发环境配置属性,虚…

PICRUSt2在微生物功能预测分析中的应用解读

谷禾健康 微生物组学研究现已超越微生物群落组成分析得到更广泛的使用。大量的人类微生物组研究证据表明,肠道微生物组的功能变化对炎症和免疫反应的影响起到关键的影响作用。 16S rRNA分析是微生物组研究作为最常用便捷且具有成本效益的测量技术,用于分…

C++中的常见语法糖汇总

C中的语法糖是指使代码更简洁、可读性更高的语言特性和简化的语法。以下是一些常见的C语法糖: 1. 自动类型推导(auto) 使用 auto 关键字可以让编译器自动推导变量的类型,简化变量的声明。 auto x 10; // 编译器推导 x…

springboot+minio+kkfileview实现文件的在线预览

在原来的文章中已经讲述过springbootminio的开发过程,这里不做讲述。 原文章地址: https://blog.csdn.net/qq_39990869/article/details/131598884?spm1001.2014.3001.5501 如果你的项目只是需要在线预览图片或者视频那么可以使用minio自己的预览地址进…

clickhouse去重复数据解决方案

原因出现问题 因为我们的maxwell对接rabbitmq rabbitmq监听的是mysql的belog日志文件,所以mysql数据的实时操作都会同步数据到maxwell中 从而导致新增插入一条,修改插入一条,删除插入一条,导致同一条数据有大量的重复数据。 解决…

Python推导式详解

引言 推导式(Comprehensions)是Python中一种简洁且强大的语法结构,可以用来生成列表、字典和集合。推导式使得代码更加简洁、易读,同时也更具Pythonic风格。今天我将将详细介绍列表推导式、字典推导式和集合推导式&#xf…

Java面试——中间件

OpenFeign 1、openFeign是一个HTTP客户端,它融合了springmvc的注解,使之可以用REST风格的映射来请求转发。 2、可以把openFegin理解为是controller层或是service层。可以取代springmvc控制层作为请求映射,亦或是作为service层处理逻辑&#…

Three.js和Babylon.js,webGL中的对比效果分析!

hello,今天分享一些three.js和babylon.js常识,为大家选择three.js还是babylon.js做个分析,欢迎点赞评论转发。 一、Babylon.js是什么 Babylon.js是一个基于WebGL技术的开源3D游戏引擎和渲染引擎。它提供了一套简单易用的API,使开发…

Threejs-02、坐标辅助器与轨道控制器使用

一、坐标辅助器 1、添加坐标辅助器 // 添加世界坐标辅助器 const axesHelper = new THREE.AxesHelper(2); scene.add(axesHelper);2、调整相机位置 //设置相机位置 camera.

卫星通信频段有哪些

卫星通信使用到的频段涵盖L, S, C, Ku, Ka等,而最常用的频段是C(4~8GHz)和Ku(12~18GHz)频段,而Ka(27-40GHz)频段是后起之秀。目前地球赤道上空有限的地球同步卫星轨位几乎已被各国占满,C和Ku频段内的频率资源被大量使用,而Ka频段的…

【Unity】Unity单例封装

Unity开发中经常会用到单例&#xff0c;下面是对单例的封装 C#单例 无需挂载 public class Singleton<T> where T : Singleton<T>, new(){public static T Instance { get; } new T();protected Singleton(){}}Unity单例 需要挂载对象 子类如果使用Awake需要重写…

微软必应地图的三维实景功能

偶然看到微软必应地图的三维实景功能&#xff0c;由于比较感兴趣这方面的技术&#xff0c;所以试用了一下,感觉总体来说技术上比咱们自己的技术和设计要好很多。比如这个工具栏就设计的很简洁&#xff0c;人性化&#xff1a; 而且实景地图的范围也非常大&#xff0c;建立这么大…

webpack 优化构建速度的插件

1.HardSourceWebpackPlugin本地缓存 HardSourceWebpackPlugin这个插件比DLL动态链接库更优秀 HardSourceWebpackPlugin是webpack的插件&#xff0c;为模块提供中间缓存步骤。为了查看结果&#xff0c;您需要使用此插件运行webpack两次&#xff1a;第一次构建将花费正常的时间…

3038. 相同分数的最大操作数目 I Easy

给你一个整数数组 nums &#xff0c;如果 nums 至少 包含 2 个元素&#xff0c;你可以执行以下操作&#xff1a; 选择 nums 中的前两个元素并将它们删除。 一次操作的 分数 是被删除元素的和。 在确保 所有操作分数相同 的前提下&#xff0c;请你求出 最多 能进行多少次操作。…

15天搭建ETF量化交易系统Day7—全自动化交易系统

搭建过程 每个交易者都应该形成一套自己的交易系统。 很多交易者也清楚知道&#xff0c;搭建自己交易系统的重要性。现实中&#xff0c;从&#xff10;到&#xff11;往往是最难跨越的一步。 授人鱼不如授人以渔&#xff0c;为了帮助大家跨出搭建量化系统的第一步&#xff0c;我…

HEXO博客常用命令(自用)

1、配置类命令 预览命令 hexo s 上传本地仓库&#xff1a; hexo g提交&#xff1a; hexo d更换主题&#xff1a;在_config.yml文件中&#xff1a;注意属性后面要跟着 # Extensions ## Plugins: https://hexo.io/plugins/ ## Themes: https://hexo.io/themes/ theme: vola…

嵌入式Linux系统编程 — 2.3 标准I/O库:格式化I/O

目录 1 格式化I/O简介 2 格式化输出 2.1 格式化输出函数简介 2.2 格式控制字符串 format 2.3 示例程序 3 格式化输入 3.1 格式化输入简介 3.2 格式控制字符串 format 3.3 示例程序 1 格式化I/O简介 在先前示例代码中&#xff0c;经常使用库函数 printf() 来输出程序中…