From 38ad6ebc05f91340e65912c92776bd6a93b66b92 Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Wed, 17 Sep 2025 11:56:32 +0200 Subject: [PATCH 1/6] Migrate to PHPCS 4.0 --- IxDFCodingStandard/Helpers/ClassHelper.php | 8 ++++++++ IxDFCodingStandard/Helpers/TokenHelper.php | 8 ++++++++ .../Sniffs/Classes/ForbidMethodDeclarationSniff.php | 2 +- .../Sniffs/Functions/MissingOptionalArgumentSniff.php | 4 ++-- .../Sniffs/Laravel/BladeTemplateExtractor.php | 9 +++++---- .../Sniffs/Laravel/DisallowGuardedAttributeSniff.php | 2 +- .../Sniffs/Laravel/NonExistingBladeTemplateSniff.php | 2 +- .../Sniffs/Laravel/RequireCustomAbortMessageSniff.php | 2 +- composer.json | 8 ++++---- 9 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 IxDFCodingStandard/Helpers/ClassHelper.php create mode 100644 IxDFCodingStandard/Helpers/TokenHelper.php diff --git a/IxDFCodingStandard/Helpers/ClassHelper.php b/IxDFCodingStandard/Helpers/ClassHelper.php new file mode 100644 index 0000000..fcace7d --- /dev/null +++ b/IxDFCodingStandard/Helpers/ClassHelper.php @@ -0,0 +1,8 @@ + */ public function register(): array { - return TokenHelper::ONLY_NAME_TOKEN_CODES; + return TokenHelper::NAME_TOKEN_CODES; } /** @inheritDoc */ diff --git a/IxDFCodingStandard/Sniffs/Laravel/BladeTemplateExtractor.php b/IxDFCodingStandard/Sniffs/Laravel/BladeTemplateExtractor.php index f92ae57..19e18f3 100644 --- a/IxDFCodingStandard/Sniffs/Laravel/BladeTemplateExtractor.php +++ b/IxDFCodingStandard/Sniffs/Laravel/BladeTemplateExtractor.php @@ -4,6 +4,7 @@ use BadMethodCallException; +/** phpcs:disable IxDFCodingStandard.Laravel.NonExistingBladeTemplate.TemplateNotFound */ final class BladeTemplateExtractor { private const INVALID_METHOD_CALL = 'Invalid method call'; @@ -53,7 +54,7 @@ public function getBladeTemplateName(string $tokenContent): string throw new BadMethodCallException(self::INVALID_METHOD_CALL); } - return (string) $matches[2]; + return $matches[2]; } public function getConditionalBladeTemplateName(string $tokenContent): string @@ -69,7 +70,7 @@ public function getConditionalBladeTemplateName(string $tokenContent): string throw new BadMethodCallException(self::INVALID_METHOD_CALL); } - return (string) $matches[2]; + return $matches[2]; } public function getEachBladeTemplateName(string $tokenContent): string @@ -85,7 +86,7 @@ public function getEachBladeTemplateName(string $tokenContent): string throw new BadMethodCallException(self::INVALID_METHOD_CALL); } - return (string) $matches[1]; + return $matches[1]; } public function getFirstBladeTemplateName(string $tokenContent): string @@ -101,6 +102,6 @@ public function getFirstBladeTemplateName(string $tokenContent): string throw new BadMethodCallException(self::INVALID_METHOD_CALL); } - return (string) $matches[2]; + return $matches[2]; } } diff --git a/IxDFCodingStandard/Sniffs/Laravel/DisallowGuardedAttributeSniff.php b/IxDFCodingStandard/Sniffs/Laravel/DisallowGuardedAttributeSniff.php index facf690..55683f0 100644 --- a/IxDFCodingStandard/Sniffs/Laravel/DisallowGuardedAttributeSniff.php +++ b/IxDFCodingStandard/Sniffs/Laravel/DisallowGuardedAttributeSniff.php @@ -2,9 +2,9 @@ namespace IxDFCodingStandard\Sniffs\Laravel; +use IxDFCodingStandard\Helpers\ClassHelper; use PHP_CodeSniffer\Files\File; use PHP_CodeSniffer\Sniffs\AbstractScopeSniff; -use SlevomatCodingStandard\Helpers\ClassHelper; final class DisallowGuardedAttributeSniff extends AbstractScopeSniff { diff --git a/IxDFCodingStandard/Sniffs/Laravel/NonExistingBladeTemplateSniff.php b/IxDFCodingStandard/Sniffs/Laravel/NonExistingBladeTemplateSniff.php index a06a29c..dbd26da 100644 --- a/IxDFCodingStandard/Sniffs/Laravel/NonExistingBladeTemplateSniff.php +++ b/IxDFCodingStandard/Sniffs/Laravel/NonExistingBladeTemplateSniff.php @@ -46,7 +46,7 @@ public function register(): array } /** @inheritDoc */ - public function process(File $phpcsFile, $stackPtr): int // phpcs:ignore Generic.Metrics.CyclomaticComplexity.MaxExceeded, SlevomatCodingStandard.Complexity.Cognitive.ComplexityTooHigh + public function process(File $phpcsFile, $stackPtr): int // phpcs:ignore SlevomatCodingStandard.Complexity.Cognitive.ComplexityTooHigh { $filename = $phpcsFile->getFilename(); diff --git a/IxDFCodingStandard/Sniffs/Laravel/RequireCustomAbortMessageSniff.php b/IxDFCodingStandard/Sniffs/Laravel/RequireCustomAbortMessageSniff.php index b026874..2938cc7 100644 --- a/IxDFCodingStandard/Sniffs/Laravel/RequireCustomAbortMessageSniff.php +++ b/IxDFCodingStandard/Sniffs/Laravel/RequireCustomAbortMessageSniff.php @@ -30,7 +30,7 @@ public function register(): array } /** @param int $functionPointer */ - public function process(File $phpcsFile, $functionPointer): void // phpcs:ignore Generic.Metrics.CyclomaticComplexity.MaxExceeded, SlevomatCodingStandard.Functions.FunctionLength.FunctionLength, SlevomatCodingStandard.Files.FunctionLength.FunctionLength, SlevomatCodingStandard.Complexity.Cognitive.ComplexityTooHigh + public function process(File $phpcsFile, $functionPointer): void // phpcs:ignore SlevomatCodingStandard.Complexity.Cognitive.ComplexityTooHigh,SlevomatCodingStandard.Functions.FunctionLength.FunctionLength { $tokens = $phpcsFile->getTokens(); diff --git a/composer.json b/composer.json index 77b4864..1054f5e 100644 --- a/composer.json +++ b/composer.json @@ -6,13 +6,13 @@ "require": { "php": "^8.2", "dealerdirect/phpcodesniffer-composer-installer": "^1.0", - "slevomat/coding-standard": "^8.22", - "squizlabs/php_codesniffer": "^3.13" + "slevomat/coding-standard": "^8.23", + "squizlabs/php_codesniffer": "^4.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.87", - "phpunit/phpunit": "^11 || ^12", - "vimeo/psalm": "^6.12" + "phpunit/phpunit": "^12.3", + "vimeo/psalm": "^6.13" }, "minimum-stability": "dev", "prefer-stable": true, From 086fb76a0b6ea864468b59d7050fbafaaf6cfec8 Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Wed, 17 Sep 2025 11:57:27 +0200 Subject: [PATCH 2/6] Use healthy defaults for MeaningfulVariableNameSniff --- .../MeaningfulVariableNameSniff.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/IxDFCodingStandard/Sniffs/NamingConventions/MeaningfulVariableNameSniff.php b/IxDFCodingStandard/Sniffs/NamingConventions/MeaningfulVariableNameSniff.php index 5332368..2f45bef 100644 --- a/IxDFCodingStandard/Sniffs/NamingConventions/MeaningfulVariableNameSniff.php +++ b/IxDFCodingStandard/Sniffs/NamingConventions/MeaningfulVariableNameSniff.php @@ -12,7 +12,20 @@ final class MeaningfulVariableNameSniff extends AbstractVariableSniff { /** @var array */ - public array $forbiddenNames = []; + public array $forbiddenNames = [ + // type-like names + 'bool' => 'Provide more context', + 'boolean' => 'Provide more context', + 'int' => 'Provide more context', + 'integer' => 'Provide more context', + 'float' => 'Provide more context', + 'double' => 'Provide more context', + 'str' => 'Provide more context', + 'var' => 'Provide more context', + 'arr' => 'Provide more context', + 'col' => 'Provide more context', + 'coll' => 'Provide more context', + ]; /** * Processes this test, when one of its tokens is encountered. From c1dffb13bba7eaf78f6c2177b772e3f13c0073db Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Wed, 17 Sep 2025 12:00:21 +0200 Subject: [PATCH 3/6] Require PHP ^8.3 --- .github/workflows/format_php.yml | 2 +- .github/workflows/psalm.yml | 2 +- .github/workflows/test.yml | 3 ++- .github/workflows/validator.yml | 2 +- composer.json | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/format_php.yml b/.github/workflows/format_php.yml index abc4efd..16af2ab 100644 --- a/.github/workflows/format_php.yml +++ b/.github/workflows/format_php.yml @@ -21,7 +21,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.2 + php-version: 8.4 coverage: none tools: cs2pr - name: Get Composer cache directory diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml index 735e55c..ec86fcc 100644 --- a/.github/workflows/psalm.yml +++ b/.github/workflows/psalm.yml @@ -24,7 +24,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.2 + php-version: 8.4 coverage: none - name: Get Composer cache directory diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 81f80e3..f3ec409 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,8 +25,9 @@ jobs: - "lowest" - "highest" php-version: - - "8.2" - "8.3" + - "8.4" + - "8.5" operating-system: - "ubuntu-latest" diff --git a/.github/workflows/validator.yml b/.github/workflows/validator.yml index 211ee94..54e03ad 100644 --- a/.github/workflows/validator.yml +++ b/.github/workflows/validator.yml @@ -20,7 +20,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.2 + php-version: 8.4 coverage: none - name: Get Composer cache directory diff --git a/composer.json b/composer.json index 1054f5e..c55fdf0 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "license": "MIT", "type": "phpcodesniffer-standard", "require": { - "php": "^8.2", + "php": "^8.3", "dealerdirect/phpcodesniffer-composer-installer": "^1.0", "slevomat/coding-standard": "^8.23", "squizlabs/php_codesniffer": "^4.0" From d9a8f66afeee81c66163be6b0156c1f44a071713 Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Wed, 17 Sep 2025 12:03:12 +0200 Subject: [PATCH 4/6] Ensure const exist --- IxDFCodingStandard/Helpers/TokenHelper.php | 1 + 1 file changed, 1 insertion(+) diff --git a/IxDFCodingStandard/Helpers/TokenHelper.php b/IxDFCodingStandard/Helpers/TokenHelper.php index 564b3e6..716d735 100644 --- a/IxDFCodingStandard/Helpers/TokenHelper.php +++ b/IxDFCodingStandard/Helpers/TokenHelper.php @@ -5,4 +5,5 @@ /** Created based on \SlevomatCodingStandard\Helpers to have a SSoT for this internal API */ final class TokenHelper extends \SlevomatCodingStandard\Helpers\TokenHelper { + public const array NAME_TOKEN_CODES = parent::NAME_TOKEN_CODES; } From b2f7d241589735462d0899e56f5dec58b4c43a2c Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Wed, 17 Sep 2025 12:06:14 +0200 Subject: [PATCH 5/6] Remove PHP 8.5 from test matrix --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f3ec409..e4aafdd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,6 @@ jobs: php-version: - "8.3" - "8.4" - - "8.5" operating-system: - "ubuntu-latest" From 1d9377140873a99a25391f48a562668d2e74f520 Mon Sep 17 00:00:00 2001 From: Alies Lapatsin Date: Wed, 17 Sep 2025 12:11:34 +0200 Subject: [PATCH 6/6] Add export-ignore for additional files to .gitattributes --- .gitattributes | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.gitattributes b/.gitattributes index cb445a2..5f539cc 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,10 @@ +/.cache export-ignore /.github export-ignore +/.editorconfig export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore /tests export-ignore /phpunit.xml.dist export-ignore +/psalm.xml export-ignore +/psalm-baseline.xml export-ignore +/renovate.json export-ignore \ No newline at end of file