thecodingmachine / phpstan-strict-rules
基于 TheCodingMachine 最佳实践的一套 PHPStan 额外规则
v1.0.0
2021-11-08 09:10 UTC
Requires
- php: ^7.1|^8.0
- phpstan/phpstan: ^1.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^7.1
This package is auto-updated.
Last update: 2024-09-10 13:57:50 UTC
README
TheCodingMachine 的 PHPStan 额外规则
此包包含一组规则,用于添加到 精彩的 PHPStan 静态分析器。
这些规则来自 TheCodingMachine 最佳实践。它们比默认的 PHPStan 规则更为“严格”,其中一些可能会引起争议。我们在 TheCodingMachine 使用这些规则,发现它们有助于我们日常的工作,并要求任何与我们合作的人遵循这些规则。
规则列表
异常相关规则
- 不应直接抛出 "Exception" 基类,而应抛出其子类 (参阅 TheCodingMachine 错误处理最佳实践)。
- 不应有空的 catch 语句
- 在 catch 块内抛出异常时,应将捕获的异常作为“previous”异常传递 (参阅 TheCodingMachine 错误处理最佳实践)
- 如果捕获了
Throwable
、Exception
或RuntimeException
,则必须重新抛出异常。
超全局相关规则
- 禁止使用
$_GET
、$_POST
、$_FILES
、$_COOKIE
、$_SESSION
、$_REQUEST
。应使用您框架的请求/会话对象。 - 在根作用域中仍容忍超全局的使用(因为它通常在
index.php
中仅使用一次以初始化 PSR-7 请求对象)
条件相关规则
- switch 语句应始终通过实现默认情况(并抛出异常)来检查意外的值 (参阅 TheCodingMachine 防御性编程最佳实践)
正在进行中
// Never use public properties
// Never use globals
安装
我们假设 PHPStan 已在您的项目中安装。
要使用此扩展,请使用 Composer 包管理器
composer require --dev thecodingmachine/phpstan-strict-rules
如果您还安装了 phpstan/extension-installer,那么您就设置好了!
手动安装
如果您不想使用 phpstan/extension-installer
,请将 phpstan-strict-rules.neon 包含到您的项目 PHPStan 配置中
includes: - vendor/thecodingmachine/phpstan-strict-rules/phpstan-strict-rules.neon