PHPSTAN规则在不运行代码的情况下检测不允许的呼叫等。
生产代码中不应使用一些功能,方法和常数。一个很好的例子是var_dump() ,通常用于快速调试问题,但应在签发代码之前删除。有时不是。
另一个示例将是通用记录器。假设您使用的是通用记录库之一,但是您有自己的记录仪,可以在调用通用记录器之前添加更多信息或消毒数据。您的代码不应直接调用通用记录器,而应使用您的自定义记录器。
如果配置,此phpstan扩展程序将检测到这种用法。应当指出的是,此扩展不是一种防御或检测敌对开发人员的方式,因为他们可以混淆呼叫。该扩展是要成为另一只眼睛,发现自己的错误,而不是旨在检测所有这些。
测试将提供当前检测到的示例。如果不被测试覆盖,可能是,但最有可能无法检测到。 *Test.php文件是测试,从这些文件开始,分析的测试代码在SRC中,在LIBS中所需的测试类。
如果需要检测更多电话,请随时提交问题或创建拉请请求。
使用作曲家安装扩展名:
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_functions & disable_classes配置指令中的配置段。
------ --------------------------------------------------------
Line libraries/Report/Processor/CertificateTransparency.php
------ --------------------------------------------------------
116 Calling var_dump() is forbidden, use logger instead
------ --------------------------------------------------------
函数名称,方法名称,类名称,名称空间是匹配的,无论其情况如何(不称呼print_r也会找到print_R呼叫),而其他任何内容都不是诸如常数,文件名,路径。
您也可以无需任何其他PHPSTAN规则即可使用此扩展程序。如果您想例如检查第三方代码或某些内容的使用情况,这可能会很有用。
如果您想贡献(很棒,谢谢!),则应为您的贡献添加/运行测试。首先通过运行composer install来安装Dev依赖项,然后使用composer test运行Phpunit测试,请参见composer.json中的scripts 。测试还可以在GitHub上进行,每次推动上的操作。
您可以通过运行composer cs-fix自动修复编码样式问题。
有一个类似的项目,其配置略有不同,几乎同时创建(仅几天的差异):phpstan禁止代码。