From 12c9bb5896637a12b1bbcfc0f55be29ee188d422 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 01:33:21 +0200 Subject: [PATCH 01/13] update ECS config --- easy-coding-standard.neon | 109 -------------------------------------- easy-coding-standard.yml | 109 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 109 deletions(-) delete mode 100644 easy-coding-standard.neon create mode 100644 easy-coding-standard.yml diff --git a/easy-coding-standard.neon b/easy-coding-standard.neon deleted file mode 100644 index f5462ec..0000000 --- a/easy-coding-standard.neon +++ /dev/null @@ -1,109 +0,0 @@ -includes: - - vendor/symplify/easy-coding-standard/config/symfony-checkers.neon - - vendor/symplify/easy-coding-standard/config/php54-checkers.neon - - vendor/symplify/easy-coding-standard/config/php70-checkers.neon - - vendor/symplify/easy-coding-standard/config/php71-checkers.neon - # custom - - vendor/symplify/easy-coding-standard/config/common.neon - - vendor/symplify/easy-coding-standard/config/spaces.neon - -checkers: - # All rules with default values - - # Rule 1: Only X indentation level per function/method (with default values) - ObjectCalisthenics\Sniffs\Metrics\MaxNestingLevelSniff: - maxNestingLevel: 2 - - # Rule 2: There is no "else" - - ObjectCalisthenics\Sniffs\ControlStructures\NoElseSniff - - # Rule 5: Only one object operator (->) per line (with default values) - ObjectCalisthenics\Sniffs\CodeAnalysis\OneObjectOperatorPerLineSniff: - variablesHoldingAFluentInterface: ["$queryBuilder", "$containerBuilder"] - methodsStartingAFluentInterface: ["createQueryBuilder"] - methodsEndingAFluentInterface: ["execute", "getQuery"] - - # Rule 6: Do not abbreviate (with default values) - ObjectCalisthenics\Sniffs\NamingConventions\ElementNameMinimalLengthSniff: - minLength: 3 - allowedShortNames: ["i", "id", "to", "up"] - - # Rule 7: Keep your classes small (with default values) - ObjectCalisthenics\Sniffs\Files\ClassTraitAndInterfaceLengthSniff: - maxLength: 200 - ObjectCalisthenics\Sniffs\Files\FunctionLengthSniff: - maxLength: 20 - ObjectCalisthenics\Sniffs\Metrics\PropertyPerClassLimitSniff: - maxCount: 10 - ObjectCalisthenics\Sniffs\Metrics\MethodPerClassLimitSniff: - maxCount: 10 - - # Rule 9: Do not Use Getters and Setters - - ObjectCalisthenics\Sniffs\Classes\ForbiddenPublicPropertySniff - - ObjectCalisthenics\Sniffs\NamingConventions\NoSetterSniff - - PhpCsFixer\Fixer\ControlStructure\YodaStyleFixer: - equal: false - identical: false - less_and_greater: false - - # Metrics - PHP_CodeSniffer\Standards\Generic\Sniffs\Files\LineLengthSniff: - absoluteLineLimit: 120 - PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\CyclomaticComplexitySniff: - absoluteComplexity: 4 - PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\NestingLevelSniff: - absoluteNestingLevel: 2 - - # Slevomat - - SlevomatCodingStandard\Sniffs\Classes\UnusedPrivateElementsSniff - - SlevomatCodingStandard\Sniffs\Exceptions\ReferenceThrowableOnlySniff - SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff: - enableEachParameterAndReturnInspection: true - - # Symplify - - Symplify\CodingStandard\Fixer\Php\ClassStringToClassConstantFixer - - Symplify\CodingStandard\Sniffs\PHPUnit\FinalTestCaseSniff - - Symplify\CodingStandard\Sniffs\Debug\DebugFunctionCallSniff - - Symplify\CodingStandard\Sniffs\Property\DynamicPropertySniff - - # Control Structures - - Symplify\CodingStandard\Sniffs\ControlStructures\NewClassSniff - - Symplify\CodingStandard\Fixer\Property\ArrayPropertyDefaultValueFixer - - Symplify\CodingStandard\Fixer\ArrayNotation\StandaloneLineInMultilineArrayFixer - - Symplify\CodingStandard\Fixer\ControlStructure\RequireFollowedByAbsolutePathFixer - - # Spaces - - Symplify\CodingStandard\Fixer\ClassNotation\PropertyAndConstantSeparationFixer - - Symplify\CodingStandard\Fixer\ClassNotation\LastPropertyAndFirstMethodSeparationFixer - - # Comments - - Symplify\CodingStandard\Fixer\Commenting\BlockPropertyCommentFixer - - Symplify\CodingStandard\Sniffs\Commenting\VarConstantCommentSniff - - Symplify\CodingStandard\Sniffs\Debug\CommentedOutCodeSniff - - Symplify\CodingStandard\Fixer\Commenting\AnnotateMagicContainerGetterFixer - - # Naming - - Symplify\CodingStandard\Sniffs\Naming\AbstractClassNameSniff - - Symplify\CodingStandard\Sniffs\Naming\InterfaceNameSniff - - Symplify\CodingStandard\Sniffs\Naming\TraitNameSniff - - Symplify\CodingStandard\Fixer\Naming\MagicMethodsNamingFixer - - Symplify\CodingStandard\Fixer\Naming\PropertyNameMatchingTypeFixer - - # Architecture - - Symplify\CodingStandard\Sniffs\Classes\EqualInterfaceImplementationSniff - - Symplify\CodingStandard\Sniffs\Classes\FinalInterfaceSniff - -parameters: - skip: - SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff: - - *src/ObjectCalisthenics/Sniffs/*/*Sniff.php - - exclude_checkers: - # Symfony ruleset - - PhpCsFixer\Fixer\PhpTag\BlankLineAfterOpeningTagFixer - - PhpCsFixer\Fixer\Operator\NewWithBracesFixer - - PhpCsFixer\Fixer\Phpdoc\PhpdocAlignFixer - # mutually excluded - - SlevomatCodingStandard\Sniffs\ControlStructures\DisallowYodaComparisonSniff - - PhpCsFixer\Fixer\Operator\UnaryOperatorSpacesFixer diff --git a/easy-coding-standard.yml b/easy-coding-standard.yml new file mode 100644 index 0000000..a22656c --- /dev/null +++ b/easy-coding-standard.yml @@ -0,0 +1,109 @@ +imports: + - { resource: 'vendor/symplify/easy-coding-standard/config/symfony.yml' }: ~ + - { resource: 'vendor/symplify/easy-coding-standard/config/php54.yml' }: ~ + - { resource: 'vendor/symplify/easy-coding-standard/config/php70.yml' }: ~ + - { resource: 'vendor/symplify/easy-coding-standard/config/php71.yml' }: ~ + # custom + - { resource: 'vendor/symplify/easy-coding-standard/config/common.neon' }: ~ + - { resource: 'vendor/symplify/easy-coding-standard/config/spaces.neon' }: ~ + +services: + # All rules with default values + + # Rule 1: Only X indentation level per function/method (with default values) + ObjectCalisthenics\Sniffs\Metrics\MaxNestingLevelSniff: + maxNestingLevel: 2 + + # Rule 2: There is no "else" + ObjectCalisthenics\Sniffs\ControlStructures\NoElseSniff: ~ + + # Rule 5: Only one object operator (->) per line (with default values) + ObjectCalisthenics\Sniffs\CodeAnalysis\OneObjectOperatorPerLineSniff: + variablesHoldingAFluentInterface: ["$queryBuilder", "$containerBuilder"] + methodsStartingAFluentInterface: ["createQueryBuilder"] + methodsEndingAFluentInterface: ["execute", "getQuery"] + + # Rule 6: Do not abbreviate (with default values) + ObjectCalisthenics\Sniffs\NamingConventions\ElementNameMinimalLengthSniff: + minLength: 3 + allowedShortNames: ["i", "id", "to", "up"] + + # Rule 7: Keep your classes small (with default values) + ObjectCalisthenics\Sniffs\Files\ClassTraitAndInterfaceLengthSniff: + maxLength: 200 + ObjectCalisthenics\Sniffs\Files\FunctionLengthSniff: + maxLength: 20 + ObjectCalisthenics\Sniffs\Metrics\PropertyPerClassLimitSniff: + maxCount: 10 + ObjectCalisthenics\Sniffs\Metrics\MethodPerClassLimitSniff: + maxCount: 10 + + # Rule 9: Do not Use Getters and Setters + ObjectCalisthenics\Sniffs\Classes\ForbiddenPublicPropertySniff: ~ + ObjectCalisthenics\Sniffs\NamingConventions\NoSetterSniff: ~ + + PhpCsFixer\Fixer\ControlStructure\YodaStyleFixer: + equal: false + identical: false + less_and_greater: false + + # Metrics + PHP_CodeSniffer\Standards\Generic\Sniffs\Files\LineLengthSniff: + absoluteLineLimit: 120 + PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\CyclomaticComplexitySniff: + absoluteComplexity: 4 + PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\NestingLevelSniff: + absoluteNestingLevel: 2 + + # Slevomat + SlevomatCodingStandard\Sniffs\Classes\UnusedPrivateElementsSniff: ~ + SlevomatCodingStandard\Sniffs\Exceptions\ReferenceThrowableOnlySniff: ~ + SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff: + enableEachParameterAndReturnInspection: true + + # Symplify + Symplify\CodingStandard\Fixer\Php\ClassStringToClassConstantFixer: ~ + Symplify\CodingStandard\Sniffs\PHPUnit\FinalTestCaseSniff: ~ + Symplify\CodingStandard\Sniffs\Debug\DebugFunctionCallSniff: ~ + Symplify\CodingStandard\Sniffs\Property\DynamicPropertySniff: ~ + + # Control Structures + Symplify\CodingStandard\Sniffs\ControlStructures\NewClassSniff: ~ + Symplify\CodingStandard\Fixer\Property\ArrayPropertyDefaultValueFixer: ~ + Symplify\CodingStandard\Fixer\ArrayNotation\StandaloneLineInMultilineArrayFixer: ~ + Symplify\CodingStandard\Fixer\ControlStructure\RequireFollowedByAbsolutePathFixer: ~ + + # Spaces + Symplify\CodingStandard\Fixer\ClassNotation\PropertyAndConstantSeparationFixer: ~ + Symplify\CodingStandard\Fixer\ClassNotation\LastPropertyAndFirstMethodSeparationFixer: ~ + + # Comments + Symplify\CodingStandard\Fixer\Commenting\BlockPropertyCommentFixer: ~ + Symplify\CodingStandard\Sniffs\Commenting\VarConstantCommentSniff: ~ + Symplify\CodingStandard\Sniffs\Debug\CommentedOutCodeSniff: ~ + Symplify\CodingStandard\Fixer\Commenting\AnnotateMagicContainerGetterFixer: ~ + + # Naming + Symplify\CodingStandard\Sniffs\Naming\AbstractClassNameSniff: ~ + Symplify\CodingStandard\Sniffs\Naming\InterfaceNameSniff: ~ + Symplify\CodingStandard\Sniffs\Naming\TraitNameSniff: ~ + Symplify\CodingStandard\Fixer\Naming\MagicMethodsNamingFixer: ~ + Symplify\CodingStandard\Fixer\Naming\PropertyNameMatchingTypeFixer: ~ + + # Architecture + Symplify\CodingStandard\Sniffs\Classes\EqualInterfaceImplementationSniff: ~ + Symplify\CodingStandard\Sniffs\Classes\FinalInterfaceSniff: ~ + +parameters: + skip: + SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff: + *src/ObjectCalisthenics/Sniffs/*/*Sniff.php: ~ + + exclude_checkers: + # Symfony ruleset + PhpCsFixer\Fixer\PhpTag\BlankLineAfterOpeningTagFixer: ~ + PhpCsFixer\Fixer\Operator\NewWithBracesFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocAlignFixer: ~ + # mutually excluded + SlevomatCodingStandard\Sniffs\ControlStructures\DisallowYodaComparisonSniff: ~ + PhpCsFixer\Fixer\Operator\UnaryOperatorSpacesFixer: ~ From 5bcf70e53380a34aedc55c92f7905e7bc03cd3a3 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 01:33:25 +0200 Subject: [PATCH 02/13] composer: bump deps --- composer.json | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index 41bdac4..edcea3b 100644 --- a/composer.json +++ b/composer.json @@ -5,16 +5,15 @@ "type": "phpcodesniffer-standard", "require": { "php": "^7.1", - "squizlabs/php_codesniffer": "^3.1", + "squizlabs/php_codesniffer": "^3.2", "nette/utils": "^2.4" }, "require-dev": { - "phpunit/phpunit": "^6.4", - "phpstan/phpstan": "^0.8", - "tracy/tracy": "^2.4", - "symplify/easy-coding-standard": "^2.5", - "symplify/coding-standard": "^2.5", - "slevomat/coding-standard": "^4.0" + "phpunit/phpunit": "^7.0", + "phpstan/phpstan": "^0.9", + "symplify/easy-coding-standard-tester": "^4.0", + "symplify/coding-standard": "^4.0", + "slevomat/coding-standard": "^4.5" }, "autoload": { "psr-4": { From 44a637ceedf9250a955403bbb54e93ea6b6c658f Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 01:35:40 +0200 Subject: [PATCH 03/13] syntax --- easy-coding-standard.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/easy-coding-standard.yml b/easy-coding-standard.yml index a22656c..8a28cfb 100644 --- a/easy-coding-standard.yml +++ b/easy-coding-standard.yml @@ -1,11 +1,9 @@ imports: - - { resource: 'vendor/symplify/easy-coding-standard/config/symfony.yml' }: ~ - - { resource: 'vendor/symplify/easy-coding-standard/config/php54.yml' }: ~ - - { resource: 'vendor/symplify/easy-coding-standard/config/php70.yml' }: ~ - - { resource: 'vendor/symplify/easy-coding-standard/config/php71.yml' }: ~ + - { resource: 'vendor/symplify/easy-coding-standard/config/symfony.yml' } + - { resource: 'vendor/symplify/easy-coding-standard/config/php70.yml' } + - { resource: 'vendor/symplify/easy-coding-standard/config/php71.yml' } # custom - - { resource: 'vendor/symplify/easy-coding-standard/config/common.neon' }: ~ - - { resource: 'vendor/symplify/easy-coding-standard/config/spaces.neon' }: ~ + - { resource: 'vendor/symplify/easy-coding-standard/config/common.yml' } services: # All rules with default values @@ -97,13 +95,13 @@ services: parameters: skip: SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff: - *src/ObjectCalisthenics/Sniffs/*/*Sniff.php: ~ + - '*src/ObjectCalisthenics/Sniffs/*/*Sniff.php' exclude_checkers: # Symfony ruleset - PhpCsFixer\Fixer\PhpTag\BlankLineAfterOpeningTagFixer: ~ - PhpCsFixer\Fixer\Operator\NewWithBracesFixer: ~ - PhpCsFixer\Fixer\Phpdoc\PhpdocAlignFixer: ~ + - 'PhpCsFixer\Fixer\PhpTag\BlankLineAfterOpeningTagFixer' + - 'PhpCsFixer\Fixer\Operator\NewWithBracesFixer' + - 'PhpCsFixer\Fixer\Phpdoc\PhpdocAlignFixer' # mutually excluded - SlevomatCodingStandard\Sniffs\ControlStructures\DisallowYodaComparisonSniff: ~ - PhpCsFixer\Fixer\Operator\UnaryOperatorSpacesFixer: ~ + - 'SlevomatCodingStandard\Sniffs\ControlStructures\DisallowYodaComparisonSniff' + - 'PhpCsFixer\Fixer\Operator\UnaryOperatorSpacesFixer' From 2998fcef5cdfda09afb8e0046e724e81e1c2a8ec Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 01:36:54 +0200 Subject: [PATCH 04/13] [ecs] remove removed rules --- easy-coding-standard.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/easy-coding-standard.yml b/easy-coding-standard.yml index 8a28cfb..20f0879 100644 --- a/easy-coding-standard.yml +++ b/easy-coding-standard.yml @@ -46,8 +46,6 @@ services: less_and_greater: false # Metrics - PHP_CodeSniffer\Standards\Generic\Sniffs\Files\LineLengthSniff: - absoluteLineLimit: 120 PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\CyclomaticComplexitySniff: absoluteComplexity: 4 PHP_CodeSniffer\Standards\Generic\Sniffs\Metrics\NestingLevelSniff: @@ -61,25 +59,17 @@ services: # Symplify Symplify\CodingStandard\Fixer\Php\ClassStringToClassConstantFixer: ~ - Symplify\CodingStandard\Sniffs\PHPUnit\FinalTestCaseSniff: ~ Symplify\CodingStandard\Sniffs\Debug\DebugFunctionCallSniff: ~ - Symplify\CodingStandard\Sniffs\Property\DynamicPropertySniff: ~ # Control Structures - Symplify\CodingStandard\Sniffs\ControlStructures\NewClassSniff: ~ Symplify\CodingStandard\Fixer\Property\ArrayPropertyDefaultValueFixer: ~ Symplify\CodingStandard\Fixer\ArrayNotation\StandaloneLineInMultilineArrayFixer: ~ Symplify\CodingStandard\Fixer\ControlStructure\RequireFollowedByAbsolutePathFixer: ~ - # Spaces - Symplify\CodingStandard\Fixer\ClassNotation\PropertyAndConstantSeparationFixer: ~ - Symplify\CodingStandard\Fixer\ClassNotation\LastPropertyAndFirstMethodSeparationFixer: ~ - # Comments Symplify\CodingStandard\Fixer\Commenting\BlockPropertyCommentFixer: ~ Symplify\CodingStandard\Sniffs\Commenting\VarConstantCommentSniff: ~ Symplify\CodingStandard\Sniffs\Debug\CommentedOutCodeSniff: ~ - Symplify\CodingStandard\Fixer\Commenting\AnnotateMagicContainerGetterFixer: ~ # Naming Symplify\CodingStandard\Sniffs\Naming\AbstractClassNameSniff: ~ @@ -88,10 +78,6 @@ services: Symplify\CodingStandard\Fixer\Naming\MagicMethodsNamingFixer: ~ Symplify\CodingStandard\Fixer\Naming\PropertyNameMatchingTypeFixer: ~ - # Architecture - Symplify\CodingStandard\Sniffs\Classes\EqualInterfaceImplementationSniff: ~ - Symplify\CodingStandard\Sniffs\Classes\FinalInterfaceSniff: ~ - parameters: skip: SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff: From c3c60aa9a895a717892658e20a91846bf84013dd Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 01:37:32 +0200 Subject: [PATCH 05/13] [cs] apply --- .../Sniffs/Classes/ForbiddenPublicPropertySniff.php | 1 - .../Sniffs/CodeAnalysis/OneObjectOperatorPerLineSniff.php | 7 +++---- .../Sniffs/ControlStructures/NoElseSniff.php | 1 - .../Sniffs/Files/ClassTraitAndInterfaceLengthSniff.php | 1 - .../Sniffs/Files/FunctionLengthSniff.php | 1 - .../Sniffs/Metrics/MaxNestingLevelSniff.php | 5 ++--- .../Sniffs/Metrics/MethodPerClassLimitSniff.php | 3 +-- .../Sniffs/Metrics/PropertyPerClassLimitSniff.php | 3 +-- .../NamingConventions/ElementNameMinimalLengthSniff.php | 3 +-- .../Sniffs/NamingConventions/NoSetterSniff.php | 3 +-- 10 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/ObjectCalisthenics/Sniffs/Classes/ForbiddenPublicPropertySniff.php b/src/ObjectCalisthenics/Sniffs/Classes/ForbiddenPublicPropertySniff.php index 585603f..5a69fd5 100644 --- a/src/ObjectCalisthenics/Sniffs/Classes/ForbiddenPublicPropertySniff.php +++ b/src/ObjectCalisthenics/Sniffs/Classes/ForbiddenPublicPropertySniff.php @@ -24,7 +24,6 @@ public function register(): array } /** - * @param File $file * @param int $position */ public function process(File $file, $position): void diff --git a/src/ObjectCalisthenics/Sniffs/CodeAnalysis/OneObjectOperatorPerLineSniff.php b/src/ObjectCalisthenics/Sniffs/CodeAnalysis/OneObjectOperatorPerLineSniff.php index 1162ede..d98bda3 100644 --- a/src/ObjectCalisthenics/Sniffs/CodeAnalysis/OneObjectOperatorPerLineSniff.php +++ b/src/ObjectCalisthenics/Sniffs/CodeAnalysis/OneObjectOperatorPerLineSniff.php @@ -68,7 +68,6 @@ public function register(): array } /** - * @param File $file * @param int $position */ public function process(File $file, $position): void @@ -134,7 +133,7 @@ private function isInFluentInterfaceMode(): bool $lastEndPoint = $this->computeLastCallOfAnyFrom($this->methodsEndingAFluentInterface); $lastStartPoint = $this->computeLastCallOfAnyFrom($this->methodsStartingAFluentInterface); - if (in_array($this->variableName, $this->variablesHoldingAFluentInterface)) { + if (in_array($this->variableName, $this->variablesHoldingAFluentInterface, true)) { $lastStartPoint = max($lastStartPoint, -1); } @@ -151,10 +150,10 @@ private function isInFluentInterfaceMode(): bool private function computeLastCallOfAnyFrom(array $methods): int { $calls = array_filter($this->callerTokens, function (array $token) use ($methods) { - return in_array($token['token']['content'], $methods); + return in_array($token['token']['content'], $methods, true); }); if (count($calls) > 0) { - return array_search(end($calls), $this->callerTokens); + return array_search(end($calls), $this->callerTokens, true); } return -2; diff --git a/src/ObjectCalisthenics/Sniffs/ControlStructures/NoElseSniff.php b/src/ObjectCalisthenics/Sniffs/ControlStructures/NoElseSniff.php index a6989d1..cab88c0 100644 --- a/src/ObjectCalisthenics/Sniffs/ControlStructures/NoElseSniff.php +++ b/src/ObjectCalisthenics/Sniffs/ControlStructures/NoElseSniff.php @@ -21,7 +21,6 @@ public function register(): array } /** - * @param File $file * @param int $position */ public function process(File $file, $position): void diff --git a/src/ObjectCalisthenics/Sniffs/Files/ClassTraitAndInterfaceLengthSniff.php b/src/ObjectCalisthenics/Sniffs/Files/ClassTraitAndInterfaceLengthSniff.php index f103300..60d61e3 100644 --- a/src/ObjectCalisthenics/Sniffs/Files/ClassTraitAndInterfaceLengthSniff.php +++ b/src/ObjectCalisthenics/Sniffs/Files/ClassTraitAndInterfaceLengthSniff.php @@ -27,7 +27,6 @@ public function register(): array } /** - * @param File $file * @param int $position */ public function process(File $file, $position): void diff --git a/src/ObjectCalisthenics/Sniffs/Files/FunctionLengthSniff.php b/src/ObjectCalisthenics/Sniffs/Files/FunctionLengthSniff.php index 01921a7..767a894 100644 --- a/src/ObjectCalisthenics/Sniffs/Files/FunctionLengthSniff.php +++ b/src/ObjectCalisthenics/Sniffs/Files/FunctionLengthSniff.php @@ -27,7 +27,6 @@ public function register(): array } /** - * @param File $file * @param int $position */ public function process(File $file, $position): void diff --git a/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php b/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php index fec0509..074d815 100644 --- a/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php +++ b/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php @@ -51,8 +51,7 @@ public function register(): array } /** - * @param File $file - * @param int $position + * @param int $position */ public function process(File $file, $position): void { @@ -151,7 +150,7 @@ private function handleClosureToken(array $nestedToken): void */ private function handleCaseToken(array $nestedToken): void { - if (in_array($nestedToken['code'], [T_CASE, T_DEFAULT])) { + if (in_array($nestedToken['code'], [T_CASE, T_DEFAULT], true)) { array_push($this->ignoredScopeStack, $nestedToken); return; diff --git a/src/ObjectCalisthenics/Sniffs/Metrics/MethodPerClassLimitSniff.php b/src/ObjectCalisthenics/Sniffs/Metrics/MethodPerClassLimitSniff.php index bd74234..7439318 100644 --- a/src/ObjectCalisthenics/Sniffs/Metrics/MethodPerClassLimitSniff.php +++ b/src/ObjectCalisthenics/Sniffs/Metrics/MethodPerClassLimitSniff.php @@ -28,8 +28,7 @@ public function register(): array } /** - * @param File $file - * @param int $position + * @param int $position */ public function process(File $file, $position): void { diff --git a/src/ObjectCalisthenics/Sniffs/Metrics/PropertyPerClassLimitSniff.php b/src/ObjectCalisthenics/Sniffs/Metrics/PropertyPerClassLimitSniff.php index 0561884..01894f3 100644 --- a/src/ObjectCalisthenics/Sniffs/Metrics/PropertyPerClassLimitSniff.php +++ b/src/ObjectCalisthenics/Sniffs/Metrics/PropertyPerClassLimitSniff.php @@ -27,8 +27,7 @@ public function register(): array } /** - * @param File $file - * @param int $position + * @param int $position */ public function process(File $file, $position): void { diff --git a/src/ObjectCalisthenics/Sniffs/NamingConventions/ElementNameMinimalLengthSniff.php b/src/ObjectCalisthenics/Sniffs/NamingConventions/ElementNameMinimalLengthSniff.php index 16b7375..25afcaf 100644 --- a/src/ObjectCalisthenics/Sniffs/NamingConventions/ElementNameMinimalLengthSniff.php +++ b/src/ObjectCalisthenics/Sniffs/NamingConventions/ElementNameMinimalLengthSniff.php @@ -32,7 +32,6 @@ public function register(): array } /** - * @param File $file * @param int $position */ public function process(File $file, $position): void @@ -70,6 +69,6 @@ private function shouldBeSkipped(int $elementNameLength, string $elementName): b private function isShortNameAllowed(string $variableName): bool { - return in_array($variableName, $this->allowedShortNames); + return in_array($variableName, $this->allowedShortNames, true); } } diff --git a/src/ObjectCalisthenics/Sniffs/NamingConventions/NoSetterSniff.php b/src/ObjectCalisthenics/Sniffs/NamingConventions/NoSetterSniff.php index 8566408..c587a89 100644 --- a/src/ObjectCalisthenics/Sniffs/NamingConventions/NoSetterSniff.php +++ b/src/ObjectCalisthenics/Sniffs/NamingConventions/NoSetterSniff.php @@ -27,8 +27,7 @@ public function register(): array } /** - * @param File $file - * @param int $position + * @param int $position */ public function process(File $file, $position): void { From 4a902def487231c314d95e3237e22a4b9261d263 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 01:38:20 +0200 Subject: [PATCH 06/13] README: fix paths --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e1cda76..4a561e1 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ private function ensureIsAllInstanceOf(array $objects, string $type) #### :wrench: Configurable - [in CodeSniffer XML](/src/ObjectCalisthenics/ruleset.xml#L3-L8) -- [in EasyCodingStandard NEON](/easy-coding-standard.neon#L4-L6) +- [in EasyCodingStandard NEON](/easy-coding-standard.yml#L4-L6) --- @@ -135,7 +135,7 @@ $containerBuilder->addDefinition(SniffRunner::class); #### :wrench: Configurable - [in CodeSniffer XML](/src/ObjectCalisthenics/ruleset.xml#L13-L20) -- [in EasyCodingStandard NEON](/easy-coding-standard.neon#L11-L15) +- [in EasyCodingStandard NEON](/easy-coding-standard.yml#L11-L15) --- @@ -170,7 +170,7 @@ class EntityMailer #### :wrench: Configurable - [in CodeSniffer XML](/src/ObjectCalisthenics/ruleset.xml#L22-L28) -- [in EasyCodingStandard NEON](/easy-coding-standard.neon#L17-L20) +- [in EasyCodingStandard NEON](/easy-coding-standard.yml#L17-L20) --- @@ -264,7 +264,7 @@ class SomeClass #### :wrench: Configurable - [in CodeSniffer XML](/src/ObjectCalisthenics/ruleset.xml#L30-L50) -- [in EasyCodingStandard NEON](/easy-coding-standard.neon#L22-L30) +- [in EasyCodingStandard NEON](/easy-coding-standard.yml#L22-L30) --- From 908413f8ef1a7f1a2cf02d7365d5903b526cbcdf Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 01:40:05 +0200 Subject: [PATCH 07/13] [ecs] use symplify set --- easy-coding-standard.yml | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/easy-coding-standard.yml b/easy-coding-standard.yml index 20f0879..bc33bb6 100644 --- a/easy-coding-standard.yml +++ b/easy-coding-standard.yml @@ -4,6 +4,7 @@ imports: - { resource: 'vendor/symplify/easy-coding-standard/config/php71.yml' } # custom - { resource: 'vendor/symplify/easy-coding-standard/config/common.yml' } + - { resource: 'vendor/symplify/easy-coding-standard/config/symplify.yml' } services: # All rules with default values @@ -57,27 +58,6 @@ services: SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff: enableEachParameterAndReturnInspection: true - # Symplify - Symplify\CodingStandard\Fixer\Php\ClassStringToClassConstantFixer: ~ - Symplify\CodingStandard\Sniffs\Debug\DebugFunctionCallSniff: ~ - - # Control Structures - Symplify\CodingStandard\Fixer\Property\ArrayPropertyDefaultValueFixer: ~ - Symplify\CodingStandard\Fixer\ArrayNotation\StandaloneLineInMultilineArrayFixer: ~ - Symplify\CodingStandard\Fixer\ControlStructure\RequireFollowedByAbsolutePathFixer: ~ - - # Comments - Symplify\CodingStandard\Fixer\Commenting\BlockPropertyCommentFixer: ~ - Symplify\CodingStandard\Sniffs\Commenting\VarConstantCommentSniff: ~ - Symplify\CodingStandard\Sniffs\Debug\CommentedOutCodeSniff: ~ - - # Naming - Symplify\CodingStandard\Sniffs\Naming\AbstractClassNameSniff: ~ - Symplify\CodingStandard\Sniffs\Naming\InterfaceNameSniff: ~ - Symplify\CodingStandard\Sniffs\Naming\TraitNameSniff: ~ - Symplify\CodingStandard\Fixer\Naming\MagicMethodsNamingFixer: ~ - Symplify\CodingStandard\Fixer\Naming\PropertyNameMatchingTypeFixer: ~ - parameters: skip: SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff: From 7ac790a3fe40de29439e67765eda505707c91bbf Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 01:40:37 +0200 Subject: [PATCH 08/13] [cs] apply --- src/ObjectCalisthenics/Helper/ClassAnalyzer.php | 5 +---- .../Sniffs/Metrics/MaxNestingLevelSniff.php | 7 +------ .../Sniffs/Metrics/MethodPerClassLimitSniff.php | 7 +------ .../Sniffs/Metrics/PropertyPerClassLimitSniff.php | 7 +------ .../NamingConventions/ElementNameMinimalLengthSniff.php | 8 +------- 5 files changed, 5 insertions(+), 29 deletions(-) diff --git a/src/ObjectCalisthenics/Helper/ClassAnalyzer.php b/src/ObjectCalisthenics/Helper/ClassAnalyzer.php index ba3c7da..6ccd37b 100644 --- a/src/ObjectCalisthenics/Helper/ClassAnalyzer.php +++ b/src/ObjectCalisthenics/Helper/ClassAnalyzer.php @@ -64,10 +64,7 @@ private static function ensureIsClassTraitOrInterface(File $file, int $position) if (! in_array($token['code'], [T_CLASS, T_INTERFACE, T_TRAIT], true)) { throw new NonClassTypeTokenTypeException( - sprintf( - 'Must be class, interface or trait. "%s" given.', - ltrim($token['type'], 'T_') - ) + sprintf('Must be class, interface or trait. "%s" given.', ltrim($token['type'], 'T_')) ); } } diff --git a/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php b/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php index 074d815..bd6e494 100644 --- a/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php +++ b/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php @@ -79,12 +79,7 @@ private function handleNestingLevel(int $nestingLevel): void if ($nestingLevel > $this->maxNestingLevel) { $levelPluralization = $this->maxNestingLevel > 1 ? 's' : ''; - $error = sprintf( - self::ERROR_MESSAGE, - $this->maxNestingLevel, - $levelPluralization, - $nestingLevel - ); + $error = sprintf(self::ERROR_MESSAGE, $this->maxNestingLevel, $levelPluralization, $nestingLevel); $this->file->addError($error, $this->position, self::class); } diff --git a/src/ObjectCalisthenics/Sniffs/Metrics/MethodPerClassLimitSniff.php b/src/ObjectCalisthenics/Sniffs/Metrics/MethodPerClassLimitSniff.php index 7439318..13ccae9 100644 --- a/src/ObjectCalisthenics/Sniffs/Metrics/MethodPerClassLimitSniff.php +++ b/src/ObjectCalisthenics/Sniffs/Metrics/MethodPerClassLimitSniff.php @@ -36,12 +36,7 @@ public function process(File $file, $position): void if ($methodCount > $this->maxCount) { $typeName = Naming::getTypeName($file, $position); - $message = sprintf( - self::ERROR_MESSAGE, - $typeName, - $methodCount, - $this->maxCount - ); + $message = sprintf(self::ERROR_MESSAGE, $typeName, $methodCount, $this->maxCount); $file->addError($message, $position, self::class); } diff --git a/src/ObjectCalisthenics/Sniffs/Metrics/PropertyPerClassLimitSniff.php b/src/ObjectCalisthenics/Sniffs/Metrics/PropertyPerClassLimitSniff.php index 01894f3..936d1df 100644 --- a/src/ObjectCalisthenics/Sniffs/Metrics/PropertyPerClassLimitSniff.php +++ b/src/ObjectCalisthenics/Sniffs/Metrics/PropertyPerClassLimitSniff.php @@ -36,12 +36,7 @@ public function process(File $file, $position): void if ($propertiesCount > $this->maxCount) { $tokenType = $file->getTokens()[$position]['content']; - $message = sprintf( - self::ERROR_MESSAGE, - $tokenType, - $propertiesCount, - $this->maxCount - ); + $message = sprintf(self::ERROR_MESSAGE, $tokenType, $propertiesCount, $this->maxCount); $file->addError($message, $position, self::class); } } diff --git a/src/ObjectCalisthenics/Sniffs/NamingConventions/ElementNameMinimalLengthSniff.php b/src/ObjectCalisthenics/Sniffs/NamingConventions/ElementNameMinimalLengthSniff.php index 25afcaf..42e2da6 100644 --- a/src/ObjectCalisthenics/Sniffs/NamingConventions/ElementNameMinimalLengthSniff.php +++ b/src/ObjectCalisthenics/Sniffs/NamingConventions/ElementNameMinimalLengthSniff.php @@ -44,13 +44,7 @@ public function process(File $file, $position): void } $typeName = Naming::getTypeName($file, $position); - $message = sprintf( - self::ERROR_MESSAGE, - $typeName, - $elementName, - $elementNameLength, - $this->minLength - ); + $message = sprintf(self::ERROR_MESSAGE, $typeName, $elementName, $elementNameLength, $this->minLength); $file->addError($message, $position, self::class); } From 512fae535ffe9a28fcabcc7e7321e53bbac0e16b Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 10:07:19 +0200 Subject: [PATCH 09/13] use ECS Tester for tests --- easy-coding-standard.yml | 3 ++ .../ForbiddenPublicPropertySniffTest.php | 38 +++++++++++++-- tests/Sniffs/Classes/config.yml | 2 + .../OneObjectOperatorPerLineSniffTest.php | 40 ++++++++++++++-- tests/Sniffs/CodeAnalysis/config.yml | 2 + .../ControlStructures/NoElseSniffTest.php | 27 +++++++++-- tests/Sniffs/ControlStructures/config.yml | 2 + .../ClassTraitAndInterfaceLengthSniffTest.php | 3 +- .../FunctionLengthSniffTest.php | 26 ++++++++-- tests/Sniffs/Files/FunctionLength/config.yml | 2 + .../MaxNestingLevelSniffTest.php | 25 ++++++++-- .../Sniffs/Metrics/MaxNestingLevel/config.yml | 2 + .../MethodPerClassLimitSniffTest.php | 3 +- .../Metrics/MethodPerClassLimit/config.yml | 2 + .../PropertyPerClassLimitSniffTest.php | 36 ++++++++++++-- .../Metrics/PropertyPerClassLimit/config.yml | 2 + .../ElementNameMinimalLengthSniffTest.php | 48 +++++++++++++++++-- .../ElementNameMinimalLength/config.yml | 2 + .../NoSetter/NoSetterSniffTest.php | 38 +++++++++++++-- .../NamingConventions/NoSetter/config.yml | 2 + 20 files changed, 268 insertions(+), 37 deletions(-) create mode 100644 tests/Sniffs/Classes/config.yml create mode 100644 tests/Sniffs/CodeAnalysis/config.yml create mode 100644 tests/Sniffs/ControlStructures/config.yml create mode 100644 tests/Sniffs/Files/FunctionLength/config.yml create mode 100644 tests/Sniffs/Metrics/MaxNestingLevel/config.yml create mode 100644 tests/Sniffs/Metrics/MethodPerClassLimit/config.yml create mode 100644 tests/Sniffs/Metrics/PropertyPerClassLimit/config.yml create mode 100644 tests/Sniffs/NamingConventions/ElementNameMinimalLength/config.yml create mode 100644 tests/Sniffs/NamingConventions/NoSetter/config.yml diff --git a/easy-coding-standard.yml b/easy-coding-standard.yml index bc33bb6..1c30803 100644 --- a/easy-coding-standard.yml +++ b/easy-coding-standard.yml @@ -63,7 +63,10 @@ parameters: SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff: - '*src/ObjectCalisthenics/Sniffs/*/*Sniff.php' + PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\AssignmentInConditionSniff.Found: ~ + exclude_checkers: + - 'Symplify\CodingStandard\Sniffs\CleanCode\ForbiddenStaticFunctionSniff' # Symfony ruleset - 'PhpCsFixer\Fixer\PhpTag\BlankLineAfterOpeningTagFixer' - 'PhpCsFixer\Fixer\Operator\NewWithBracesFixer' diff --git a/tests/Sniffs/Classes/ForbiddenPublicPropertySniffTest.php b/tests/Sniffs/Classes/ForbiddenPublicPropertySniffTest.php index 000a883..428aeae 100644 --- a/tests/Sniffs/Classes/ForbiddenPublicPropertySniffTest.php +++ b/tests/Sniffs/Classes/ForbiddenPublicPropertySniffTest.php @@ -2,13 +2,43 @@ namespace ObjectCalisthenics\Tests\Sniffs\Classes; +use Iterator; use ObjectCalisthenics\Sniffs\Classes\ForbiddenPublicPropertySniff; -use ObjectCalisthenics\Tests\Sniffs\AbstractSniffTestCase; +use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; -final class ForbiddenPublicPropertySniffTest extends AbstractSniffTestCase +/** + * @see ForbiddenPublicPropertySniff + */ +final class ForbiddenPublicPropertySniffTest extends AbstractCheckerTestCase { - public function test(): void + /** + * @dataProvider provideCorrectCases() + */ + public function testCorrectCases(string $file): void { - $this->runSniffTestForDirectory(ForbiddenPublicPropertySniff::class, __DIR__); + $this->doTestCorrectFile($file); + } + + public function provideCorrectCases(): Iterator + { + yield [__DIR__ . '/correct/correct.php.inc']; + } + + /** + * @dataProvider provideWrongCases() + */ + public function testWrongToFixed(string $wrongFile): void + { + $this->doTestWrongFile($wrongFile); + } + + public function provideWrongCases(): Iterator + { + yield [__DIR__ . '/wrong/wrong.php.inc']; + } + + protected function provideConfig(): string + { + return __DIR__ . '/config.yml'; } } diff --git a/tests/Sniffs/Classes/config.yml b/tests/Sniffs/Classes/config.yml new file mode 100644 index 0000000..47f4cae --- /dev/null +++ b/tests/Sniffs/Classes/config.yml @@ -0,0 +1,2 @@ +services: + ObjectCalisthenics\Sniffs\Classes\ForbiddenPublicPropertySniff: ~ diff --git a/tests/Sniffs/CodeAnalysis/OneObjectOperatorPerLineSniffTest.php b/tests/Sniffs/CodeAnalysis/OneObjectOperatorPerLineSniffTest.php index 440099c..5095b75 100644 --- a/tests/Sniffs/CodeAnalysis/OneObjectOperatorPerLineSniffTest.php +++ b/tests/Sniffs/CodeAnalysis/OneObjectOperatorPerLineSniffTest.php @@ -2,13 +2,45 @@ namespace ObjectCalisthenics\Tests\Sniffs\CodeAnalysis; +use Iterator; use ObjectCalisthenics\Sniffs\CodeAnalysis\OneObjectOperatorPerLineSniff; -use ObjectCalisthenics\Tests\Sniffs\AbstractSniffTestCase; +use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; -final class OneObjectOperatorPerLineSniffTest extends AbstractSniffTestCase +/** + * @see OneObjectOperatorPerLineSniff + */ +final class OneObjectOperatorPerLineSniffTest extends AbstractCheckerTestCase { - public function test(): void + /** + * @dataProvider provideCorrectCases() + */ + public function testCorrectCases(string $file): void { - $this->runSniffTestForDirectory(OneObjectOperatorPerLineSniff::class, __DIR__); + $this->doTestCorrectFile($file); + } + + public function provideCorrectCases(): Iterator + { + yield [__DIR__ . '/correct/correct.php.inc']; + } + + /** + * @dataProvider provideWrongCases() + */ + public function testWrongToFixed(string $wrongFile): void + { + $this->doTestWrongFile($wrongFile); + } + + public function provideWrongCases(): Iterator + { + yield [__DIR__ . '/wrong/wrong.php.inc']; + yield [__DIR__ . '/wrong/wrong2.php.inc']; + yield [__DIR__ . '/wrong/wrong3.php.inc']; + } + + protected function provideConfig(): string + { + return __DIR__ . '/config.yml'; } } diff --git a/tests/Sniffs/CodeAnalysis/config.yml b/tests/Sniffs/CodeAnalysis/config.yml new file mode 100644 index 0000000..3cd6925 --- /dev/null +++ b/tests/Sniffs/CodeAnalysis/config.yml @@ -0,0 +1,2 @@ +services: + ObjectCalisthenics\Sniffs\CodeAnalysis\OneObjectOperatorPerLineSniff: ~ diff --git a/tests/Sniffs/ControlStructures/NoElseSniffTest.php b/tests/Sniffs/ControlStructures/NoElseSniffTest.php index cfd0f02..968b044 100644 --- a/tests/Sniffs/ControlStructures/NoElseSniffTest.php +++ b/tests/Sniffs/ControlStructures/NoElseSniffTest.php @@ -2,13 +2,32 @@ namespace ObjectCalisthenics\Tests\Sniffs\ControlStructures; +use Iterator; use ObjectCalisthenics\Sniffs\ControlStructures\NoElseSniff; -use ObjectCalisthenics\Tests\Sniffs\AbstractSniffTestCase; +use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; -final class NoElseSniffTest extends AbstractSniffTestCase +/** + * @see NoElseSniff + */ +final class NoElseSniffTest extends AbstractCheckerTestCase { - public function test(): void + /** + * @dataProvider provideWrongCases() + */ + public function testWrongToFixed(string $wrongFile): void { - $this->runSniffTestForDirectory(NoElseSniff::class, __DIR__); + $this->doTestWrongFile($wrongFile); + } + + public function provideWrongCases(): Iterator + { + yield [__DIR__ . '/wrong/wrong.php.inc']; + yield [__DIR__ . '/wrong/wrong2.php.inc']; + yield [__DIR__ . '/wrong/wrong3.php.inc']; + } + + protected function provideConfig(): string + { + return __DIR__ . '/config.yml'; } } diff --git a/tests/Sniffs/ControlStructures/config.yml b/tests/Sniffs/ControlStructures/config.yml new file mode 100644 index 0000000..06f96d4 --- /dev/null +++ b/tests/Sniffs/ControlStructures/config.yml @@ -0,0 +1,2 @@ +services: + ObjectCalisthenics\Sniffs\ControlStructures\NoElseSniff: ~ \ No newline at end of file diff --git a/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php b/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php index 58ae3be..a419c4b 100644 --- a/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php +++ b/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php @@ -3,9 +3,8 @@ namespace ObjectCalisthenics\Tests\Sniffs\Files\ClassTraitAndInterfaceLength; use ObjectCalisthenics\Sniffs\Files\ClassTraitAndInterfaceLengthSniff; -use ObjectCalisthenics\Tests\Sniffs\AbstractSniffTestCase; -final class ClassTraitAndInterfaceLengthSniffTest extends AbstractSniffTestCase +final class ClassTraitAndInterfaceLengthSniffTest extends AbstractCheckerTestCase { public function test(): void { diff --git a/tests/Sniffs/Files/FunctionLength/FunctionLengthSniffTest.php b/tests/Sniffs/Files/FunctionLength/FunctionLengthSniffTest.php index 3bb47ea..fca2065 100644 --- a/tests/Sniffs/Files/FunctionLength/FunctionLengthSniffTest.php +++ b/tests/Sniffs/Files/FunctionLength/FunctionLengthSniffTest.php @@ -2,13 +2,31 @@ namespace ObjectCalisthenics\Tests\Sniffs\Files\FunctionLengthSniff; +use Iterator; use ObjectCalisthenics\Sniffs\Files\FunctionLengthSniff; -use ObjectCalisthenics\Tests\Sniffs\AbstractSniffTestCase; +use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; -final class FunctionLengthSniffTest extends AbstractSniffTestCase +/** + * @see FunctionLengthSniff + */ +final class FunctionLengthSniffTest extends AbstractCheckerTestCase { - public function test(): void + /** + * @dataProvider provideWrongCases() + */ + public function testWrongToFixed(string $wrongFile): void { - $this->runSniffTestForDirectory(FunctionLengthSniff::class, __DIR__); + $this->doTestWrongFile($wrongFile); + } + + public function provideWrongCases(): Iterator + { + yield [__DIR__ . '/wrong/wrong.php.inc']; + yield [__DIR__ . '/wrong/wrong2.php.inc']; + } + + protected function provideConfig(): string + { + return __DIR__ . '/config.yml'; } } diff --git a/tests/Sniffs/Files/FunctionLength/config.yml b/tests/Sniffs/Files/FunctionLength/config.yml new file mode 100644 index 0000000..46807de --- /dev/null +++ b/tests/Sniffs/Files/FunctionLength/config.yml @@ -0,0 +1,2 @@ +services: + ObjectCalisthenics\Sniffs\Files\FunctionLengthSniff: ~ \ No newline at end of file diff --git a/tests/Sniffs/Metrics/MaxNestingLevel/MaxNestingLevelSniffTest.php b/tests/Sniffs/Metrics/MaxNestingLevel/MaxNestingLevelSniffTest.php index 3af5510..6bdd6c2 100644 --- a/tests/Sniffs/Metrics/MaxNestingLevel/MaxNestingLevelSniffTest.php +++ b/tests/Sniffs/Metrics/MaxNestingLevel/MaxNestingLevelSniffTest.php @@ -2,13 +2,30 @@ namespace ObjectCalisthenics\Tests\Sniffs\Metrics\MaxNestingLevel; +use Iterator; use ObjectCalisthenics\Sniffs\Metrics\MaxNestingLevelSniff; -use ObjectCalisthenics\Tests\Sniffs\AbstractSniffTestCase; +use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; -final class MaxNestingLevelSniffTest extends AbstractSniffTestCase +/** + * @see MaxNestingLevelSniff + */ +final class MaxNestingLevelSniffTest extends AbstractCheckerTestCase { - public function test(): void + /** + * @dataProvider provideWrongCases() + */ + public function testWrongToFixed(string $wrongFile): void { - $this->runSniffTestForDirectory(MaxNestingLevelSniff::class, __DIR__); + $this->doTestWrongFile($wrongFile); + } + + public function provideWrongCases(): Iterator + { + yield [__DIR__ . '/wrong/wrong.php.inc']; + } + + protected function provideConfig(): string + { + return __DIR__ . '/config.yml'; } } diff --git a/tests/Sniffs/Metrics/MaxNestingLevel/config.yml b/tests/Sniffs/Metrics/MaxNestingLevel/config.yml new file mode 100644 index 0000000..fda49e3 --- /dev/null +++ b/tests/Sniffs/Metrics/MaxNestingLevel/config.yml @@ -0,0 +1,2 @@ +services: + : \ No newline at end of file diff --git a/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php b/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php index 8de7f43..d5bbd48 100644 --- a/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php +++ b/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php @@ -3,9 +3,8 @@ namespace ObjectCalisthenics\Tests\Sniffs\Metrics\MethodPerClassLimit; use ObjectCalisthenics\Sniffs\Metrics\MethodPerClassLimitSniff; -use ObjectCalisthenics\Tests\Sniffs\AbstractSniffTestCase; -final class MethodPerClassLimitSniffTest extends AbstractSniffTestCase +final class MethodPerClassLimitSniffTest extends AbstractCheckerTestCase { public function test(): void { diff --git a/tests/Sniffs/Metrics/MethodPerClassLimit/config.yml b/tests/Sniffs/Metrics/MethodPerClassLimit/config.yml new file mode 100644 index 0000000..fda49e3 --- /dev/null +++ b/tests/Sniffs/Metrics/MethodPerClassLimit/config.yml @@ -0,0 +1,2 @@ +services: + : \ No newline at end of file diff --git a/tests/Sniffs/Metrics/PropertyPerClassLimit/PropertyPerClassLimitSniffTest.php b/tests/Sniffs/Metrics/PropertyPerClassLimit/PropertyPerClassLimitSniffTest.php index 3ca5cd6..8fe857e 100644 --- a/tests/Sniffs/Metrics/PropertyPerClassLimit/PropertyPerClassLimitSniffTest.php +++ b/tests/Sniffs/Metrics/PropertyPerClassLimit/PropertyPerClassLimitSniffTest.php @@ -2,13 +2,39 @@ namespace ObjectCalisthenics\Tests\Sniffs\Metrics\PropertyPerClassLimit; -use ObjectCalisthenics\Sniffs\Metrics\PropertyPerClassLimitSniff; -use ObjectCalisthenics\Tests\Sniffs\AbstractSniffTestCase; +use Iterator; +use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; -final class PropertyPerClassLimitSniffTest extends AbstractSniffTestCase +final class PropertyPerClassLimitSniffTest extends AbstractCheckerTestCase { - public function test(): void + /** + * @dataProvider provideCorrectCases() + */ + public function testCorrectCases(string $file): void { - $this->runSniffTestForDirectory(PropertyPerClassLimitSniff::class, __DIR__); + $this->doTestCorrectFile($file); + } + + public function provideCorrectCases(): Iterator + { + yield [__DIR__ . '/correct/correct.php.inc']; + } + + /** + * @dataProvider provideWrongCases() + */ + public function testWrongToFixed(string $wrongFile): void + { + $this->doTestWrongFile($wrongFile); + } + + public function provideWrongCases(): Iterator + { + yield [__DIR__ . '/wrong/wrong.php.inc']; + } + + protected function provideConfig(): string + { + return __DIR__ . '/config.yml'; } } diff --git a/tests/Sniffs/Metrics/PropertyPerClassLimit/config.yml b/tests/Sniffs/Metrics/PropertyPerClassLimit/config.yml new file mode 100644 index 0000000..a9de769 --- /dev/null +++ b/tests/Sniffs/Metrics/PropertyPerClassLimit/config.yml @@ -0,0 +1,2 @@ +services: + ObjectCalisthenics\Sniffs\Metrics\PropertyPerClassLimitSniff: ~ diff --git a/tests/Sniffs/NamingConventions/ElementNameMinimalLength/ElementNameMinimalLengthSniffTest.php b/tests/Sniffs/NamingConventions/ElementNameMinimalLength/ElementNameMinimalLengthSniffTest.php index 5f9bd24..ef1f950 100644 --- a/tests/Sniffs/NamingConventions/ElementNameMinimalLength/ElementNameMinimalLengthSniffTest.php +++ b/tests/Sniffs/NamingConventions/ElementNameMinimalLength/ElementNameMinimalLengthSniffTest.php @@ -2,13 +2,53 @@ namespace ObjectCalisthenics\Tests\Sniffs\NamingConventions\ElementNameMinimalLength; +use Iterator; use ObjectCalisthenics\Sniffs\NamingConventions\ElementNameMinimalLengthSniff; -use ObjectCalisthenics\Tests\Sniffs\AbstractSniffTestCase; +use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; -final class ElementNameMinimalLengthSniffTest extends AbstractSniffTestCase +/** + * @see ElementNameMinimalLengthSniff + */ +final class ElementNameMinimalLengthSniffTest extends AbstractCheckerTestCase { - public function test(): void + /** + * @dataProvider provideCorrectCases() + */ + public function testCorrectCases(string $file): void { - $this->runSniffTestForDirectory(ElementNameMinimalLengthSniff::class, __DIR__); + $this->doTestCorrectFile($file); + } + + public function provideCorrectCases(): Iterator + { + yield [__DIR__ . '/correct/correct.php.inc']; + yield [__DIR__ . '/correct/correct2.php.inc']; + yield [__DIR__ . '/correct/correct3.php.inc']; + } + + /** + * @dataProvider provideWrongCases() + */ + public function testWrongToFixed(string $wrongFile): void + { + $this->doTestWrongFile($wrongFile); + } + + public function provideWrongCases(): Iterator + { + yield [__DIR__ . '/wrong/wrong.php.inc']; + yield [__DIR__ . '/wrong/wrong2.php.inc']; + yield [__DIR__ . '/wrong/wrong3.php.inc']; + yield [__DIR__ . '/wrong/wrong4.php.inc']; + yield [__DIR__ . '/wrong/wrong5.php.inc']; + yield [__DIR__ . '/wrong/wrong6.php.inc']; + yield [__DIR__ . '/wrong/wrong7.php.inc']; + yield [__DIR__ . '/wrong/wrong8.php.inc']; + yield [__DIR__ . '/wrong/wrong9.php.inc']; + } + + protected function provideConfig(): string + { + return __DIR__ . '/config.yml'; } } diff --git a/tests/Sniffs/NamingConventions/ElementNameMinimalLength/config.yml b/tests/Sniffs/NamingConventions/ElementNameMinimalLength/config.yml new file mode 100644 index 0000000..2e80d6c --- /dev/null +++ b/tests/Sniffs/NamingConventions/ElementNameMinimalLength/config.yml @@ -0,0 +1,2 @@ +services: + ObjectCalisthenics\Sniffs\NamingConventions\ElementNameMinimalLengthSniff: ~ \ No newline at end of file diff --git a/tests/Sniffs/NamingConventions/NoSetter/NoSetterSniffTest.php b/tests/Sniffs/NamingConventions/NoSetter/NoSetterSniffTest.php index 7f8a010..68533a5 100644 --- a/tests/Sniffs/NamingConventions/NoSetter/NoSetterSniffTest.php +++ b/tests/Sniffs/NamingConventions/NoSetter/NoSetterSniffTest.php @@ -2,13 +2,43 @@ namespace ObjectCalisthenics\tests\Sniffs\NamingConventions; +use Iterator; use ObjectCalisthenics\Sniffs\NamingConventions\NoSetterSniff; -use ObjectCalisthenics\Tests\Sniffs\AbstractSniffTestCase; +use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; -final class NoSetterSniffTest extends AbstractSniffTestCase +/** + * @see NoSetterSniff + */ +final class NoSetterSniffTest extends AbstractCheckerTestCase { - public function test(): void + /** + * @dataProvider provideCorrectCases() + */ + public function testCorrectCases(string $file): void { - $this->runSniffTestForDirectory(NoSetterSniff::class, __DIR__); + $this->doTestCorrectFile($file); + } + + public function provideCorrectCases(): Iterator + { + yield [__DIR__ . '/correct/correct.php.inc']; + } + + /** + * @dataProvider provideWrongCases() + */ + public function testWrongToFixed(string $wrongFile): void + { + $this->doTestWrongFile($wrongFile); + } + + public function provideWrongCases(): Iterator + { + yield [__DIR__ . '/wrong/wrong.php.inc']; + } + + protected function provideConfig(): string + { + return __DIR__ . '/config.yml'; } } diff --git a/tests/Sniffs/NamingConventions/NoSetter/config.yml b/tests/Sniffs/NamingConventions/NoSetter/config.yml new file mode 100644 index 0000000..fda49e3 --- /dev/null +++ b/tests/Sniffs/NamingConventions/NoSetter/config.yml @@ -0,0 +1,2 @@ +services: + : \ No newline at end of file From dcc0541e7f6e5e676110e4139563cd6bb296dd5d Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 10:13:07 +0200 Subject: [PATCH 10/13] drop AbstractSniffTestCase --- tests/Sniffs/AbstractSniffTestCase.php | 107 ------------------------- 1 file changed, 107 deletions(-) delete mode 100644 tests/Sniffs/AbstractSniffTestCase.php diff --git a/tests/Sniffs/AbstractSniffTestCase.php b/tests/Sniffs/AbstractSniffTestCase.php deleted file mode 100644 index 12e2d30..0000000 --- a/tests/Sniffs/AbstractSniffTestCase.php +++ /dev/null @@ -1,107 +0,0 @@ -create(); - $this->sniffFileProcessor = $container->get(SniffFileProcessor::class); - $this->errorCollector = $container->get(ErrorCollector::class); - $this->fixer = $container->get(Fixer::class); - - foreach ($this->findFilesInDirectory($directory) as $file) { - if (Strings::startsWith($file->getFilename(), 'correct')) { - $this->runSniffTestForCorrectFile($sniffClass, $file); - } - - if (Strings::startsWith($file->getFilename(), 'wrong')) { - $this->runSniffTestForWrongFile($sniffClass, $file); - } - } - } - - private function runSniffTestForCorrectFile(string $sniffClass, SplFileInfo $fileInfo): void - { - $this->processFileWithSniff($sniffClass, $fileInfo); - - $this->assertSame(0, $this->errorCollector->getErrorCount(), sprintf( - 'File "%s" should have no errors. %s found.', - $fileInfo->getPathname(), - $this->errorCollector->getErrorCount() - )); - } - - private function runSniffTestForWrongFile(string $sniffClass, SplFileInfo $fileInfo): void - { - $this->processFileWithSniff($sniffClass, $fileInfo); - - $this->assertSame(1, $this->errorCollector->getErrorCount(), sprintf( - 'File "%s" should have at least 1 error.', - $fileInfo->getPathname() - )); - - $fixedFileName = $this->getFixedFileName($fileInfo); - if (! file_exists($fixedFileName)) { - return; - } - - $this->assertStringEqualsFile($fixedFileName, $this->fixer->getContents(), sprintf( - 'File "%s" was not fixed properly. "%s" expected, "%s" given.', - $fileInfo->getPathname(), - file_get_contents($fixedFileName), - $this->fixer->getContents() - )); - } - - /** - * @return SplFileInfo[] - */ - private function findFilesInDirectory(string $directory): array - { - $iterator = Finder::findFiles('*.php.inc') - ->exclude('*-fixed*') - ->from($directory) - ->getIterator(); - - return iterator_to_array($iterator); - } - - private function getFixedFileName(SplFileInfo $fileInfo): string - { - return dirname($fileInfo->getPathname()) . '/' . $fileInfo->getBasename('.php.inc') . '-fixed.php.inc'; - } - - private function processFileWithSniff(string $sniffClass, SplFileInfo $fileInfo): void - { - $this->errorCollector->resetCounters(); - $this->sniffFileProcessor->setIsFixer(true); // to test changed content of file - $this->sniffFileProcessor->setSingleSniff(new $sniffClass); - $this->sniffFileProcessor->processFile($fileInfo, true); - } -} From c9a09136bc4fb72504fd23ddd2ec756999e4f4e6 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 10:13:18 +0200 Subject: [PATCH 11/13] complete few more tests --- .../ClassTraitAndInterfaceLengthSniffTest.php | 21 ++++++++++++++++--- .../ClassTraitAndInterfaceLength/config.yml | 2 ++ .../Sniffs/Metrics/MaxNestingLevel/config.yml | 2 +- .../MethodPerClassLimitSniffTest.php | 19 ++++++++++++++--- .../Metrics/MethodPerClassLimit/config.yml | 2 +- .../NamingConventions/NoSetter/config.yml | 2 +- 6 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 tests/Sniffs/Files/ClassTraitAndInterfaceLength/config.yml diff --git a/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php b/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php index a419c4b..b37eba9 100644 --- a/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php +++ b/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php @@ -2,12 +2,27 @@ namespace ObjectCalisthenics\Tests\Sniffs\Files\ClassTraitAndInterfaceLength; -use ObjectCalisthenics\Sniffs\Files\ClassTraitAndInterfaceLengthSniff; +use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; final class ClassTraitAndInterfaceLengthSniffTest extends AbstractCheckerTestCase { - public function test(): void + /** + * @dataProvider provideWrongCases() + */ + public function testWrongToFixed(string $wrongFile): void { - $this->runSniffTestForDirectory(ClassTraitAndInterfaceLengthSniff::class, __DIR__); + $this->doTestWrongFile($wrongFile); + } + + public function provideWrongCases(): \Iterator + { + yield [__DIR__ . '/wrong/wrong.php.inc']; + yield [__DIR__ . '/wrong/wrong2.php.inc']; + yield [__DIR__ . '/wrong/wrong3.php.inc']; + } + + protected function provideConfig(): string + { + return __DIR__ . '/config.yml'; } } diff --git a/tests/Sniffs/Files/ClassTraitAndInterfaceLength/config.yml b/tests/Sniffs/Files/ClassTraitAndInterfaceLength/config.yml new file mode 100644 index 0000000..c9bd3cf --- /dev/null +++ b/tests/Sniffs/Files/ClassTraitAndInterfaceLength/config.yml @@ -0,0 +1,2 @@ +services: + ObjectCalisthenics\Sniffs\Files\ClassTraitAndInterfaceLengthSniff: ~ diff --git a/tests/Sniffs/Metrics/MaxNestingLevel/config.yml b/tests/Sniffs/Metrics/MaxNestingLevel/config.yml index fda49e3..b3caa39 100644 --- a/tests/Sniffs/Metrics/MaxNestingLevel/config.yml +++ b/tests/Sniffs/Metrics/MaxNestingLevel/config.yml @@ -1,2 +1,2 @@ services: - : \ No newline at end of file + ObjectCalisthenics\Sniffs\Metrics\MaxNestingLevelSniff: ~ diff --git a/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php b/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php index d5bbd48..b0c9147 100644 --- a/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php +++ b/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php @@ -2,12 +2,25 @@ namespace ObjectCalisthenics\Tests\Sniffs\Metrics\MethodPerClassLimit; -use ObjectCalisthenics\Sniffs\Metrics\MethodPerClassLimitSniff; +use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; final class MethodPerClassLimitSniffTest extends AbstractCheckerTestCase { - public function test(): void + /** + * @dataProvider provideWrongCases() + */ + public function testWrongToFixed(string $wrongFile): void { - $this->runSniffTestForDirectory(MethodPerClassLimitSniff::class, __DIR__); + $this->doTestWrongFile($wrongFile); + } + + public function provideWrongCases(): \Iterator + { + yield [__DIR__ . '/wrong/wrong.php.inc']; + } + + protected function provideConfig(): string + { + return __DIR__ . '/config.yml'; } } diff --git a/tests/Sniffs/Metrics/MethodPerClassLimit/config.yml b/tests/Sniffs/Metrics/MethodPerClassLimit/config.yml index fda49e3..0f9d974 100644 --- a/tests/Sniffs/Metrics/MethodPerClassLimit/config.yml +++ b/tests/Sniffs/Metrics/MethodPerClassLimit/config.yml @@ -1,2 +1,2 @@ services: - : \ No newline at end of file + ObjectCalisthenics\Sniffs\Metrics\MethodPerClassLimitSniff: ~ diff --git a/tests/Sniffs/NamingConventions/NoSetter/config.yml b/tests/Sniffs/NamingConventions/NoSetter/config.yml index fda49e3..be4c1e8 100644 --- a/tests/Sniffs/NamingConventions/NoSetter/config.yml +++ b/tests/Sniffs/NamingConventions/NoSetter/config.yml @@ -1,2 +1,2 @@ services: - : \ No newline at end of file + ObjectCalisthenics\Sniffs\NamingConventions\NoSetterSniff: ~ \ No newline at end of file From 357062f706734b23e52b15c3c467885d0a97091f Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 4 Apr 2018 10:17:08 +0200 Subject: [PATCH 12/13] [st] fix --- phpstan.neon | 3 +-- .../Sniffs/Metrics/MaxNestingLevelSniff.php | 2 +- tests/bootstrap.php | 6 ++++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/phpstan.neon b/phpstan.neon index 87c1ada..2852962 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,7 +1,6 @@ parameters: autoload_files: + - %currentWorkingDirectory%/tests/bootstrap.php - %currentWorkingDirectory%/vendor/squizlabs/php_codesniffer/autoload.php excludes_analyse: - **/ObjectCalisthenics/Helper/Slevomat/** - ignoreErrors: - - '#Method ObjectCalisthenics\\Sniffs\\Metrics\\MaxNestingLevelSniff::register\(\) should return int\[\] but returns \(int\|string\)\[\]#' diff --git a/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php b/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php index bd6e494..b4979e0 100644 --- a/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php +++ b/src/ObjectCalisthenics/Sniffs/Metrics/MaxNestingLevelSniff.php @@ -43,7 +43,7 @@ final class MaxNestingLevelSniff implements Sniff private $currentPtr; /** - * @return int[] + * @return int[]|string[] */ public function register(): array { diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 8d7430e..8759f4d 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -1,4 +1,10 @@ Date: Wed, 4 Apr 2018 10:17:40 +0200 Subject: [PATCH 13/13] [cs] fix --- .../ClassTraitAndInterfaceLengthSniffTest.php | 3 ++- .../MethodPerClassLimit/MethodPerClassLimitSniffTest.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php b/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php index b37eba9..81e5a44 100644 --- a/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php +++ b/tests/Sniffs/Files/ClassTraitAndInterfaceLength/ClassTraitAndInterfaceLengthSniffTest.php @@ -2,6 +2,7 @@ namespace ObjectCalisthenics\Tests\Sniffs\Files\ClassTraitAndInterfaceLength; +use Iterator; use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; final class ClassTraitAndInterfaceLengthSniffTest extends AbstractCheckerTestCase @@ -14,7 +15,7 @@ public function testWrongToFixed(string $wrongFile): void $this->doTestWrongFile($wrongFile); } - public function provideWrongCases(): \Iterator + public function provideWrongCases(): Iterator { yield [__DIR__ . '/wrong/wrong.php.inc']; yield [__DIR__ . '/wrong/wrong2.php.inc']; diff --git a/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php b/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php index b0c9147..4ce0938 100644 --- a/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php +++ b/tests/Sniffs/Metrics/MethodPerClassLimit/MethodPerClassLimitSniffTest.php @@ -2,6 +2,7 @@ namespace ObjectCalisthenics\Tests\Sniffs\Metrics\MethodPerClassLimit; +use Iterator; use Symplify\EasyCodingStandardTester\Testing\AbstractCheckerTestCase; final class MethodPerClassLimitSniffTest extends AbstractCheckerTestCase @@ -14,7 +15,7 @@ public function testWrongToFixed(string $wrongFile): void $this->doTestWrongFile($wrongFile); } - public function provideWrongCases(): \Iterator + public function provideWrongCases(): Iterator { yield [__DIR__ . '/wrong/wrong.php.inc']; }