spaze/phpstan-disallowed-calls

PHPStan 规则用于检测不允许的方法和函数调用、常量、命名空间和超全局变量使用

资助包维护!
spaze

安装次数: 8,837,997

依赖者: 247

建议者: 0

安全: 0

星星: 243

关注者: 6

分支: 17

开放问题: 3

类型:phpstan-extension


README

PHPStan 规则用于检测不允许的调用和其他内容,无需运行代码。

PHP Tests

有一些函数、方法和常量在生产代码中不应使用。一个很好的例子是 var_dump(),它通常用于快速调试问题,但在提交代码之前应该删除。有时并非如此。

另一个例子是一个通用的记录器。假设你正在使用一个通用的日志记录库,但你有一个自己的记录器,它将在调用通用记录器之前添加一些额外的信息或清理数据。你的代码不应直接调用通用记录器,而应使用你自定义的记录器。

PHPStan 扩展将在配置的情况下检测此类使用。需要注意的是,此扩展不是防御或检测恶意开发者的方式,因为他们可以例如混淆调用。此扩展旨在作为另一双眼睛,检测你自己的错误,它并不旨在检测所有事物。

测试 将提供当前检测到的示例。如果没有被测试覆盖,它可能会被检测到,但最可能的情况是不会被检测到。 *Test.php 文件是测试文件,从这些文件开始,分析的测试代码在 src 中,所需的测试类在 libs 中。

如果你需要检测更多的调用,请随时提交 问题 或创建 拉取请求

安装

使用 Composer 安装扩展

composer require --dev spaze/phpstan-disallowed-calls

PHPStan,PHP 静态分析工具,是必需的。

如果你使用 phpstan/extension-installer,你已经准备好并可以跳到配置。

对于手动安装,将其添加到你的 phpstan.neon

includes:
    - vendor/spaze/phpstan-disallowed-calls/extension.neon

配置文件

你可以从 捆绑配置文件 开始。

自定义规则

此扩展也支持灵活的 自定义规则

允许一些以前不允许的调用或使用

假设你使用自定义规则禁止了 foo()。但你想在用于你自定义包装器的情况下或当第一个参数等于或不在指定值时重新允许它。此扩展提供了多种实现此目的的方法

重新允许属性 使用类似的 配置

禁止禁用函数和类

使用 提供的生成器 从 PHP 的 disable_functionsdisable_classes 配置指令生成配置片段。

示例输出

 ------ --------------------------------------------------------
  Line   libraries/Report/Processor/CertificateTransparency.php
 ------ --------------------------------------------------------
  116    Calling var_dump() is forbidden, use logger instead
 ------ --------------------------------------------------------

大小写敏感度

函数名、方法名、类名、命名空间不区分大小写进行匹配(禁止 print_r 也会找到 print_R 调用),而常量、文件名、路径等其他内容则不匹配。

无其他规则

您也可以在不使用任何其他 PHPStan 规则的情况下使用此扩展 。如果您想检查第三方代码中的某些调用或使用,这可能很有用。

运行测试

如果您想做出贡献(太棒了,谢谢!),您应该为您的贡献添加/运行测试。首先运行 composer install 安装开发依赖,然后使用 composer test 运行 PHPUnit 测试,查看 composer.json 中的 scripts。GitHub Actions 在每次推送时也会运行测试。

您可以通过运行 composer cs-fix 自动修复编码风格问题。

另请参阅

有一个类似的项目,配置略有不同,几乎是同时创建的(只相差几天):PHPStan 禁用代码

框架或包特定的配置