问题标签 [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.

0 投票
1 回答
958 浏览

static-analysis - PHPStan - 更改构造函数参数的类型

在我的代码库上运行 PHPStan 时出现错误:

这是因为构造函数的 docblock 仅将字符串指定为有效类型。但是当您检查该eraseCredentials()方法时,它似乎null也是$credentials.

现在我想指示 PHPStan$credentials参数的类型string|nullstring.

我想我需要一个实现MethodsClassReflectionExtension来做到这一点。但是当我注册它时,它似乎并没有被要求选择正确的课程。

我目前的实现:

我需要做什么才能使 PHPStan 了解该$credentials属性同时接受stringnull值?

0 投票
1 回答
10102 浏览

phpstan - PHPStan,排除所有并指定要检查的文件

我试图在更旧、更大的代码库上设置 PHPStan。我怎么能排除一切,而不是通过配置定义要分析的内容。

我曾考虑为它使用一个单独的文件夹,但这意味着不断移动文件,这可能会导致代码中断。所以我希望排除所有内容,然后将文件添加到每个文件的分析器中。

目前我能找到的唯一解决方案是在composer.json

p>

并在文件中保留要分析的文件列表phpstan_analyse_files

0 投票
1 回答
312 浏览

phpstan - PHPstan 规则从 7.0 迁移到 7.2

我想知道当想要从 PHP 7.0 迁移到 PHP 7.2 时,是否有任何现有的 PHPStan 规则/规则集检查代码库中的 BC 重大更改。

0 投票
2 回答
1840 浏览

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 生成的文件不符合自动加载器模式,但在其他方面工作得很好。

我能做些什么来停止抱怨这个吗?

0 投票
1 回答
595 浏览

php - 使用 PHPSTAN 配置 VIM ALE 插件

我正在使用ALE进行 PHP 开发。有可能phpstan用作 linter 之一,但无论我做什么,都会有phpstan无法加载类/方法定义的通知:

不幸的是,默认配置ALE没有帮助,因为它希望phpstan在 中$PATH,即使它在那里,它仍然抱怨缺少自动加载。

0 投票
0 回答
191 浏览

cakephp-3.5 - CakePHP 通过 Rector 升级,具有输入类型数组声明的函数

我第一次尝试使用rector ( https://github.com/rectorphp/rector ) 来升级我的CakePHP 应用程序。我首先在本地开发环境中工作。

我有点头疼。例如,我创建了以下简单的 php 类:

我运行以下命令:

我收到以下错误:

问题在于函数中输入变量的“数组”类型声明。我删除它,代码通过了校长测试。

我用谷歌搜索,找不到任何东西,这让我觉得我错过了一些非常简单的东西。有什么帮助吗?

0 投票
2 回答
2196 浏览

php - PHPStan 中未定义的变量,但已在其他地方声明

你如何在 PHPStan 中处理这些场景:

  1. 假设您使用纯 PHP 作为模板引擎。例如,

  1. 假设您有 2 个文件a.phpb.php

PHPStan 都会将此报告为Undefined variable: $foo

你如何处理这个问题?PHPStan 是否可以配置为以某种方式执行您的应用程序,以便它知道这些变量实际上是在运行时定义的?

0 投票
1 回答
3507 浏览

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课堂上尊重我自己的文档块?

0 投票
1 回答
3201 浏览

php - 如何配置 PHPStan 以避免由特定类和/或魔术方法引起的误报?

在项目中使用 PHP RedBean 时,PHPStan 会报告如下问题:

这是因为 RedBean 的 OODBBean 类使用魔术方法将类属性与数据库表列进行逻辑绑定。AFAIK,RedBean 实现该功能的方式没有任何问题。

有没有办法将 PHPStan 配置为忽略 RedBean(或任何其他类)的问题?或者忽略魔法方法可能导致的问题?

0 投票
1 回答
1323 浏览

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