PHP 中的代码检查
本主题列出 了 PHP 中可用的所有 PhpStorm代码检查。
您可以在编辑器 |上切换特定检查或更改其严重性级别。IDE 设置的检查Ctrl+Alt+S页面。
控制流
检查 | 描述 | 默认严重性 |
---|---|---|
报告循环中在 | 弱警告 | |
报告 | 弱警告 | |
报告具有 | 错误 | |
报告具有重复公共部分的“切换”语句。 | 弱警告 | |
报告之后代码中未使用的数组写访问表达式。此类问题的最常见来源是修改通过参数传递的数组:如果数组是按值传递的,则更改将在函数之外不可见。 | 弱警告 | |
报告已被早期条件覆盖并因此无效的条件以及在达到时始终为真(或始终为假)的变量。 | 弱警告 | |
报告逻辑二进制表达式中的条件,这些条件被后续条件覆盖,因此是多余的。 | 弱警告 | |
| 弱警告 | |
报告其主体最多执行一次的循环语句。 检查不报告foreach 循环体内使用的键或值的循环。通常,此类循环旨在仅在其第一次迭代时执行操作(例如,获取数组的第一个元素)。 | 弱警告 | |
报告 | 弱警告 | |
报告从未初始化的类型化属性中读取的尝试。这样的尝试将导致
| 警告 | |
报告其主体始终执行终止语句(例如或)的语句中的 | 没有高亮,只有修复 | |
报告无法到达的语句。 | 警告 | |
报告仍然引用先前在 unset 。有关详细信息,请参阅foreach (php.net)和unset (php.net)。 | 警告 |
作曲家
检查 | 描述 | 默认严重性 |
---|---|---|
报告composer.json | 弱警告 | |
报告composer.json中未指定的 PHP 扩展中的类、函数和常量的使用情况。如果在composer.json | 警告 | |
报告composer.json中需要但未安装的 Composer 包。 | 弱警告 | |
突出显示composer.json中质量工具的条目,以防相应的代码检查被禁用。 | 弱警告 | |
报告 composer.json 中未解析的文件引用。 | 警告 |
可替换作业
检查 | 描述 | 默认严重性 |
---|---|---|
报告可以用递增 ( | 没有高亮,只有修复 | |
报告可以用组合运算符分配替换的分配(例如, | 没有高亮,只有修复 |
诗篇
检查 | 描述 | 默认严重性 |
---|---|---|
报告函数调用中的参数,其类型与通过定义的参数不兼容 | 警告 |
PHPUnit
检查 | 描述 | 默认严重性 |
---|---|---|
| 警告 | |
报告PHPUnit 测试中可以用/替换的 | 弱警告 | |
在 PHPUnit 测试中使用/参数报告 | 弱警告 | |
| 弱警告 | |
使用字符串和参数报告不推荐使用 $needle 和可选布尔$ignoreCase 参数已弃用,将在 PHPUnit 9 中删除。assertContains assertNotContains 有关详细信息,请参阅assertEquals 函数 (phpunit.readthedocs.io)的用法。 | 弱警告 | |
使用、、和参数报告 $delta 、、、和参数已弃用$maxDepth ,将在 PHPUnit 9 中删除。$canonicalize $ignoreCase assertEquals assertNotEquals 有关详细信息,请参阅assertEquals 函数 (phpunit.readthedocs.io)的用法。 | 弱警告 | |
使用和参数报告 $canonicalize 和$ignoreCase 参数已被弃用,将在 PHPUnit 9 中删除。assertFileEquals assertFileNotEquals 有关详细信息,请参阅assertFileEquals 函数的用法 (phpunit.readthedocs.io)或assertFileEquals 函数的用法 (phpunit.readthedocs.io)。 | 弱警告 | |
报告正在使用的 | 弱警告 | |
报告以下已弃用的 PHPUnit 文档标签的使用情况:
| 弱警告 | |
报告已弃用的 expectException() 带有\PHPUnit\Framework\Error\Deprecated 、\PHPUnit\Framework\Error\Error 、\PHPUnit\Framework\Error\Notice 和的方法\PHPUnit\Framework\Error\Warning 已被弃用,并将在 PHPUnit 10 中删除。相反,应该使用expectDeprecation() 、expectError() 、expectNotice() 和方法。expectWarning() 有关详细信息,请参阅测试 PHP 错误、警告和通知 (phpunit.readthedocs.io)。 | 弱警告 | |
报告作为参数随调用一起提供的 | 弱警告 | |
报告对 PHPUnit 10 中删除的 PHPUnit 断言方法的调用。 | 警告 | |
报告对 PHPUnit 相等断言方法(例如 | 弱警告 | |
报告未找到相应生产类或方法的测试类和方法。 | 没有高亮,只有修复 | |
dataProvider ,PHPUnit 不考虑use 语句。 | 警告 | |
报告函数作为参数的 | 弱警告 |
PSR-12
检查 | 描述 | 默认严重性 |
---|---|---|
报告深度超过两个级别的复合命名空间的使用情况。 根据 PSR-12,不得使用深度超过 2 的复合命名空间。有关详细信息,请参阅PSR-12:扩展编码样式 (php-fig.org)。 | ||
elseif 应该使用关键字,而不是else if 让所有控制关键字看起来像单个单词。有关详细信息,请参阅PSR-12:扩展编码样式 (php-fig.org)。 | ||
报告类实例中缺少的参数列表。 根据 PSR-12 规范,当实例化一个新类时,即使没有传递给构造函数的参数,括号也必须始终存在。有关详细信息,请参阅PSR-12:扩展编码样式 (php-fig.org)。 | ||
报告在没有可见性定义的情况下声明的属性、常量和方法。 根据 PSR-12,可见性必须定义在:
| ||
报告通过单个 use 导入语句。有关详细信息,请参阅PSR-12:扩展编码样式 (php-fig.org)。 | ||
报告以错误顺序指定的可见性修饰符。 根据 PSR-12,正确的顺序如下:
| ||
报告长格式关键字的使用情况。 根据 PSR-12,必须使用类型关键字的简写形式,即bool 代替boolean ,int 代替integer ,等等。有关详细信息,请参阅关键字和类型 (php-fig.org)。 | ||
var 关键字不得用于声明属性。有关详细信息,请参阅PSR-12:扩展编码样式 (php-fig.org)。 |
属性
检查 | 描述 | 默认严重性 |
---|---|---|
报告返回具有已知重要键的数组的方法和函数。 | 弱警告 | |
报告非平凡纯函数。此类函数在其主体中有其他函数调用,但所有此类调用都不会产生任何副作用。 | 弱警告 | |
| 弱警告 | |
报告可以传播到覆盖方法/参数的方法和参数的属性。 有关详细信息,请参阅属性 (php.net)。 | 弱警告 | |
报告解析为未使用 注释的类的属性 | 弱警告 | |
以 .开头的报告行注释 | 警告 | |
报告赋值和比较表达式中应替换为预期值之一的值(即,通过 | 弱警告 | |
突出显示对属性的写访问引用,通过声明的写访问范围 | 错误 | |
没有它的报告函数 | 弱警告 | |
| 弱警告 | |
| 弱警告 | |
报告在 | 弱警告 | |
报告属性中的空参数列表。 有关详细信息,请参阅属性 (php.net)。 | 弱警告 |
代码气味
检查 | 描述 | 默认严重性 |
---|---|---|
报告它的用法 | 警告 | |
报告 | 弱警告 | |
报告 | 弱警告 | |
报告作为
| 弱警告 | |
报告 | 弱警告 | |
报告 | 没有高亮,只有修复 | |
报告 | 弱警告 | |
报告 | 弱警告 | |
使用不使用任何正则表达式工具的参数报告 | 弱警告 | |
报告 | 弱警告 | |
报告用于特征的静态成员访问表达式。从 PHP 8.1 开始不推荐使用这种直接访问。相反,应该在使用 trait 的类上访问静态成员。 有关详细信息,请参阅PHP 8.1 的弃用:访问特征上的静态成员 (php.net)。 | 弱警告 | |
报告不是对象或字符串的“instanceof”参数 | 警告 | |
| 弱警告 | |
报告对 | 弱警告 | |
报告在访问点已知为空的迭代/访问的数组。 | 弱警告 | |
报告数组到字符串的转换,即在预期字符串的上下文中提供的数组。 在 PHP 8.0 之前,这会导致E_NOTICE 级别错误。在 PHP 8.0 中,E-WARNING 发出 an 。 | 警告 | |
报告仅更新但从未查询的本地数组。 | 弱警告 | |
报告包含 | 弱警告 | |
报告以被引用类的父类中的常量为目标的类常量引用。 | 弱警告 | |
报告 | 弱警告 | |
报告执行手动最小/最大计算而不是调用 | 弱警告 | |
报告 | 警告 | |
报告 | 弱警告 | |
报告 | 弱警告 | |
报告 | 弱警告 | |
使用单个参数报告 | 弱警告 | |
报告不改变表达式结果的二进制表达式操作数(例如 | 弱警告 | |
报告函数/方法退出点的不一致。 报告了以下类型的不一致:
| 警告 | |
报告使用相同操作数但应该使用不同操作数的表达式(例如, | 弱警告 | |
报告 | 弱警告 | |
报告 | 弱警告 | |
检查方法是否不会覆盖可见性。 用子类中的方法覆盖protected 方法public 使该方法可以从任何地方访问。这违反了封装原则,被认为是不好的做法。有关详细信息,请参阅方法可见性 (php.net)。 | ||
报告返回未使用值的私有方法。 | 弱警告 | |
| 弱警告 | |
| 弱警告 | |
报告嵌套 | 弱警告 | |
报告在所有方法调用中具有相同值的私有方法中的参数。 | 弱警告 | |
报告接受的参数多于其声明中指定的参数的函数/方法调用。 | 弱警告 | |
报告仅在单个方法中使用的私有属性。这些属性可以用局部变量替换。 | 弱警告 | |
报告以下私有属性:
| 警告 | |
报告在没有键的情况下使用迭代值的循环 | 弱警告 | |
报告and语句的冗余 | 弱警告 | |
报告 | 弱警告 | |
报告对类属性的冗余分配,这些属性重复通过提升的构造函数参数执行的自动分配。 有关详细信息,请参阅Constructor Property Promotion (php.net)。 | 弱警告 | |
报告 | 弱警告 | |
由于隐式执行转换为字符串,因此报告冗余的 | 弱警告 | |
报告仅包含对父方法的一次调用的覆盖方法。 | 弱警告 | |
报告与可选参数的相应默认值匹配的冗余参数。 | 弱警告 | |
报告指定的三元表达式 | 弱警告 | |
报告条件和语句匹配的 | 弱警告 | |
报告参数数量超过指定限制的函数/方法声明。 | ||
报告不必要的 | 弱警告 | |
在赋值后立即报告在 exit 语句中使用的局部变量,例如 | 弱警告 | |
报告通过引用传递给函数/方法但未在函数/方法主体中修改的变量。在这种情况下, | 弱警告 | |
报告不必要的分号。 | 弱警告 | |
| 弱警告 | |
| ||
报告参数列表和闭包
| 弱警告 |
PHP 严格标准
检查 | 描述 | 默认严重性 |
---|---|---|
报告与父类不兼容的重写方法声明。仅对低于 8.0 的 PHP 语言级别启用检查。 | 警告 | |
报告声明为抽象的静态方法。 | 警告 |
代码风格
检查 | 描述 | 默认严重性 |
---|---|---|
报告 | 弱警告 | |
报告 | 没有高亮,只有修复 | |
报告 | 没有高亮,只有修复 | |
报告 | 没有高亮,只有修复 | |
报告调用并建议在 PHP 语言级别设置为 8.0 或更高版本时 | 没有高亮,只有修复 | |
报告使用 | 弱警告 | |
报告 match 表达式使用严格的类型比较,而switch 语句依赖于松散的比较。因此,表达式语义可能在替换后发生变化。有关详细信息,请参阅匹配 (php.net)和切换 (php.net)。 | 没有高亮,只有修复 | |
报告 | 没有高亮,只有修复 | |
报告可以缩小到更具体类型的“混合”返回类型。 | 弱警告 | |
报告 | 弱警告 | |
报告可以用函数调用替换的和 | 弱警告 | |
报告可以用 'match' 表达式替换的 'switch' 语句 | 弱警告 | |
报告 | 弱警告 | |
报告与其声明中使用的大小写不匹配的函数、方法、类和命名空间的使用情况。 | ||
报告文件路径不遵循 PSR-0/PSR-4 项目结构的类。 您可以在 Settings/Preferences | 下配置项目供应商根目录。目录。有关详细信息,请参阅PSR-0/PSR-4 标准 (php-fig.org)。 | 警告 | |
报告可以转换为短箭头函数的匿名函数。自 PHP 7.4 起支持短箭头函数。 有关详细信息,请参阅PHP RFC:箭头函数 2.0 (php.net)。 | 没有高亮,只有修复 | |
报告函数调用中的参数之前的内联注释,这些注释仅包含参数的名称,因此用作提示。在 PHP 8.0 及更高版本中,可以改用命名参数。 有关详细信息,请参阅命名参数 (php.net)。 | 弱警告 | |
报告其主体未用大括号括起来的控制结构(例如循环或条件)。 有关详细信息,请参阅控制结构 (php.net)。 | 没有高亮,只有修复 | |
报告危险的数组初始化(例如 $arr 已经包含一些值(例如,来自请求变量的字符串),那么该值将保留在原处,[] 并且实际上可能代表字符串访问运算符。最好通过直接赋值来初始化变量。有关详细信息,请参阅使用方括号语法 (php.net) 创建/修改。 | 没有高亮,只有修复 | |
报告 | 弱警告 | |
报告没有 PHPDoc 注释或仅包含 | ||
报告潜在的模棱两可的表达,并建议将它们括在澄清括号中。 | 没有高亮,只有修复 | |
报告可以通过添加 | 弱警告 | |
报告 0o/0O PHP 8.1 及更高版本支持使用前缀的显式八进制文字。有关详细信息,请参阅显式八进制整数文字表示法 (php.net)。 | 没有高亮,只有修复 | |
报告 | 没有高亮,只有修复 | |
报告 | 没有高亮,只有修复 | |
报告 | 没有高亮,只有修复 | |
报告不使用任何实例引用的方法,因此可以转换为静态方法。 | 没有高亮,只有修复 | |
检查 PHPDoc 块是否包含 | 弱警告 | |
报告不带 PHPDoc 注释或只包含 | ||
在单个文件中报告多个类声明,这违反了 PSR-0/PSR-4 标准。 有关详细信息,请参阅PSR-0/PSR-4 标准 (php-fig.org)。 | 弱警告 | |
报告具有与参数顺序不匹配的顺序的命名参数 | 弱警告 | |
报告具有以非规范顺序列出的元素的 PHPDoc 标记。 例如,对于诸如 、 或 之类的标签@property ,@param 检查@var 将报告使用[name] ["Type"] 代替["Type"] [name] 。 | ||
报告可以安全地替换为 | 弱警告 | |
报告旧式构造函数声明 ( E_DEPRECATED 错误。如果同时定义了 a__construct() 和ClassName() 方法,__construct() 将被调用。在命名空间类或 PHP 8.0 之后的任何类中,ClassName() 方法永远不会有任何特殊含义,也永远不会被称为构造函数。因此,如果 PHP 语言级别设置为 8.0 或更高版本,则检查不会报告此类情况。有关详细信息,请参阅构造函数和析构函数 (php.net)。 | 警告 | |
报告至少包含一个 | 弱警告 | |
报告 PHP 结束标记 | 弱警告 | |
报告简短的 PHP 开始标签 | 警告 | |
报告其主体用大括号括起来但仅包含单个子语句的控制结构(例如循环或条件)。在这种情况下使用大括号是不必要的。 有关详细信息,请参阅控制结构 (php.net)。 | 没有高亮,只有修复 | |
报告数组文字中的传统数组语法 ( | ||
报告解析为特征但在 | 弱警告 | |
报告 | 弱警告 | |
报告对已经属于相应类型的值使用的类型转换运算符。这样的操作员是多余的,可以安全地删除。 有关详细信息,请参阅类型杂耍 (php.net)。 | 弱警告 | |
报告可以就地评估的类型转换,并建议用实际计算值替换它们。 有关详细信息,请参阅类型杂耍 (php.net)。 | 弱警告 | |
报告不必要 | 弱警告 | |
报告不包含字符串插值、转义序列或单引号的双引号字符串文字。 | ||
报告完全限定类名的用法,可以在不添加 | 弱警告 | |
报告 Foo\Bar 全局名称相反,例如FooBar 当前命名空间。有关详细信息,请参阅使用命名空间:别名/导入 (php.net)。 | 弱警告 | |
报告包含多余括号的表达式,可以安全地删除。 | 没有高亮,只有修复 | |
报告变量变量的使用情况(动态变量名称,例如 |
可能的错误
检查 | 描述 | 默认严重性 |
---|---|---|
报告在条件表达式中使用的赋值。 | 没有高亮,只有修复 | |
报告 | 错误 | |
| 警告 | |
报告常量的重新分配。 由于常量不能被改变,这样的赋值将没有任何效果,并且会发出一个E_NOTICE (在 PHP 7.4 和更早版本中)或E_WARNING (在 PHP 8.0 和更高版本中)。 | 警告 | |
报告除以零或模零。 | 错误 | |
| 弱警告 | |
报告数组声明中的重复键。 如果数组声明中的多个元素使用相同的键,则仅使用最后一个,而所有其他元素将被覆盖。 | 警告 | |
报告 | 弱警告 | |
报告语句中的重复 switch 语句包含多个重复case 的表达式,则只执行第一个。 | 警告 | |
报告在 | 警告 | |
| 警告 | |
报告空索引运算符 ( | 错误 | |
报告计算的表达式,但计算结果不用于任何地方。 例如,可能由于将= 运算符拼错为== . | 警告 | |
将循环中使用的变量报告 | 警告 | |
报告未映射到任何参数或规范转换的格式函数的参数(例如 | 警告 | |
报告 | 错误 | |
报告将导致运行时错误的无效字符串偏移使用。 报告了以下用法:
| 错误 | |
报告类型不是 Fatal error . | 警告 | |
将变量分配报告给仅用于写入对象属性而没有可观察到的副作用的新对象。 | 警告 | |
报告尝试将没有 E_RECOVERABLE_ERROR 级别的错误。ERROR 在 PHP 7.4 中,抛出了一个致命的不可恢复。在 PHP 8.0 中,返回值遵循标准的 PHP 类型语义,如果可能并且禁用严格类型,则将强制转换为字符串。如果启用了 Check __toString exists for each expression type 选项,则检查将检查表达式的所有可能类型,并报告其中至少一个不包含__toString 方法实现。有关详细信息,请参阅__toString (php.net)。 | 警告 | |
报告 E_RECOVERABLE_ERROR 级别的错误。ERROR 在 PHP 7.4 中,抛出了一个致命的不可恢复。在 PHP 8.0 中,返回值遵循标准的 PHP 类型语义,如果可能并且禁用严格类型,则将强制转换为字符串。有关详细信息,请参阅__toString (php.net)。 | 错误 | |
报告不以 a或语句结尾 case 子句不以break or结尾return ,它的执行可能会无意中落入下一个案例。 | 弱警告 | |
报告不调用其父构造函数的构造函数。 | 警告 | |
报告不调用其父魔术方法的魔术方法。 | ||
报告不调用其父方法的方法。 | ||
| 警告 | |
报告比较运算符 (
| 弱警告 | |
报告出现在函数/方法声明中所需参数之前的可选参数。 有关详细信息,请参阅默认参数值 (php.net)。 | 警告 | |
报告无法通过引用传递的函数/方法调用中的参数。 只有从函数返回的变量和引用才能通过引用传递。有关详细信息,请参阅按引用传递 (php.net)。 | 错误 | |
报告两边相等的赋值语句。此类分配没有效果,可以删除。 | 警告 | |
报告未涵盖手臂条件中 | 弱警告 | |
报告具有空主体的语句。 虽然偶尔有用,但此类陈述通常是拼写错误的结果,可能会引起混淆。 | 警告 | |
报告在具有不兼容类型的操作数上使用的 | 弱警告 | |
报告变量或参数的名称可能与分配或传递的值的名称不匹配的赋值和函数调用。 支持以下名称集:
| 警告 | |
报告 | 没有高亮,只有修复 | |
报告 | 警告 | |
报告 === ) 来检查match 条件中的类型与match 参数类型,而不管strict_types 指令如何。由于没有发生类型强制,因此某些条件可能由于类型不匹配而导致不匹配。有关详细信息,请参阅匹配表达式 (php.net)。 | 弱警告 | |
| 弱警告 | |
报告 void 函数没有返回值,因此这种用法很可能是编程错误。 | 警告 | |
| 警告 |
常用表达
检查 | 描述 | 默认严重性 |
---|---|---|
报告包含以星号结尾的重复字符 | 弱警告 | |
报告正则表达式字符类中已被同一类中的另一个元素覆盖的元素。这些元素是多余的,可以安全地删除。 | 弱警告 | |
报告仅调整现有范围的正则表达式字符类中的字母范围或字符。这些元素可以与调整后的范围合并。 | 弱警告 |
命名约定
检查 | 描述 | 默认严重性 |
---|---|---|
报告太短、太长或不遵循指定正则表达式模式的类名称。一些编码风格对类有特殊的命名约定。 使用检查选项来指定最小/最大长度和类名所期望的正则表达式。要忽略名称的长度,请指定 0。要了解有关正则表达式的更多信息,请参阅快速入门指南 (regular-expressions.info)。 | ||
报告太短、太长或不遵循指定正则表达式模式的常量名称。一些编码风格对常量有特殊的命名约定。 使用检查选项指定最小/最大长度和常量名称预期的正则表达式。要忽略名称的长度,请指定 0。要了解有关正则表达式的更多信息,请参阅快速入门指南 (regular-expressions.info)。 | ||
报告太短、太长或不遵循指定正则表达式模式的函数名称。一些编码风格对函数有特殊的命名约定。 使用检查选项指定最小/最大长度和函数名称预期的正则表达式。要忽略名称的长度,请指定 0。要了解有关正则表达式的更多信息,请参阅快速入门指南 (regular-expressions.info)。 | ||
报告方法名称太短、太长或不遵循指定的正则表达式模式。一些编码风格对方法有特殊的命名约定。 使用检查选项来指定最小/最大长度和方法名称预期的正则表达式。要忽略名称的长度,请指定 0。要了解有关正则表达式的更多信息,请参阅快速入门指南 (regular-expressions.info)。 | ||
报告太短、太长或不遵循指定正则表达式模式的属性名称。一些编码风格对属性有特殊的命名约定。 使用检查选项指定最小/最大长度和属性名称预期的正则表达式。要忽略名称的长度,请指定 0。要了解有关正则表达式的更多信息,请参阅快速入门指南 (regular-expressions.info)。 | ||
报告太短、太长或不遵循指定正则表达式模式的变量名称。一些编码风格对变量有特殊的命名约定。 使用检查选项指定最小/最大长度以及变量名称所期望的正则表达式。要忽略名称的长度,请指定 0。要了解有关正则表达式的更多信息,请参阅快速入门指南 (regular-expressions.info)。 |
一般的
检查 | 描述 | 默认严重性 |
---|---|---|
报告带有名称标识符的参数。 | 没有高亮,只有修复 | |
报告没有名称标识符的参数。 | 没有高亮,只有修复 | |
报告数组索引上的写入表达式,这些索引在被访问之前立即被覆盖。 | 警告 | |
报告单独实现接口的类,而不是 Traversable 接口为内部引擎接口;它不能在 PHP 脚本中实现。有关详细信息,请参阅Traversable 接口 (php.net)。 | 错误 | |
检查类的层次结构:抽象方法实现、实现/覆盖方法与其在父类中的声明的兼容性,以及属性的类型重新声明。 所有报告的违规都会导致 PHP 致命错误。不建议禁用或抑制此检查。 | 错误 | |
报告大括号语法用于访问数组元素和字符串偏移量的用法。 | 错误 | |
报告已弃用实体的使用情况。 在大多数情况下,应删除此类用法或将其替换为其他构造。 | 弱警告 | |
报告已弃用 Serializable 和不实现__serialize() 类__unserialize() 将抛出弃用警告。有关详细信息,请参阅逐步淘汰可序列化 (php.net)。 | 警告 | |
报告不推荐使用 implode andjoin 将数组作为第一个参数,将字符串作为第二个参数。有关详细信息,请参阅PHP 7.4 (php.net)的弃用。 | 警告 | |
报告对从 PHP 8.1 开始弃用的标准 PHP 库函数的调用。 报告了以下调用:
| 警告 | |
报告不推荐使用的强制转换表达式:
| 弱警告 | |
报告类、函数和常量的使用情况,对应的 PHP 解释器扩展的存根被禁用。 您可以在 Settings/Preferences | 下配置存根集。PHP | PHP 运行时。有关详细信息,请参阅PhpStorm 存根 (blog.jetbrains.com/phpstorm)。 | 没有高亮,只有修复 | |
报告对动态类方法的静态调用。 对于具有魔术方法__callStatic 的类,可以设置单独的检查严重性和突出显示级别。 | 警告 | |
报告在 PHP 版本中引入的实体的使用情况,该版本晚于配置的版本。 | 错误 | |
报告 IDE 忽略的类别名声明,因为存在具有相同 FQN 的实际类声明。 该检查旨在阐明在类和类别名声明都存在的情况下 IDE 的行为。当存在多个具有相同 FQN 的声明时,IDE 通常无法在它们之间选择一个。这会导致不正确的代码完成、错误的类型推断等等。由于类声明优先于类别名声明,后者变得多余,因此被 IDE 忽略。请注意,忽略类别名声明不会影响 PHP 解释器的行为。 | 弱警告 | |
报告不兼容的魔术方法签名。 有关详细信息,请参阅RFC:确保魔法方法的正确签名 (php.net)。 | 错误 | |
报告未声明为公共或声明为静态的魔术方法。 | 警告 | |
报告所选语言级别不支持的源代码中使用的语言功能。 例如,联合类型只能在 PHP 8.0 及更高版本中使用。 | 错误 | |
报告与实现的接口不兼容的父类中的方法声明。 | 错误 | |
根据层次结构中的特定类实例,报告可能无法解析的方法调用中的命名参数。 | 弱警告 | |
报告嵌套的三元表达式,从 PHP 7.4 开始不推荐使用。 | 错误 | |
报告名称与父方法中定义的相同参数不同的方法参数。从 PHP 8.0 开始,此类代码可能会导致运行时错误。 | 弱警告 | |
报告通过提升的构造函数参数声明的属性。 自 PHP 8.0 起才可以使用提升属性。在早期的 PHP 版本中,它会导致解析错误。有关详细信息,请参阅Constructor Property Promotion (php.net)。 | 没有高亮,只有修复 | |
报告可以用升级版本替换的属性。 有关详细信息,请参阅Constructor Property Promotion (php.net)。 | 没有高亮,只有修复 | |
报告在被访问之前立即被覆盖的属性的写表达式。 | 警告 | |
报告 | 错误 | |
报告对静态类方法的动态调用。 如果目标有魔术方法__call ,则可以设置单独的检查严重性和突出显示级别。 | ||
报告未解析 | 弱警告 | |
报告标记为 | 弱警告 | |
| 错误 |
错误处理
检查 | 描述 | 默认严重性 |
---|---|---|
报告 | 弱警告 | |
报告既没有包含在 | 弱警告 | |
报告已经被前面的异常捕获的异常以及被捕获两次的异常。 catch 子句必须从更具体到更通用的顺序排列。否则,某些异常可能不会被最具体的处理程序捕获。有关详细信息,请参阅异常 (php.net)。 | 警告 |
类型兼容性
检查 | 描述 | 默认严重性 |
---|---|---|
报告通过引用不兼容的参数传递它们初始化的变量 | 错误 | |
报告带有不受支持的操作数的算术和按位表达式。 从 PHP 8.0 开始,当操作数之一是数组、资源或非重载对象时,使用算术和位运算符+ , - , * , / , ** , % , << , >> , & , | , ^ , ~ ,将产生. 唯一的例外是合并操作,它仍然受支持。++ -- TypeError array + array 有关完整的操作列表,请参阅PHP 的内部测试源。 | 错误 | |
报告用于非法类型的数组偏移访问表达式。 | 弱警告 | |
报告非法类型的数组键,例如对象或数组。 有关详细信息,请参阅数组 (php.net)。 | 警告 | |
报告 | 警告 | |
报告 | 警告 | |
报告在、、或类型 | 警告 | |
报告未指定类型声明的参数。 | 弱警告 | |
报告没有类型声明的属性。 | 弱警告 | |
报告没有指定返回类型声明的函数。 | 弱警告 | |
检测文件中缺少的 | ||
| 警告 | |
报告包含冗余类型的交集类型声明,例如,包含父类及其子类的交集类型。 有关详细信息,请参阅PHP RFC:纯交集类型 (php.net)。 | 弱警告 | |
报告违反严格类型检查规则的行为。 在严格模式下,只接受与声明类型完全匹配的变量。可以启用严格的类型检查模式:
| 错误 | |
报告包含冗余类型的联合类型声明,例如,包含类别名和原始类的联合类型。 有关详细信息,请参阅联合类型 RFC:重复和冗余类型 (php.net)。 | 弱警告 | |
报告属性分配中的类型违规。 | 警告 |
未定义的符号
检查 | 描述 | 默认严重性 |
---|---|---|
报告对在项目文件中具有多个声明的类的引用。 使用以下选项自定义检查:
| 弱警告 | |
报告多态代码使用情况。这种用法是模棱两可的,并且根据作为参数传递的类实例可能无法操作。 | 弱警告 | |
报告从回调中引用但未找到的函数、方法、属性或类。 使用以下选项自定义检查:
| ||
报告对在项目文件、配置的包含路径或 PHP 预定义类中未找到其声明的类的引用。 使用以下选项自定义检查:
| 警告 | |
报告对未声明的类常量的引用。 | 错误 | |
报告对项目文件、配置的包含路径或 PHP 预定义常量中未找到的常量的引用。 | 警告 | |
报告对项目文件、配置的包含路径或 PHP 预定义函数中未定义的函数的引用。 | 警告 | |
报告 goto 标签必须驻留在同一文件和上下文中:您不能跳入或跳出函数或方法,也不能跳入循环或切换结构。有关详细信息,请参阅goto (php.net)。 | 警告 | |
报告对未定义的类方法的引用。 | 警告 | |
报告对未找到的命名空间的引用。 | 警告 | |
报告对未声明的类属性的引用。 检查会跳过stdClass 派生类型或派生类型的对象。 | 警告 | |
产生两种类型的警告:
| 错误 |
质量工具
检查 | 描述 | 默认严重性 |
---|---|---|
报告 PHP CS Fixer 检测到的编码风格问题。 检查需要在 IDE 中的 Settings/Preferences | 下正确安装和设置 PHP CS Fixer PHP | 质量工具 | PHP CS 修复程序。要了解有关安装 PHP CS Fixer 的更多信息,请参阅PHP-CS-Fixer 安装 (GitHub)。 | ||
报告 PHP Mess Detector 检测到的编码风格问题。 检查需要在 IDE 中的 Settings/Preferences | 下正确安装和设置 PHP Mess Detector PHP | 质量工具 | 混乱探测器。要了解有关安装 PHP Mess Detector 的更多信息,请参阅PHP Mess Detector 安装 (phpmd.org)了解详细信息。您可以使用一组预定义的规则,也可以通过指定有效的ruleset.xml文件来添加您自己的规则。有关详细信息,请参阅规则索引 (phpmd.org)和如何创建自定义规则集 (phpmd.org)。 | ||
运行 PHPStan 以查找代码问题。 检查需要在 IDE 中的 Settings/Preferences | 下正确安装和设置 PHPStan PHP | 质量工具 | PHP斯坦。要了解有关安装 PHPStan 的更多信息,请参阅:https ://phpstan.org/user-guide/getting-started | ||
报告 PHP_CodeSniffer 检测到的编码风格问题。 检查需要 PHP_CodeSniffer 在 IDE 中的 Settings/Preferences | 下正确安装和设置。PHP | 质量工具 | PHP_CodeSniffer。要了解有关安装 PHP_CodeSniffer 的更多信息,请参阅PHP_CodeSniffer 安装 (GitHub)。 | ||
运行 Psalm 以查找代码问题。 检查需要在 IDE 中的 Settings/Preferences | 下正确安装和设置 Psalm PHP | 质量工具 | 诗篇。要了解有关安装 Psalm 的更多信息,请参阅:https ://psalm.dev/docs/running_psalm/installation/ |
未使用的符号
检查 | 描述 | 默认严重性 |
---|---|---|
报告具有始终在类构造函数中覆盖的默认初始值设定项的字段。 | 弱警告 | |
报告未使用或无法从入口点访问的类、方法、函数、常量或属性。它还报告所有方法实现/覆盖。 一些未使用的成员可能不会在代码编辑器中即时报告。由于性能原因,非私有成员仅在其名称很少出现在项目中时才被检查。要查看所有结果,请使用 Code | 以批处理模式运行检查。检查代码...或代码 | 按名称运行检查.... | 弱警告 | |
报告从未使用过的导入。 | 弱警告 | |
报告在以下情况下被视为未使用的变量:
| 弱警告 | |
报告在以下情况下被视为未使用的参数:
| 弱警告 | |
报告从未使用的私有方法。 | 弱警告 | |
报告从未使用的私有属性。 | 弱警告 |
重构机会
检查 | 描述 | 默认严重性 |
---|---|---|
报告具有太多属性或方法的类。 | ||
报告过于复杂的类。 类复杂度基于三个指标进行评估:
| ||
报告过于复杂的函数或方法。 复杂性基于四个指标进行评估:
| ||
报告具有高圈复杂度并且可能可以简化的方法。 有关详细信息,请参阅圈复杂度 (wikipedia.org)。 | ||
报告具有高 Halstead 复杂度指标的方法。 有关详细信息,请参阅Halstead 测量 (wikipedia.org)。 | ||
报告具有高 Lack of Cohesion 度量值的类,该值表示类的内聚程度。 它使用类依赖图组件进行类内聚性度量(M. Hitz 和 B. Montazeri 对 LCOM 度量的定义) | ||
报告应该拉到父类或接口的类方法和属性。 | ||
报告“功能嫉妒”代码气味。特性嫉妒被定义为当一个方法调用另一个类的方法的次数多于源类的方法时发生。它通常表明预期的功能位于错误的类中。 此检查不计算对库类、父类以及包含或包含类的调用。 |
PHP文档
检查 | 描述 | 默认严重性 |
---|---|---|
报告不当
| 弱警告 | |
报告 PHPDoc 注释中与函数/方法声明中的参数名称和类型不匹配的参数名称和类型。 | 弱警告 | |
报告 | 弱警告 | |
报告 | 弱警告 | |
报告仅包含已在声明中提供的信息的 PHPDoc 注释。 | 没有高亮,只有修复 | |
报告 PHPDoc 注释中与函数的实际返回类型不匹配的返回类型。 | 弱警告 | |
报告 PHPDoc 注释中的重复类型。 | 弱警告 | |
报告 PHPDoc | 弱警告 |