如何仅在测试中忽略“称为动态的静态方法”检查

How to ignore `static method called as dynamic` inspection in tests only

PHPUnit 将所有断言定义为静态函数,但您应该使用对象上下文1 调用它们。 除了这是否是一个好的做法,如果你想遵循这个做法,你将在 PhpStorm 中收到警告: static method called as dynamic

我喜欢这个检查,不想为所有文件关闭它。我 确实 想为 phpunit 测试关闭它,但是在我的所有测试中添加 noinspection 评论是烦人和重复的。

如何在测试中忽略它,但在我的正常代码中进行检查?
我正在使用 PhpStorm 2016.3


1:请参阅塞巴斯蒂安对 this github issue 的评论。

A regular user of PHPUnit should use $this-> instead of self::

另外,手册中的所有示例都使用此方法。

要忽略测试中的 "static method called as dynamic" 错误,您可以定义一个范围,然后更改 该范围的检查。

设置名称等适用于 PhpStorm 2016.3。

范围

您可以使用默认的 Test 范围,方法是将您的测试目录设置为 "test sources root"。您还可以创建自己的范围(见下文)

检验

现在让你的检查只适用于这个范围

  1. 转到设置 -> 编辑器 -> 检查(或搜索检查)
  2. 搜索(在检查中,而不是在所有设置中)'static method called as dynamic' 检查
  3. 扩大范围(默认为'in all scopes'),select你的新范围"all but phpunit tests"
  4. 检查测试范围
  5. 取消select 警告,但保留 'all scopes' selected.

如果您为您的项目创建了一个特定的范围,但您也可以在此处select只创建该范围。

您可能需要重新启动 phpstorm 或重新运行 检查。

看起来是这样的:

创建您自己的范围

  1. 转到设置 -> 外观和行为 -> 范围(您也可以在设置搜索中搜索 'scopes')。
  2. 按“+”添加新范围
  3. Select 你的目录
  4. 应用/确定