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上。