phpstan strict rules
2.0.1
PHPSTAN专注于在您的代码中查找错误。但是在PHP中,如何写东西有很多余地。该存储库包含其他规则,这些规则围绕严格且强烈地键入的代码,而对于那些希望在极度防御性编程中使用额外安全的人来说,铸造没有松散的铸件:
if , elseif ,三元操作员之后,都需要布尔值! ,在&&和||的两边。+和数字操作数中需要- / * / / / ** / % 。$var++ , $var-- , ++$var和--$var中的数字操作数。$strict参数,以确保更好的类型安全,必须将其设置为true :in_array (第三参数)array_search (第三参数)array_keys (第三参数;仅当提供第二个参数$search_value时)base64_decode (第二参数)while条件和for初始分配分配的变量不能在循环后使用。switch条件和case值的类型必须匹配。 PHP默认情况下将它们宽松地比较,这可能导致意外的结果。empty() - 这是一个非常松散的比较(请参阅手册),建议使用更严格的比较。?: :) - 暗示比较弱,建议使用零结合操作员( ?? )或严格条件的三元操作员。$$foo , $this->$method()等)instanceof ,类型检查is_*函数和严格的比较=== / !== 。可以通过将checkAlwaysTrueInstanceof / checkAlwaysTrueCheckTypeFunctionCall / checkAlwaysTrueStrictComparison设置为false,可以关闭这些检查。$ls = `ls -la` )$this而不是间接使用$this变量随后的版本中还会有其他规则!
要使用此扩展名,请在作曲家中需要它:
composer require --dev phpstan/phpstan-strict-rules
如果您还安装了phpstan/Extension-installer,那么您将全部设置!
如果您不想使用phpstan/extension-installer ,请在项目的phpstan config中包含规则。
includes:
- vendor/phpstan/phpstan-strict-rules/rules.neon
您可以使用配置参数禁用规则:
parameters :
strictRules :
disallowedLooseComparison : false
booleansInConditions : false
uselessCast : false
requireParentConstructorCall : false
disallowedBacktick : false
disallowedEmpty : false
disallowedImplicitArrayCreation : false
disallowedShortTernary : false
overwriteVariablesWithLoop : false
closureUsesThis : false
matchingInheritedMethodNames : false
numericOperandsInArithmeticOperators : false
strictFunctionCalls : false
dynamicCallOnStaticMethod : false
switchConditionsMatchingType : false
noVariableVariables : false
strictArrayFilter : false
illegalConstructorMethodCall : false除了引入新的自定义规则外,phpstan-strict-rules还更改了phpstan本身中存在的某些配置参数的默认值。这些参数记录在phpstan.org上。
如果您不想一次使用所有可用的严格规则,而只想使用一两个规则,则可以!
您可以从随附的rules.neon中禁用所有规则。
parameters :
strictRules :
allRules : false然后,您可以使用配置参数重新启用单个规则:
parameters :
strictRules :
allRules : false
booleansInConditions : true即使strictRules.allRules false这是因为phpstan-strict-rules还更改了phpstan本身中存在的某些配置参数的默认值。这些参数记录在phpstan.org上。