如何利用ShipMonkPHPStanRules提升代码质量

王林
发布: 2025-06-16 11:15:16
原创
477人浏览过

在 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 绝对值得一试。

以上就是如何利用ShipMonkPHPStanRules提升代码质量的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号