【问题标题】:Ignore multiple definitions for a function in PhpStorm code inspections在 PhpStorm 代码检查中忽略函数的多个定义
【发布时间】:2020-01-07 09:07:43
【问题描述】:

我有一个复杂的 PHP 项目,其中包含函数 foo 的两个定义。其中一个在供应商库中,我从不使用它,另一个我经常使用。供应商库中的实现抛出异常,正确的实现不会。现在,每当我编写一个调用 foo() 的函数时,PhpStorm 的代码检查表明我应该在调用者的 PhpDoc 中声明一个@throws \Execption。在这种情况下,我想取消该警告,并可能告诉 PhpStorm 我将永远使用供应商库中的函数。

我已经尝试过 Scopes,但无法成功 - 我可以阻止 PhpStorm 在供应商文件中报告警告,但不能分析它们以查找我自己的代码中使用的符号。

【问题讨论】:

  • 尝试右键单击此类不需要的文件并将其标记为纯文本 - 这样该文件根本不应该被处理(但也会影响该文件中的所有其他内容)。您不能告诉 IDE“使用此文件中的定义并从其他地方忽略它们”。
  • 这就是我想要的——告诉 PhpStorm 我根本不关心这个文件中的代码。但是,在右键菜单中找不到将文件标记为纯文本的选项。
  • 它可能对库不可用(被视为非项目代码的文件)......然后试试这个(不确定它是否有效,但值得检查):1)标记任何项目文件为纯文本(只是为了创建配置文件); 2)关闭IDE; 3) 在 IDE 设置文件夹中找到 plainTextFiles.xml(在 Windows 上,通常为 C:\Users\USERNAME\.PhpStorm2019.3\config\options;4)编辑该文件——将 #1 中的条目替换为该“不需要的”文件的完整路径; 5) 保存文件并启动 IDE——看看它是否有任何不同。
  • 您仍然应该能够将它们标记为纯文本:i.gyazo.com/60e7d502ca7047e8cf6e06596e509371.png
  • 感谢您的视觉效果!我在错误的地方右击。

标签: phpstorm


【解决方案1】:

添加/** @noinspection PhpDocMissingThrowsInspection *//** @noinspection ALL */(用于禁用所有检查)在方法 foo()

的顶部

【讨论】:

  • 由于 foo() 的违规实现不是我的代码,而是由 composer 管理,因此我实际上无法对其进行编辑。应该有一种更简单的方式来表达“这个文件?请假装它不是我的项目的一部分”。
  • 所以你说你在 Appearance & Scopers > Scopes 中尝试;添加包含 foo 方法的新范围和排除文件?
  • 是的,我试过了,这只会停止检查包含错误函数的文件。警告来自调用 foo() 的文件,而不是定义 它的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 2021-09-01
  • 2015-04-10
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多