boxmoe_header_banner_img

Hello! 欢迎来到悠悠畅享网!

文章导读

如何利用ShipMonkPHPStanRules提升代码质量


avatar
悠悠站长 2025年6月16日 5

在 ShipMonk,我们一直追求极致的代码质量。虽然 PHPStan 已经非常强大,但我们仍然发现一些潜在的问题无法被标准规则捕捉到。为了解决这个问题,我们开发了一套自己的 PHPStan 规则,并将其开源,希望能够帮助更多的开发者。

composer在线学习地址:学习地址

ShipMonk PHPStan Rules 提供了大约 40 个额外的规则,涵盖了各种常见的编码错误和不良实践。例如,它可以帮助你:

  • 禁止比较不可比较的类型,避免意外的对象比较。
  • 强制使用 match 语句处理枚举,确保所有枚举值都被正确处理。
  • 禁止在可调用对象中抛出检查型异常,避免潜在的异常处理问题。
  • 强制在返回迭代器时指定 $preserve_keys 参数,避免数据丢失
  • 禁止在未声明为整数的变量上使用自增/自减运算符,避免类型错误。
  • 等等…

安装

使用 Composer 安装 ShipMonk PHPStan Rules 非常简单:

composer require --dev shipmonk/phpstan-rules

然后,你需要将 rules.neon 文件包含到你的 PHPStan 配置文件中:

立即学习PHP免费学习笔记(深入)”;

# phpstan.neon includes:     - vendor/shipmonk/phpstan-rules/rules.neon

配置

你可以根据自己的需求,轻松地禁用或重新配置任何规则。例如,要禁用 enforceReadonlyPublicProperty 规则,可以这样配置:

parameters:     shipmonkRules:         enforceReadonlyPublicProperty:             enabled: false

或者,你可以禁用所有规则,然后只启用你需要的规则:

parameters:     shipmonkRules:         enableAllRules: false          allowComparingOnlyComparableTypes:             enabled: true

示例:allowComparingOnlyComparableTypes 规则

这个规则禁止使用比较运算符(>, =, )比较 int|string|float|DateTimeInterface 以外的类型,或者包含可比较类型的相同大小的元组。它主要针对意外的对象、枚举或数组比较,这些比较在 PHP 中是有效的,但往往会产生意想不到的结果。

function example1(Money $fee1, Money $fee2) {     if ($fee1 > $fee2) {} // 比较对象是被禁止的 }  new DateTime() > '2040-01-02'; // 比较不同类型是被禁止的 200 > '1e2'; // 比较不同类型是被禁止的

优势与实际应用

ShipMonk PHPStan Rules 的主要优势在于:

  • 提高代码质量: 通过更严格的类型检查和代码规范,减少潜在的错误。
  • 减少运行时错误: 在开发阶段发现并修复错误,避免在生产环境中出现问题。
  • 提高开发效率: 通过自动化代码审查,减少手动检查的时间。
  • 促进代码一致性: 强制执行统一的代码风格,提高代码可读性和可维护性。

在实际应用中,ShipMonk PHPStan Rules 可以帮助你构建更健壮、更可靠的 PHP 应用程序。它可以应用于各种类型的项目,无论是小型个人项目还是大型企业级应用。通过持续集成和自动化代码审查,可以确保代码质量始终保持在高水平。

总而言之,ShipMonk PHPStan Rules 是一套非常有价值的 PHPStan 规则,可以帮助你显著提升代码质量,减少运行时错误,并提高开发效率。如果你追求卓越的代码质量,那么 ShipMonk PHPStan Rules 绝对值得一试。



评论(已关闭)

评论已关闭