From 1ecb55f983a0c502b3796ab3a5dd8261faaaead9 Mon Sep 17 00:00:00 2001 From: David Greminger Date: Wed, 17 Sep 2025 17:46:01 +0200 Subject: [PATCH 1/5] Allow squizlabs/php_codesniffer ^4.0 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index c1423c98..779bda39 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ }, "require-dev": { "symplify/easy-coding-standard": "^12.5", - "squizlabs/php_codesniffer": "^3.12", + "squizlabs/php_codesniffer": "^3.12 || ^4.0", "phpunit/phpunit": "^11.5", "phpstan/extension-installer": "^1.4", "phpstan/phpstan": "^2.1", From a6b5819e56f1a25d539c0dd9a54f58426e90c59a Mon Sep 17 00:00:00 2001 From: David Greminger Date: Thu, 18 Sep 2025 16:56:17 +0200 Subject: [PATCH 2/5] Ditch 3.x --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 779bda39..c3fcd24e 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ }, "require-dev": { "symplify/easy-coding-standard": "^12.5", - "squizlabs/php_codesniffer": "^3.12 || ^4.0", + "squizlabs/php_codesniffer": "^4.0", "phpunit/phpunit": "^11.5", "phpstan/extension-installer": "^1.4", "phpstan/phpstan": "^2.1", From 42c1af9fb9c330b1441d26a31a76687aea0f393a Mon Sep 17 00:00:00 2001 From: David Greminger Date: Thu, 18 Sep 2025 16:56:24 +0200 Subject: [PATCH 3/5] Rector --- rector.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rector.php b/rector.php index 117979ed..b65f0b5b 100644 --- a/rector.php +++ b/rector.php @@ -8,7 +8,7 @@ ->withPaths([__DIR__ . '/config', __DIR__ . '/src', __DIR__ . '/tests']) ->withRootFiles() ->withPhpSets() - ->withPreparedSets(codeQuality: true, codingStyle: true, naming: true, earlyReturn: true, privatization: true) + ->withPreparedSets(codeQuality: true, codingStyle: true, privatization: true, naming: true, earlyReturn: true) ->withImportNames() ->withSkip([ '*/Source/*', From 268031a071fef247366d3d7cb1b805ae166a6cb5 Mon Sep 17 00:00:00 2001 From: David Greminger Date: Thu, 18 Sep 2025 17:05:17 +0200 Subject: [PATCH 4/5] Fix PHPStan errors --- phpstan.neon | 6 +----- src/Fixer/Naming/ClassNameResolver.php | 5 +++++ src/Fixer/Naming/MethodNameResolver.php | 5 +++++ src/TokenRunner/Traverser/TokenReverser.php | 1 + 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/phpstan.neon b/phpstan.neon index c3af9c45..c23869bf 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -13,20 +13,16 @@ parameters: - '*/tests/**/Fixture/*' ignoreErrors: - # partial enum - - '#Method Symplify\\CodingStandard\\TokenRunner\\Analyzer\\FixerAnalyzer\\BlockFinder\:\:(getBlockTypeByContent|getBlockTypeByToken)\(\) never returns \d+ so it can be removed from the return type#' - - path: tests/bootstrap.php message: '#Instantiated class PHP_CodeSniffer\\Util\\Tokens not found#' - '#Constant T_OPEN_CURLY_BRACKET|T_START_NOWDOC not found#' - - '#Method Symplify\\CodingStandard\\TokenRunner\\Traverser\\ArrayBlockInfoFinder\:\:reverseTokens\(\) should return array but returns array#' # unused generics - '#Class (.*?) implements generic interface PhpCsFixer\\Fixer\\ConfigurableFixerInterface but does not specify its types\: TFixerInputConfig, TFixerComputedConfig#' # conditional check to allow various php versions - - message: '#Comparison operation ">\=" between int<80200, 80499> and (.*?) is always true#' + message: '#Comparison operation ">\=" between int<80200, 80599> and (.*?) is always true#' path: src/TokenAnalyzer/DocblockRelatedParamNamesResolver.php diff --git a/src/Fixer/Naming/ClassNameResolver.php b/src/Fixer/Naming/ClassNameResolver.php index cad8e7b6..a3af088f 100644 --- a/src/Fixer/Naming/ClassNameResolver.php +++ b/src/Fixer/Naming/ClassNameResolver.php @@ -45,6 +45,11 @@ private function resolveFromTokens(Tokens $tokens): ?string } $nextNextMeaningfulTokenIndex = $tokens->getNextMeaningfulToken($position + 1); + + if (null === $nextNextMeaningfulTokenIndex) { + continue; + } + $nextNextMeaningfulToken = $tokens[$nextNextMeaningfulTokenIndex]; // skip anonymous classes diff --git a/src/Fixer/Naming/MethodNameResolver.php b/src/Fixer/Naming/MethodNameResolver.php index 57a96c88..af6af29a 100644 --- a/src/Fixer/Naming/MethodNameResolver.php +++ b/src/Fixer/Naming/MethodNameResolver.php @@ -24,6 +24,11 @@ public function resolve(Tokens $tokens, int $currentPosition): ?string } $nextNextMeaningfulTokenIndex = $tokens->getNextMeaningfulToken($position + 1); + + if (null === $nextNextMeaningfulTokenIndex) { + continue; + } + $nextNextMeaningfulToken = $tokens[$nextNextMeaningfulTokenIndex]; // skip anonymous functions diff --git a/src/TokenRunner/Traverser/TokenReverser.php b/src/TokenRunner/Traverser/TokenReverser.php index b7aac5f8..26a542f1 100644 --- a/src/TokenRunner/Traverser/TokenReverser.php +++ b/src/TokenRunner/Traverser/TokenReverser.php @@ -24,6 +24,7 @@ public function reverse(Tokens $tokens): array $reversedTokens = array_reverse($tokens->toArray(), true); // remove null values + // @phpstan-ignore arrayFilter.same return array_filter($reversedTokens); } } From add8607a96c9405fd17b3ca221c673120f26382c Mon Sep 17 00:00:00 2001 From: David Greminger Date: Thu, 30 Oct 2025 15:28:46 +0000 Subject: [PATCH 5/5] Fix PHPStan --- phpstan.neon | 9 --------- src/TokenRunner/Traverser/TokenReverser.php | 1 - 2 files changed, 10 deletions(-) diff --git a/phpstan.neon b/phpstan.neon index 4fa0bf43..9dbaf7a7 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -27,15 +27,6 @@ parameters: message: '#Comparison operation ">\=" between int<80200, 80599> and (.*?) is always true#' path: src/TokenAnalyzer/DocblockRelatedParamNamesResolver.php - # offset access issues - - - message: '#Offset int\|null might not exist on PhpCsFixer\\Tokenizer\\Tokens#' - path: src/Fixer/Naming/ClassNameResolver.php - - - - message: '#Offset int\|null might not exist on PhpCsFixer\\Tokenizer\\Tokens#' - path: src/Fixer/Naming/MethodNameResolver.php - # array filter issue - message: '#Parameter \#1 \$array \(array\) to function array_filter does not contain falsy values, the array will always stay the same#' diff --git a/src/TokenRunner/Traverser/TokenReverser.php b/src/TokenRunner/Traverser/TokenReverser.php index 26a542f1..b7aac5f8 100644 --- a/src/TokenRunner/Traverser/TokenReverser.php +++ b/src/TokenRunner/Traverser/TokenReverser.php @@ -24,7 +24,6 @@ public function reverse(Tokens $tokens): array $reversedTokens = array_reverse($tokens->toArray(), true); // remove null values - // @phpstan-ignore arrayFilter.same return array_filter($reversedTokens); } }