问题标签 [phpstan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
static-analysis - PHPStan - 更改构造函数参数的类型
在我的代码库上运行 PHPStan 时出现错误:
这是因为构造函数的 docblock 仅将字符串指定为有效类型。但是当您检查该eraseCredentials()
方法时,它似乎null
也是$credentials
.
现在我想指示 PHPStan$credentials
参数的类型string|null
与string
.
我想我需要一个实现MethodsClassReflectionExtension
来做到这一点。但是当我注册它时,它似乎并没有被要求选择正确的课程。
我目前的实现:
我需要做什么才能使 PHPStan 了解该$credentials
属性同时接受string
和null
值?
phpstan - PHPStan,排除所有并指定要检查的文件
我试图在更旧、更大的代码库上设置 PHPStan。我怎么能排除一切,而不是通过配置定义要分析的内容。
我曾考虑为它使用一个单独的文件夹,但这意味着不断移动文件,这可能会导致代码中断。所以我希望排除所有内容,然后将文件添加到每个文件的分析器中。
目前我能找到的唯一解决方案是在composer.json
并在文件中保留要分析的文件列表phpstan_analyse_files
phpstan - PHPstan 规则从 7.0 迁移到 7.2
我想知道当想要从 PHP 7.0 迁移到 PHP 7.2 时,是否有任何现有的 PHPStan 规则/规则集检查代码库中的 BC 重大更改。
symfony - phpstan 抱怨 Symfony 3.4 中的 Doctrine Migrations with Flex 项目
我有一个使用 Flex 构建在 Symfony 3.4 上的项目,并且我已经将 phpstan 添加到它以进行静态分析。
它抱怨找不到我的迁移课程:
Class DoctrineMigrations\Version20180831185050 was not found while trying to analyse it - autoloading is probably not configured properly.
事实上,Doctrine Migrations 生成的文件不符合自动加载器模式,但在其他方面工作得很好。
我能做些什么来停止抱怨这个吗?
php - 使用 PHPSTAN 配置 VIM ALE 插件
我正在使用ALE进行 PHP 开发。有可能phpstan
用作 linter 之一,但无论我做什么,都会有phpstan
无法加载类/方法定义的通知:
不幸的是,默认配置ALE
没有帮助,因为它希望phpstan
在 中$PATH
,即使它在那里,它仍然抱怨缺少自动加载。
cakephp-3.5 - CakePHP 通过 Rector 升级,具有输入类型数组声明的函数
我第一次尝试使用rector ( https://github.com/rectorphp/rector ) 来升级我的CakePHP 应用程序。我首先在本地开发环境中工作。
我有点头疼。例如,我创建了以下简单的 php 类:
我运行以下命令:
我收到以下错误:
问题在于函数中输入变量的“数组”类型声明。我删除它,代码通过了校长测试。
我用谷歌搜索,找不到任何东西,这让我觉得我错过了一些非常简单的东西。有什么帮助吗?
php - PHPStan 中未定义的变量,但已在其他地方声明
你如何在 PHPStan 中处理这些场景:
- 假设您使用纯 PHP 作为模板引擎。例如,
- 假设您有 2 个文件
a.php
和b.php
PHPStan 都会将此报告为Undefined variable: $foo
你如何处理这个问题?PHPStan 是否可以配置为以某种方式执行您的应用程序,以便它知道这些变量实际上是在运行时定义的?
php - 在尊重/验证中使用自定义规则时,PHPStan 抛出未定义的静态方法
我正在使用Respect/Validation类,并且我有自定义规则CustomRule()
可以正常工作:
但这会导致 PHPStan 抛出错误:
Call to an undefined static method Respect\Validation\Validator::CustomRule().
但是,如果我在内置规则(例如,email()
)之后移动它,PHPStan 工作正常,没有错误:
'email' => v::email()->CustomRule()->setName('email');
需要明确的是,这两个代码都有效,但 PHPStan 认为第一个代码是无效的。
任何解决方法以便 PHPStan 会接受它,即使CustomRule()
是先设置的?
更新:
我发现如果我编辑Respect\Validation\Validator
类的文档块并将我的自定义规则附加到其内置规则列表中,它就可以工作!
当然,直接从主类修改 doc 块是个坏主意。也就是说,我的问题仍然是一样的。或者,也许 PHPStan 有办法从我的CustomRule
课堂上尊重我自己的文档块?
php - 如何配置 PHPStan 以避免由特定类和/或魔术方法引起的误报?
在项目中使用 PHP RedBean 时,PHPStan 会报告如下问题:
这是因为 RedBean 的 OODBBean 类使用魔术方法将类属性与数据库表列进行逻辑绑定。AFAIK,RedBean 实现该功能的方式没有任何问题。
有没有办法将 PHPStan 配置为忽略 RedBean(或任何其他类)的问题?或者忽略魔法方法可能导致的问题?
php - PHPStan 没有看到适合 Doctrine 的 ObjectManager
我尝试使用 PHPStan 改进我的代码。我已经安装:
这是我的phpstan.neon:
我还测试了调用下一个函数:
PHPStan 对此抱怨:
我研究过$doctrine->getManager()
我有Doctrine\ORM\EntityManagerInterface
那个扩展Doctrine\Common\Persistence\ObjectManager
,但 PHPStan 认为我有Doctrine\Common\Persistence\ObjectManager
如何告诉 PHPStan 那$doctrine->getManager()
是Doctrine\ORM\EntityManagerInterface
?