includes: - vendor/symplify/phpstan-rules/config/array-rules.neon - vendor/symplify/phpstan-rules/config/code-complexity-rules.neon - vendor/symplify/phpstan-rules/config/doctrine-rules.neon - vendor/symplify/phpstan-rules/config/forbidden-static-rules.neon - vendor/symplify/phpstan-rules/config/generic-rules.neon - vendor/symplify/phpstan-rules/config/naming-rules.neon - vendor/symplify/phpstan-rules/config/regex-rules.neon - vendor/symplify/phpstan-rules/config/services-rules.neon - vendor/symplify/phpstan-rules/config/static-rules.neon - vendor/symplify/phpstan-rules/config/size-rules.neon - vendor/symplify/phpstan-rules/config/string-to-constant-rules.neon - vendor/symplify/phpstan-rules/config/symfony-rules.neon - vendor/symplify/phpstan-rules/config/test-rules.neon parameters: level: max paths: - ecs.php - rector.php - bin - src - rules - packages - tests - utils # this cannot be put it, because it wipes PHPStan cache on each run :( - must run in separate #- config # to allow installing with various phsptan versions without reporting old errors here bootstrapFiles: - vendor/symfony/dependency-injection/Loader/Configurator/ContainerConfigurator.php scanDirectories: - stubs reportUnmatchedIgnoredErrors: false checkGenericClassInNonGenericObjectType: false excludes_analyse: - */config.php - tests/debug_functions.php # broken in PHPStan https://github.com/rectorphp/rector/runs/1305002460#step:5:56 - packages/BetterPhpDocParser/ValueObject/PhpDocNode/AbstractTagValueNode.php - packages/Testing/PHPUnit/*.php - packages-tests/NodeVisitor/FunctionMethodAndClassNodeVisitor/FunctionMethodAndClassNodeVisitorTest.php - rules/DowngradePhp70/Rector/FunctionLike/AbstractDowngradeParamDeclarationRector.php - "*/Expected/*" # complex printer - '*tests/Rector/MethodCall/RenameMethodRector/**/SomeClass.php' # tests files - '*tests/*/Fixture/*' - '*tests/*/Source/*' - '*tests/Source/*' # part of composer - '*/tests/Rector/Psr4/MultipleClassFileToPsr4ClassesRector/Expected/Just*ExceptionWithoutNamespace.php' - packages-tests/BetterPhpDocPraser/PhpDocParser/TagValueNodeReprint/Fixture/SymfonyRoute/RouteName.php # tests - tests/DependencyInjection/config ignoreErrors: # PHP 7.4 1_000 support - '#Property PhpParser\\Node\\Scalar\\DNumber\:\:\$value \(float\) does not accept string#' # mixed - '#Offset int\|string\|null does not exist on array\|null#' - '#Parameter \#1 \$node of method Rector\\PostRector\\Collector\\NodesToAddCollector\:\:wrapToExpression\(\) expects PhpParser\\Node\\Expr\|PhpParser\\Node\\Stmt, PhpParser\\Node given#' - '#Property PhpParser\\Node\\Stmt\\Namespace_\:\:\$stmts \(array\) does not accept array#' - '#Cognitive complexity for "Rector\\Php80\\NodeResolver\\SwitchExprsResolver\:\:resolve\(\)" is (.*?), keep it under 9#' - message: "#^Cognitive complexity for \"Rector\\\\PhpSpecToPHPUnit\\\\Rector\\\\MethodCall\\\\PhpSpecPromisesToPHPUnitAssertRector\\:\\:refactor\\(\\)\" is 13, keep it under 9$#" path: rules/PhpSpecToPHPUnit/Rector/MethodCall/PhpSpecPromisesToPHPUnitAssertRector.php - message: '#Class cognitive complexity is \d+, keep it under \d+#' paths: - rules/Php70/EregToPcreTransformer.php - packages/NodeCollector/NodeCollector/NodeRepository.php - packages/NodeTypeResolver/NodeTypeResolver.php - rules/CodeQualityStrict/Rector/Variable/MoveVariableDeclarationNearReferenceRector.php - rules/Php80/Rector/If_/NullsafeOperatorRector.php - rules/Renaming/NodeManipulator/ClassRenamer.php - rules/DowngradePhp72/Rector/FuncCall/DowngradePregUnmatchedAsNullConstantRector.php - "#^Cognitive complexity for \"Rector\\\\Php70\\\\EregToPcreTransformer\\:\\:(.*?)\" is (.*?), keep it under 9$#" - '#Cognitive complexity for "Rector\\CodeQuality\\Rector\\If_\\SimplifyIfIssetToNullCoalescingRector\:\:shouldSkip\(\)" is 10, keep it under 9#' - '#Cognitive complexity for "Rector\\TypeDeclaration\\PHPStan\\Type\\ObjectTypeSpecifier\:\:matchShortenedObjectType\(\)" is 10, keep it under 9#' - '#Cognitive complexity for "Rector\\Core\\PhpParser\\Node\\Value\\ValueResolver\:\:getValue\(\)" is \d+, keep it under 9#' - '#Cognitive complexity for "Rector\\DeadCode\\NodeManipulator\\LivingCodeManipulator\:\:keepLivingCodeFromExpr\(\)" is \d+, keep it under 9#' - '#Cognitive complexity for "Rector\\Transform\\Rector\\Class_\\AddInterfaceByParentRector\:\:refactor\(\)" is \d+, keep it under 9#' - '#Parameter \#1 \$type of class PhpParser\\Node\\NullableType constructor expects PhpParser\\Node\\Identifier\|PhpParser\\Node\\Name\|string, PhpParser\\Node\\Identifier\|PhpParser\\Node\\Name\|PhpParser\\Node\\NullableType\|PhpParser\\Node\\UnionType given#' - '#Parameter \#1 \$objectType of method Rector\\Naming\\Naming\\PropertyNaming\:\:fqnToVariableName\(\) expects PHPStan\\Type\\ObjectType\|string, PHPStan\\Type\\Type given#' # known value - '#Property PhpParser\\Node\\Stmt\\Foreach_\:\:\$valueVar \(PhpParser\\Node\\Expr\) does not accept PhpParser\\Node\\Expr\|null#' - '#Access to an undefined property PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTagValueNode\:\:\$type#' - '#Parameter \#1 \$variable of class Rector\\Php70\\ValueObject\\VariableAssignPair constructor expects PhpParser\\Node\\Expr\\ArrayDimFetch\|PhpParser\\Node\\Expr\\PropertyFetch\|PhpParser\\Node\\Expr\\StaticPropertyFetch\|PhpParser\\Node\\Expr\\Variable, PhpParser\\Node\\Expr given#' # is nested expr - '#Access to an undefined property PhpParser\\Node\\Expr\:\:\$expr#' - '#Parameter \#2 \$currentNode of method Rector\\CodingStyle\\Rector\\Assign\\ManualJsonStringToJsonEncodeArrayRector\:\:matchNextExprAssignConcatToSameVariable\(\) expects PhpParser\\Node\\Expr\\Assign\|PhpParser\\Node\\Expr\\AssignOp\\Concat, PhpParser\\Node given#' - message: '#Array (with keys|destruct) is not allowed\. Use value object to pass data instead#' paths: # 3rd party package - rules/Php70/EregToPcreTransformer.php - message: '#Use explicit return value over magic &reference#' paths: # 3rd party code - rules/Php70/EregToPcreTransformer.php # symfony/console - message: '#Use value object over return of values#' path: 'rules/Php70/EregToPcreTransformer.php' - message: '#Nested foreach with empty statement is not allowed#' path: packages-tests/BetterPhpDocParser/PhpDocParser/TagValueNodeReprint/TagValueNodeReprintTest.php - message: '#Function "dump\(\)" cannot be used/left in the code#' path: tests/debug_functions.php - '#Parameter \#1 \$node of method Rector\\DeadCode\\Rector\\Plus\\RemoveDeadZeroAndOneOperationRector\:\:refactor\(\) expects PhpParser\\Node\\Expr\\AssignOp\\Div\|PhpParser\\Node\\Expr\\AssignOp\\Minus\|PhpParser\\Node\\Expr\\AssignOp\\Mul\|PhpParser\\Node\\Expr\\AssignOp\\Plus\|PhpParser\\Node\\Expr\\BinaryOp\\Div\|PhpParser\\Node\\Expr\\BinaryOp\\Minus\|PhpParser\\Node\\Expr\\BinaryOp\\Mul\|PhpParser\\Node\\Expr\\BinaryOp\\Plus, PhpParser\\Node\\Expr\\AssignOp\|PhpParser\\Node\\Expr\\BinaryOp given#' # symplify 9 - '#Use decoupled factory service to create "(.*?)" object#' - '#Use another value object over array with string\-keys and objects, array#' - '#Do not use factory/method call in constructor\. Put factory in config and get service with dependency injection#' - message: '#"(getComments|getDocComment|setDocComment)\(\)" call on "PhpParser\\Node" type is not allowed#' paths: - src/PhpParser/NodeTransformer.php - src/Rector/AbstractRector.php # playing around with doc block format - packages/Comments/CommentRemover.php - rules/CodingStyle/Rector/Assign/PHPStormVarAnnotationRector.php - rules/CodeQuality/Rector/Return_/SimplifyUselessVariableRector.php - rules/DeadCode/Rector/Expression/RemoveDeadStmtRector.php - rules/DeadCode/Rector/Node/RemoveNonExistingVarAnnotationRector.php - rules/PhpSpecToPHPUnit/Rector/MethodCall/PhpSpecMocksToPHPUnitMocksRector.php - rules/CodingStyle/Node/DocAliasResolver.php - packages/BetterPhpDocParser/Comment/CommentsMerger.php - packages/Comments/NodeDocBlock/DocBlockUpdater.php - packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfoFactory.php # false positives checked in another method - message: '#If condition is always false#' paths: - rules/Renaming/Rector/FileWithoutNamespace/PseudoNamespaceToNamespaceRector.php - rules/CodeQuality/Rector/Concat/JoinStringConcatRector.php - rules/Php80/Rector/Switch_/ChangeSwitchToMatchRector.php - packages/NodeNestingScope/NodeFinder/ScopeAwareNodeFinder.php - message: '#Do not use setter on a service#' paths: - src/Configuration/Configuration.php # prevent circular dependnecy - packages/StaticTypeMapper/Naming/NameScopeFactory.php - message: '#Cannot cast array\|bool\|string\|null to string#' paths: - src/Configuration/Configuration.php - src/Console/Command/ProcessCommand.php - src/Console/Command/InitCommand.php - '#Method (.*?) should return array but returns array#' - '#Parameter \#1 (.*?) expects Symfony\\Component\\DependencyInjection\\ContainerBuilder, Symfony\\Component\\DependencyInjection\\ContainerInterface given#' # intersection - '#Property Rector\\TypeDeclaration\\TypeInferer\\ReturnTypeInferer\:\:\$returnTypeInferers \(array\) does not accept array#' - '#Property Rector\\TypeDeclaration\\TypeInferer\\PropertyTypeInferer\:\:\$propertyTypeInferers \(array\) does not accept array#' - '#Access to an undefined property PhpParser\\Node\\Expr\\Error\|PhpParser\\Node\\Expr\\Variable\:\:\$name#' # @todo loop magic, resolve later - message: '#Access to an undefined property PhpParser\\Node\:\:\$expr#' paths: - rules/Php80/Rector/If_/NullsafeOperatorRector.php - '#Method "evaluateBinaryToVersionCompareCondition\(\)" returns bool type, so the name should start with is/has/was#' # soo many false positive naming - fix later with Recto rule - '#Method "(.*?)\(\)" returns bool type, so the name should start with is/has/was#' - message: '#Comparison operation "<" between 0 and 2 is always true#' paths: - rules/Php70/Rector/FuncCall/MultiDirnameRector.php # - '#PHPDoc tag @param for parameter \$node with type float is incompatible with native type PhpParser\\Node#' # false postives - '#Parameter \#2 \$right of class PhpParser\\Node\\Expr\\BinaryOp\\Spaceship constructor expects PhpParser\\Node\\Expr, PhpParser\\Node\\Expr\|null given#' - message: '#Call to function is_string\(\) with float will always evaluate to false#' path: src/PhpParser/Printer/BetterStandardPrinter.php # known values from other methods - message: '#Negated boolean expression is always true#' path: rules/PhpSpecToPHPUnit/NodeFactory/AssertMethodCallFactory.php - message: '#Call to function in_array\(\) with arguments string, array\(\) and true will always evaluate to false#' path: rules/Php56/Rector/FunctionLike/AddDefaultValueForUndefinedVariableRector.php - message: '#Parameter \#1 \$left of class PhpParser\\Node\\Expr\\BinaryOp\\Spaceship constructor expects PhpParser\\Node\\Expr, PhpParser\\Node\\Expr\|null given#' path: rules/Php70/Rector/If_/IfToSpaceshipRector.php - '#PhpParser\\Node\\Expr\\Error\|PhpParser\\Node\\Expr\\Variable given#' - message: '#Use `\$class\-\>namespaceName` instead of `\$class\-\>name` that only returns short class name#' paths: - rules/CodingStyle/Naming/NameRenamer.php - packages/NodeNameResolver/NodeNameResolver/ClassNameResolver.php - message: '#Property with protected modifier is not allowed\. Use interface contract method instead#' paths: - rules/Defluent/ValueObject/* - '#Method Rector\\CodeQuality\\Rector\\Foreach_\\SimplifyForeachToCoalescingRector\:\:matchReturnOrAssignNode\(\) should return PhpParser\\Node\\Expr\\Assign\|PhpParser\\Node\\Stmt\\Return_\|null but returns PhpParser\\Node\|null#' - '#Instanceof between PhpParser\\Node\\Stmt and Rector\\Core\\PhpParser\\Node\\CustomNode\\FileWithoutNamespace will always evaluate to false#' - message: '#Unreachable statement \- code above always terminates#' paths: - bin/rector.php - rules/Php70/Rector/FuncCall/MultiDirnameRector.php - message: '#Function "class_exists\(\)" cannot be used/left in the code#' paths: - bin/rector.php - src/Bootstrap/ExtensionConfigResolver.php - message: '#Do not use static property#' path: 'bin/rector.php' # @todo fix later - message: '#There should be no empty class#' paths: - packages/StaticTypeMapper/ValueObject/Type/*Type.php # generics nullable bugs - '#Method (.*?) should return T of PhpParser\\Node\|null but returns PhpParser\\Node\|null#' - '#Method (.*?) should return T of PhpParser\\Node\|null but returns PhpParser\\Node#' - '#Method (.*?) should return (.*?)\|null but returns PhpParser\\Node\|null#' - '#Method (.*?) should return array but returns array#' # fixed in php-parser master - '#Parameter \#4 \$classWithConstants of class Rector\\Privatization\\ValueObject\\ReplaceStringWithClassConstant constructor expects class\-string, string given#' # buggy phpstan clas-string - '#Method (.*?) should return class\-string but returns string#' - message: '#\$this as argument is not allowed\. Refactor method to service composition#' paths: - src/Rector/AbstractRector.php # setter to avoid circular dependency in nested collector - packages/StaticTypeMapper/StaticTypeMapper.php - packages/PHPStanStaticTypeMapper/PHPStanStaticTypeMapper.php # refactor later - message: '#Use defined constant Symplify\\ComposerJsonManipulator\\ValueObject\\ComposerJsonSection\:\:REQUIRE over string require#' paths: # is "require" in PHP - src/Php/ReservedKeywordAnalyzer.php - '#Method Rector\\Core\\PhpParser\\Node\\BetterNodeFinder\:\:findParentType\(\) should return T of PhpParser\\Node\|null but returns class\-string\|T of PhpParser\\Node#' - message: '#"%s" in sprintf\(\) format must be quoted#' paths: - packages/BetterPhpDocParser/ValueObject/PhpDoc/VariadicAwareParamTagValueNode.php - '#Property Rector\\Core\\PhpParser\\Node\\AssignAndBinaryMap\:\:\$binaryOpToAssignClasses \(array, class\-string\>\) does not accept array#' - message: '#Function "property_exists\(\)" cannot be used/left in the code#' paths: # on PhpParser Nodes - src/NodeManipulator/ClassMethodAssignManipulator.php - rules/Php80/Rector/If_/NullsafeOperatorRector.php - packages/NodeTypeResolver/NodeVisitor/FunctionMethodAndClassNodeVisitor.php - packages/NodeTypeResolver/NodeVisitor/StatementNodeVisitor.php - packages/NodeNameResolver/NodeNameResolver.php - packages/NodeNameResolver/NodeNameResolver/ClassNameResolver.php - packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php # known types - '#Call to an undefined method PHPStan\\Type\\ConstantType\:\:getValue\(\)#' - '#Parameter \#1 \$stmts of method Rector\\EarlyReturn\\Rector\\Return_\\PreparedValueToEarlyReturnRector\:\:collectIfs\(\) expects array, array given#' - '#Access to an undefined property PhpParser\\Node\\FunctionLike\|PhpParser\\Node\\Stmt\\If_\:\:\$stmts#' - message: '#Function "get_declared_classes\(\)" cannot be used/left in the code#' paths: - rules/Restoration/ClassMap/ExistingClassesProvider.php - message: '#Parameter \#1 \$types of method Rector\\Defluent\\NodeAnalyzer\\FluentCallStaticTypeResolver\:\:filterOutAlreadyPresentParentClasses\(\) expects array, array given#' paths: - rules/Defluent/NodeAnalyzer/FluentCallStaticTypeResolver.php - '#Cognitive complexity for "Rector\\CodeQuality\\Rector\\Isset_\\IssetOnPropertyObjectToPropertyExistsRector\:\:refactor\(\)" is \d+, keep it under 9#' # needed for native reflection parameter reference - message: '#Instead of "ReflectionFunction" class/interface use "PHPStan\\Reflection\\FunctionReflection"#' paths: - packages/ReadWrite/Guard/VariableToConstantGuard.php - message: '#Argument and options "debug" got confused#' paths: - src/Console/Command/ProcessCommand.php - '#Parameter \#2 \$returnedStrictTypeNode of method Rector\\TypeDeclaration\\Rector\\ClassMethod\\ReturnTypeFromStrictTypedCallRector\:\:refactorSingleReturnType\(\) expects PhpParser\\Node\\Name\|PhpParser\\Node\\NullableType\|PhpParser\\Node\\UnionType, PhpParser\\Node\\Name\|PhpParser\\Node\\NullableType\|PHPStan\\Type\\UnionType given#' - '#(.*?) class\-string, string given#' # part of refactor() API, node must be returned, or does bring any value - message: '#Use void instead of modify and return self object#' paths: - '*Rector.php' - message: '#Cannot cast array\|string\|null to string#' paths: - utils/compiler/src/Command/DowngradePathsCommand.php # PHP 7_4 literal syntax - '#Property PhpParser\\Node\\Scalar\\DNumber\:\:\$value \(float\|int\) does not accept string#' - '#Unable to resolve the template type T in call to method Rector\\Core\\PhpParser\\Node\\BetterNodeFinder\:\:findParentTypes\(\)#' # mimics original doctrine/annotations parser, improve later when finished - message: '#Array destruct is not allowed\. Use value object to pass data instead#' paths: - packages/BetterPhpDocParser/PhpDocParser/StaticDoctrineAnnotationParser/ArrayParser.php - message: '#Use value object over return of values#' paths: - packages/BetterPhpDocParser/PhpDocParser/StaticDoctrineAnnotationParser/ArrayParser.php - message: '#\$this as argument is not allowed\. Refactor method to service composition#' paths: - packages/BetterPhpDocParser/ValueObject/Parser/BetterTokenIterator.php - message: '#Array with keys is not allowed\. Use value object to pass data instead#' paths: - rules/NetteToSymfony/Rector/ClassMethod/RouterListToControllerAnnotationsRector.php - '#Cognitive complexity for "Rector\\BetterPhpDocParser\\PhpDocParser\\DoctrineAnnotationDecorator\:\:mergeNestedDoctrineAnnotations\(\)" is \d+, keep it under 9#' - '#Cognitive complexity for "Rector\\BetterPhpDocParser\\Printer\\PhpDocInfoPrinter\:\:printDocChildNode\(\)" is \d+, keep it under 9#' - '#Cognitive complexity for "Rector\\NodeTypeResolver\\NodeTypeResolver\:\:resolve\(\)" is \d+, keep it under 9#' - message: '#Property with protected modifier is not allowed\. Use interface contract method instead#' path: 'packages/BetterPhpDocParser/ValueObject/PhpDoc/DoctrineAnnotation/AbstractValuesAwareNode.php' - message: '#Do not inherit from abstract class, better use composition#' paths: - packages/NodeTypeResolver/PhpDocNodeVisitor/*PhpDocNodeVisitor.php - packages/BetterPhpDocParser/PhpDocNodeVisitor/*PhpDocNodeVisitor.php - packages/BetterPhpDocParser/PhpDocParser/BetterTypeParser.php - packages/BetterPhpDocParser/ValueObject/Parser/BetterTokenIterator.php - message: '#Do not use setter on a service#' paths: - packages/NodeTypeResolver/PhpDocNodeVisitor/*PhpDocNodeVisitor.php # known type - '#Parameter \#3 \$pseudoNamespaceToNamespace of method Rector\\NodeTypeResolver\\PhpDocNodeVisitor\\UnderscoreRenamePhpDocNodeVisitor\:\:shouldSkip\(\) expects Rector\\Renaming\\ValueObject\\PseudoNamespaceToNamespace, Rector\\Renaming\\ValueObject\\PseudoNamespaceToNamespace\|null given#' # known types - '#Parameter (.*?) expects PhpParser\\Node, PhpParser\\Node\|null given#' - message: '#Class cognitive complexity is \d+, keep it under 50#' paths: - packages/PHPStanStaticTypeMapper/TypeMapper/UnionTypeMapper.php - '#Cognitive complexity for "Rector\\PHPStanStaticTypeMapper\\TypeMapper\\UnionTypeMapper\:\:mapToPhpParserNode\(\)" is 10, keep it under 9#' - message: '#Property with protected modifier is not allowed\. Use interface contract method instead#' paths: - src/Rector/AbstractRector.php - '#Cannot call method getSmartFileInfo\(\) on Rector\\Core\\ValueObject\\Application\\File\|null#' - '#Parameter \#1 \$file of method Rector\\CodingStyle\\ClassNameImport\\ShortNameResolver\:\:resolveForNode\(\) expects Rector\\Core\\ValueObject\\Application\\File, Rector\\Core\\ValueObject\\Application\\File\|null given#' - '#Method Rector\\Core\\PhpParser\\Node\\BetterNodeFinder\:\:findParentTypes\(\) should return T of PhpParser\\Node\|null but returns class\-string\|T of PhpParser\\Node#' - message: '#Assign in loop is not allowed#' paths: - rules/DowngradePhp72/NodeAnalyzer/ParamContravariantDetector.php # doc typo in php-parser - '#Parameter \#2 \$args of class PhpParser\\Node\\Expr\\FuncCall constructor expects array, array given#' - '#Class with base "(.*?)" name is already used in "Symplify\\(.*?)", "Rector\\(.*?)"\. Use unique name to make classes easy to recognize#' # php-parser bug - '#Parameter \#1 \$type of method PhpParser\\Builder\\FunctionLike\:\:setReturnType\(\) expects PhpParser\\Node\\Name\|PhpParser\\Node\\NullableType\|string, PhpParser\\Node\\Name\|PhpParser\\Node\\NullableType\|PhpParser\\Node\\UnionType given#' - '#Method Rector\\Core\\Tests\\DependencyInjection\\ConfigurableRectorImportConfigCallsMergeTest\:\:provideData\(\) return type has no value type specified in iterable type Iterator#' - '#Class with base "PhpVersion" name is already used in "PHPStan\\Php\\PhpVersion", "Rector\\Core\\ValueObject\\PhpVersion"\. Use unique name to make classes easy to recognize#' - message: '#Use dependency injection instead of dependency juggling#' path: src/HttpKernel/RectorKernel.php - message: '#Use separate function calls with readable variable names#' path: src/FileSystem/FilesFinder.php # fixed in dev-main - message: '#Use dependency injection instead of dependency juggling#' paths: - src/Application/FileProcessor/PhpFileProcessor.php - rules/NetteToSymfony/Rector/ClassMethod/RouterListToControllerAnnotationsRector.php - packages/FamilyTree/Reflection/FamilyRelationsAnalyzer.php - packages/Caching/FileSystem/DependencyResolver.php - packages/BetterPhpDocParser/PhpDocNodeMapper.php - packages/NodeTypeResolver/NodeVisitor/FileNodeVisitor.php # hacking value object - packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php # better reflection static design - packages/NodeTypeResolver/Reflection/BetterReflection/SourceLocatorProvider/DynamicSourceLocatorProvider.php - message: '#Use separate function calls with readable variable names#' path: src/Application/ActiveRectorsProvider.php # skip for define() - message: '#Do not compare call directly, use a variable assign#' path: src/constants.php