jcvviljoen/php-stability-metrics

基于清洁架构原则计算架构稳定性指标的 PHP 工具

0.0.5 2024-08-27 21:39 UTC

This package is auto-updated.

Last update: 2024-09-27 21:58:32 UTC


README

PHP 稳定依赖性指标分析器

Project's current stability result

概述

稳定性 是一款基于 PHP 的工具,旨在分析和计算架构中软件组件的稳定性。

它利用清洁架构原则和稳定依赖性指标,为您提供对代码库的可维护性和鲁棒性的见解。

稳定性是对 稳定依赖性原则稳定依赖性指标 的认可,实际上我们是在测量 不稳定性

目标是识别出过于抽象或过于不稳定的组件。

为什么要使用稳定性?

稳定性可以帮助您识别出过于复杂(过于抽象)或过于紧密耦合(过于不稳定)的组件。

随着项目的持续发展,通过监控组件的指标,您可以提前检测到代码库/架构中可能需要重构的区域。

这可以帮助您提高代码库的可维护性和鲁棒性,同时使代码更容易理解。这些指标还可以用于指导您的开发过程,并说服利益相关者进行改进的需求。

安装

要安装该包,请使用 Composer 将其包含为开发依赖项

composer require --dev jcvviljoen/stability

使用

要计算组件的稳定性,请运行以下命令

php vendor/bin/stability

还支持各种参数(不用担心,任何无效的设置都会引导您完成此过程)

  • -i, --init: 初始化配置文件
  • --config: 指定自定义配置文件/路径
  • --debug: 启用调试输出(暴露异常堆栈跟踪)

例如,您可以指定自定义配置文件(只要它是受支持的格式)

php vendor/bin/stability --config "path/to/config.php"

配置字段

您可以使用各种配置字段来自定义分析,所有这些都在 示例配置文件 中进行了说明。

您可以执行以下操作

  • 指定要扫描的主应用程序源。
  • 定义您想要分析的应用程序中的组件。
  • 对于每个组件,您还可以
    • 排除特定文件/目录的扫描。
    • 进入痛苦区域的阈值(未指定时默认为 0.7)。
    • 进入无意义区域的阈值(未指定时默认为 0.7)。

发挥创意

您不必将自己限制在单个应用程序源上。您还可以在更高(或更低)粒度级别分析您的项目!

例如,让我们考虑一个模块化单体。您可以

  • 分析整个应用程序以查看模块之间的交互;
  • 分析每个模块以查看模块内部层的交互;或者
  • 分析层内的领域以查看领域内类的交互。

如果您发现任何有趣的事情或想要分析某些特定内容,请分享或贡献力量!

功能

  • 组件解析:根据您的配置将类和模块解析为组件。
  • 稳定性计算:计算抽象度、不稳定性以及主序列距离(DMS)等指标。
  • 输出结果:输出计算出的稳定性结果,供进一步(手动)分析。

* 更多关于潜在未来功能的详细信息,请参阅路线图

稳定依赖度指标

稳定性使用以下指标来评估组件的稳定性:

抽象度(A)

衡量抽象类和接口与类总数量的比率。值越高表示抽象组件越多。

不稳定性(I)

衡量输出依赖与总依赖数的比率。值越高表示不稳定的组件越多(即由于依赖数量多而难以更改的组件)。

主序列距离(DMS)

结合抽象度和不稳定性,以确定组件与抽象和稳定性理想平衡状态的距离。

更多关于应用原则的详细信息,请参阅CLEAN_ARCHITECTURE文件。

贡献

欢迎贡献!

有关更多信息,请参阅CONTRIBUTING文件。

许可

本项目采用MIT许可证——有关详细信息,请参阅LICENSE文件。

致谢与引用

本项目在很大程度上受到Robert C. Martin的工作的启发,他在其著作《Clean Architecture》中引入了稳定依赖度指标的概念。

此外,向Sergio Rodríguez表示敬意,他在这里提供了这本书的良好总结。

最后,感谢Thiago Cordeiro在项目开发过程中的指导和建议。