phpstan.neon
parameters: level: max phpVersion: 80300 # PHP 8.3 parallel: maximumNumberOfProcesses: 1 processTimeout: 200.0 paths: - src - tests scanFiles: - %currentWorkingDirectory%/vendor/autoload.php - %currentWorkingDirectory%/vendor/squizlabs/php_codesniffer/autoload.php - %currentWorkingDirectory%/vendor/squizlabs/php_codesniffer/src/Util/Tokens.php # enable stricter analysis of benevolent union types checkBenevolentUnionTypes: true # reports use of dynamic properties as undefined checkDynamicProperties: true # reports code paths with missing return statement in functions and methods with @return mixed PHPDoc checkExplicitMixedMissingReturn: true # reports function and method calls with incorrect name case checkFunctionNameCase: true # be strict about values with an unspecified (implicit mixed) type checkImplicitMixed: false # todo: fix # reports references to built-in classes with incorrect name case checkInternalClassCaseSensitivity: true # require that callable signatures are specified checkMissingCallableSignature: true # reports return typehints that could be narrowed down because some of the listed types are never returned checkTooWideReturnTypesInProtectedAndPublicMethods: true # reports properties with native types that weren’t initialized in the class constructor checkUninitializedProperties: true # reports missing #[\Override] attribute checkMissingOverrideMethodAttribute: true # doesn’t require typehints for properties if the types can be inferred from constructor injection inferPrivatePropertyTypeFromConstructor: false # prevents reading key and value variables set in foreach when iterating over a non-empty array polluteScopeWithAlwaysIterableForeach: false # prevents reading variables set in for loop initial statement and while loop condition after the loop polluteScopeWithLoopInitialAssignments: false # report always true last condition in a series of elseif branches and match expression arms reportAlwaysTrueInLastCondition: true # reports violations of parameter type contravariance and return type covariance reportMaybesInMethodSignatures: false # todo: fix # reports violations of property type invariance reportMaybesInPropertyPhpDocTypes: false # todo: fix # reports violations of parameter type contravariance and return type covariance in static methods reportStaticMethodSignatures: true # reportWrongPhpDocTypeInVarTag: true # differentiate between PHPDoc and native types (if false) treatPhpDocTypesAsCertain: false tipsOfTheDay: false exceptions: implicitThrows: false checkedExceptionRegexes: - '#Exception#' - '#Throwable#' check: missingCheckedExceptionInThrows: true tooWideThrowType: true cognitive_complexity: class: 12 function: 9 type_coverage: return_type: 94.7 param_type: 100 property_type: 100 constant_type: 100 # also, how many files has declare strict types declare: 100 unused_public: methods: true properties: true constants: true local_methods: true type_perfect: null_over_false: true no_mixed: true narrow_param: true ignoreErrors: - '~Call to static method PHPUnit\\Framework\\Assert::assert.*\(\) with .* will always evaluate to true~' rules: # code complexity - Symplify\PHPStanRules\Rules\NoDynamicNameRule - Symplify\PHPStanRules\Rules\ForbiddenExtendOfNonAbstractClassRule # domain - Symplify\PHPStanRules\Rules\Domain\RequireExceptionNamespaceRule - Symplify\PHPStanRules\Rules\Domain\RequireAttributeNamespaceRule - Symplify\PHPStanRules\Rules\Enum\RequireUniqueEnumConstantRule - Symplify\PHPStanRules\Rules\PreventParentMethodVisibilityOverrideRule # paths - Symplify\PHPStanRules\Rules\NoReferenceRule # explicit naming - Symplify\PHPStanRules\Rules\ForbiddenMultipleClassLikeInOneFileRule - Symplify\PHPStanRules\Rules\Complexity\ForbiddenArrayMethodCallRule # - Symplify\PHPStanRules\Rules\CheckRequiredInterfaceInContractNamespaceRule # naming - Symplify\PHPStanRules\Rules\RequireAttributeNameRule # naming - Symplify\PHPStanRules\Rules\Explicit\ExplicitClassPrefixSuffixRule # - Symplify\PHPStanRules\Rules\NoReturnSetterMethodRule - Symplify\PHPStanRules\Rules\UppercaseConstantRule - Symplify\PHPStanRules\Rules\ClassNameRespectsParentSuffixRule