diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 92f81bd..8e04040 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -2,9 +2,10 @@ declare(strict_types=1); +use PhpCsFixer\Finder; use VisualCraft\PhpCsFixerConfig; -$finder = PhpCsFixer\Finder::create() +$finder = Finder::create() ->in(__DIR__ . '/src') ->append([ __DIR__ . '/.php-cs-fixer.dist.php', diff --git a/README.md b/README.md index 12a3fa7..510a222 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ Pick one of the rule sets: * [`VisualCraft\PhpCsFixerConfig\RuleSet\Php81`](src/RuleSet/Php81.php) * [`VisualCraft\PhpCsFixerConfig\RuleSet\Php82`](src/RuleSet/Php82.php) * [`VisualCraft\PhpCsFixerConfig\RuleSet\Php83`](src/RuleSet/Php83.php) +* [`VisualCraft\PhpCsFixerConfig\RuleSet\Php84`](src/RuleSet/Php84.php) Create a configuration file `.php-cs-fixer.dist.php` in the root of your project: @@ -37,7 +38,7 @@ $finder = PhpCsFixer\Finder::create() ]) ; -$config = PhpCsFixerConfig\Factory::fromRuleSet(new PhpCsFixerConfig\RuleSet\Php83()); +$config = PhpCsFixerConfig\Factory::fromRuleSet(new PhpCsFixerConfig\RuleSet\Php84()); $config ->setFinder($finder) ->setCacheFile(__DIR__ . '/.php-cs-fixer.cache') @@ -66,8 +67,8 @@ Optionally override rules from a rule set by passing in an array of rules to be ]) ; --$config = PhpCsFixerConfig\Factory::fromRuleSet(new PhpCsFixerConfig\RuleSet\Php83()); -+$config = PhpCsFixerConfig\Factory::fromRuleSet(new PhpCsFixerConfig\RuleSet\Php83(), [ +-$config = PhpCsFixerConfig\Factory::fromRuleSet(new PhpCsFixerConfig\RuleSet\Php84()); ++$config = PhpCsFixerConfig\Factory::fromRuleSet(new PhpCsFixerConfig\RuleSet\Php84(), [ + 'strict_comparison' => false, +]); $config diff --git a/composer.json b/composer.json index 49f9902..12ea453 100644 --- a/composer.json +++ b/composer.json @@ -11,13 +11,13 @@ ], "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.34", - "kubawerlos/php-cs-fixer-custom-fixers": "^3.16", - "pedrotroller/php-cs-custom-fixer": "^2.28" + "friendsofphp/php-cs-fixer": "^3.87", + "kubawerlos/php-cs-fixer-custom-fixers": "^3.34", + "pedrotroller/php-cs-custom-fixer": "^2.34" }, "require-dev": { - "ergebnis/composer-normalize": "^2.25", - "vimeo/psalm": "^4.22" + "ergebnis/composer-normalize": "^2.48", + "vimeo/psalm": "^6.13" }, "minimum-stability": "stable", "prefer-stable": true, diff --git a/psalm.xml b/psalm.xml index adbf7e7..0f79de1 100644 --- a/psalm.xml +++ b/psalm.xml @@ -19,5 +19,6 @@ + diff --git a/src/Factory.php b/src/Factory.php index 2162350..7a9e32d 100644 --- a/src/Factory.php +++ b/src/Factory.php @@ -9,7 +9,7 @@ final class Factory { /** - * @psalm-param array $overrideRules + * @psalm-param array|bool> $overrideRules */ public static function fromRuleSet(RuleSetInterface $ruleSet, array $overrideRules = []): Config { diff --git a/src/RuleSet/Php74.php b/src/RuleSet/Php74.php index a44687d..276f7a8 100644 --- a/src/RuleSet/Php74.php +++ b/src/RuleSet/Php74.php @@ -4,15 +4,35 @@ namespace VisualCraft\PhpCsFixerConfig\RuleSet; +use PhpCsFixerCustomFixers\Fixer\CommentSurroundedBySpacesFixer; +use PhpCsFixerCustomFixers\Fixer\MultilineCommentOpeningClosingAloneFixer; +use PhpCsFixerCustomFixers\Fixer\NoDoctrineMigrationsGeneratedCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoDuplicatedImportsFixer; +use PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer; +use PhpCsFixerCustomFixers\Fixer\NoLeadingSlashInGlobalNamespaceFixer; +use PhpCsFixerCustomFixers\Fixer\NoNullableBooleanTypeFixer; +use PhpCsFixerCustomFixers\Fixer\NoPhpStormGeneratedCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessDoctrineRepositoryCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer; +use PhpCsFixerCustomFixers\Fixer\PhpdocNoSuperfluousParamFixer; +use PhpCsFixerCustomFixers\Fixer\PhpdocTypesTrimFixer; +use PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer; +use PhpCsFixerCustomFixers\Fixer\SingleSpaceBeforeStatementFixer; +use PhpCsFixerCustomFixers\Fixers; use VisualCraft\PhpCsFixerConfig\RuleSetInterface; final class Php74 implements RuleSetInterface { + #[\Override] public function name(): string { return 'Visual Craft (PHP 7.4)'; } + #[\Override] public function rules(): array { return [ @@ -68,39 +88,37 @@ public function rules(): array 'while', ], ], - \PhpCsFixerCustomFixers\Fixer\CommentSurroundedBySpacesFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\MultilineCommentOpeningClosingAloneFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoDoctrineMigrationsGeneratedCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoDuplicatedImportsFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoLeadingSlashInGlobalNamespaceFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoNullableBooleanTypeFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoPhpStormGeneratedCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessDoctrineRepositoryCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpdocNoSuperfluousParamFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpdocTypesTrimFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\SingleSpaceBeforeStatementFixer::name() => true, + CommentSurroundedBySpacesFixer::name() => true, + MultilineCommentOpeningClosingAloneFixer::name() => true, + NoDoctrineMigrationsGeneratedCommentFixer::name() => true, + NoDuplicatedImportsFixer::name() => true, + NoImportFromGlobalNamespaceFixer::name() => true, + NoLeadingSlashInGlobalNamespaceFixer::name() => true, + NoNullableBooleanTypeFixer::name() => true, + NoPhpStormGeneratedCommentFixer::name() => true, + NoSuperfluousConcatenationFixer::name() => true, + NoUselessCommentFixer::name() => true, + NoUselessDoctrineRepositoryCommentFixer::name() => true, + NoUselessParenthesisFixer::name() => true, + NoUselessStrlenFixer::name() => true, + PhpdocNoSuperfluousParamFixer::name() => true, + PhpdocTypesTrimFixer::name() => true, + SingleSpaceAfterStatementFixer::name() => true, + SingleSpaceBeforeStatementFixer::name() => true, 'PedroTroller/ordered_with_getter_and_setter_first' => true, - 'PedroTroller/line_break_between_method_arguments' => [ - 'max-args' => false, - 'max-length' => 120, - 'automatic-argument-merge' => true, - ], 'PedroTroller/line_break_between_statements' => true, + 'method_chaining_indentation' => false, ]; } + #[\Override] public function getCustomFixers(): iterable { - yield from new \PhpCsFixerCustomFixers\Fixers(); + yield from new Fixers(); yield from new \PedroTroller\CS\Fixer\Fixers(); } + #[\Override] public function getRiskyAllowed(): bool { return true; diff --git a/src/RuleSet/Php80.php b/src/RuleSet/Php80.php index e9c5cf8..6ccdd90 100644 --- a/src/RuleSet/Php80.php +++ b/src/RuleSet/Php80.php @@ -4,15 +4,40 @@ namespace VisualCraft\PhpCsFixerConfig\RuleSet; +use PhpCsFixerCustomFixers\Fixer\CommentSurroundedBySpacesFixer; +use PhpCsFixerCustomFixers\Fixer\MultilineCommentOpeningClosingAloneFixer; +use PhpCsFixerCustomFixers\Fixer\NoDoctrineMigrationsGeneratedCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoDuplicatedImportsFixer; +use PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer; +use PhpCsFixerCustomFixers\Fixer\NoLeadingSlashInGlobalNamespaceFixer; +use PhpCsFixerCustomFixers\Fixer\NoNullableBooleanTypeFixer; +use PhpCsFixerCustomFixers\Fixer\NoPhpStormGeneratedCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessDirnameCallFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessDoctrineRepositoryCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer; +use PhpCsFixerCustomFixers\Fixer\PhpdocNoSuperfluousParamFixer; +use PhpCsFixerCustomFixers\Fixer\PhpdocTypesTrimFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitAssertArgumentsOrderFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitDedicatedAssertFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitNoUselessReturnFixer; +use PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer; +use PhpCsFixerCustomFixers\Fixer\SingleSpaceBeforeStatementFixer; +use PhpCsFixerCustomFixers\Fixer\StringableInterfaceFixer; +use PhpCsFixerCustomFixers\Fixers; use VisualCraft\PhpCsFixerConfig\RuleSetInterface; final class Php80 implements RuleSetInterface { + #[\Override] public function name(): string { return 'Visual Craft (PHP 8.0)'; } + #[\Override] public function rules(): array { return [ @@ -68,44 +93,42 @@ public function rules(): array 'while', ], ], - \PhpCsFixerCustomFixers\Fixer\CommentSurroundedBySpacesFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\MultilineCommentOpeningClosingAloneFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoDoctrineMigrationsGeneratedCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoDuplicatedImportsFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoLeadingSlashInGlobalNamespaceFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoNullableBooleanTypeFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoPhpStormGeneratedCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessDirnameCallFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessDoctrineRepositoryCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitAssertArgumentsOrderFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitDedicatedAssertFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitNoUselessReturnFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpdocNoSuperfluousParamFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpdocTypesTrimFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\SingleSpaceBeforeStatementFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\StringableInterfaceFixer::name() => true, + CommentSurroundedBySpacesFixer::name() => true, + MultilineCommentOpeningClosingAloneFixer::name() => true, + NoDoctrineMigrationsGeneratedCommentFixer::name() => true, + NoDuplicatedImportsFixer::name() => true, + NoImportFromGlobalNamespaceFixer::name() => true, + NoLeadingSlashInGlobalNamespaceFixer::name() => true, + NoNullableBooleanTypeFixer::name() => true, + NoPhpStormGeneratedCommentFixer::name() => true, + NoSuperfluousConcatenationFixer::name() => true, + NoUselessCommentFixer::name() => true, + NoUselessDirnameCallFixer::name() => true, + NoUselessDoctrineRepositoryCommentFixer::name() => true, + NoUselessParenthesisFixer::name() => true, + NoUselessStrlenFixer::name() => true, + PhpUnitAssertArgumentsOrderFixer::name() => true, + PhpUnitDedicatedAssertFixer::name() => true, + PhpUnitNoUselessReturnFixer::name() => true, + PhpdocNoSuperfluousParamFixer::name() => true, + PhpdocTypesTrimFixer::name() => true, + SingleSpaceAfterStatementFixer::name() => true, + SingleSpaceBeforeStatementFixer::name() => true, + StringableInterfaceFixer::name() => true, 'PedroTroller/ordered_with_getter_and_setter_first' => true, - 'PedroTroller/line_break_between_method_arguments' => [ - 'max-args' => false, - 'max-length' => 120, - 'automatic-argument-merge' => true, - ], 'PedroTroller/line_break_between_statements' => true, + 'method_chaining_indentation' => false, ]; } + #[\Override] public function getCustomFixers(): iterable { - yield from new \PhpCsFixerCustomFixers\Fixers(); + yield from new Fixers(); yield from new \PedroTroller\CS\Fixer\Fixers(); } + #[\Override] public function getRiskyAllowed(): bool { return true; diff --git a/src/RuleSet/Php81.php b/src/RuleSet/Php81.php index fde1328..d4d66b3 100644 --- a/src/RuleSet/Php81.php +++ b/src/RuleSet/Php81.php @@ -4,15 +4,40 @@ namespace VisualCraft\PhpCsFixerConfig\RuleSet; +use PhpCsFixerCustomFixers\Fixer\CommentSurroundedBySpacesFixer; +use PhpCsFixerCustomFixers\Fixer\MultilineCommentOpeningClosingAloneFixer; +use PhpCsFixerCustomFixers\Fixer\NoDoctrineMigrationsGeneratedCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoDuplicatedImportsFixer; +use PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer; +use PhpCsFixerCustomFixers\Fixer\NoLeadingSlashInGlobalNamespaceFixer; +use PhpCsFixerCustomFixers\Fixer\NoNullableBooleanTypeFixer; +use PhpCsFixerCustomFixers\Fixer\NoPhpStormGeneratedCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessDirnameCallFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessDoctrineRepositoryCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer; +use PhpCsFixerCustomFixers\Fixer\PhpdocNoSuperfluousParamFixer; +use PhpCsFixerCustomFixers\Fixer\PhpdocTypesTrimFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitAssertArgumentsOrderFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitDedicatedAssertFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitNoUselessReturnFixer; +use PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer; +use PhpCsFixerCustomFixers\Fixer\SingleSpaceBeforeStatementFixer; +use PhpCsFixerCustomFixers\Fixer\StringableInterfaceFixer; +use PhpCsFixerCustomFixers\Fixers; use VisualCraft\PhpCsFixerConfig\RuleSetInterface; final class Php81 implements RuleSetInterface { + #[\Override] public function name(): string { return 'Visual Craft (PHP 8.1)'; } + #[\Override] public function rules(): array { return [ @@ -68,44 +93,42 @@ public function rules(): array 'while', ], ], - \PhpCsFixerCustomFixers\Fixer\CommentSurroundedBySpacesFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\MultilineCommentOpeningClosingAloneFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoDoctrineMigrationsGeneratedCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoDuplicatedImportsFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoLeadingSlashInGlobalNamespaceFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoNullableBooleanTypeFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoPhpStormGeneratedCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessDirnameCallFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessDoctrineRepositoryCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitAssertArgumentsOrderFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitDedicatedAssertFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitNoUselessReturnFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpdocNoSuperfluousParamFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpdocTypesTrimFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\SingleSpaceBeforeStatementFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\StringableInterfaceFixer::name() => true, + CommentSurroundedBySpacesFixer::name() => true, + MultilineCommentOpeningClosingAloneFixer::name() => true, + NoDoctrineMigrationsGeneratedCommentFixer::name() => true, + NoDuplicatedImportsFixer::name() => true, + NoImportFromGlobalNamespaceFixer::name() => true, + NoLeadingSlashInGlobalNamespaceFixer::name() => true, + NoNullableBooleanTypeFixer::name() => true, + NoPhpStormGeneratedCommentFixer::name() => true, + NoSuperfluousConcatenationFixer::name() => true, + NoUselessCommentFixer::name() => true, + NoUselessDirnameCallFixer::name() => true, + NoUselessDoctrineRepositoryCommentFixer::name() => true, + NoUselessParenthesisFixer::name() => true, + NoUselessStrlenFixer::name() => true, + PhpUnitAssertArgumentsOrderFixer::name() => true, + PhpUnitDedicatedAssertFixer::name() => true, + PhpUnitNoUselessReturnFixer::name() => true, + PhpdocNoSuperfluousParamFixer::name() => true, + PhpdocTypesTrimFixer::name() => true, + SingleSpaceAfterStatementFixer::name() => true, + SingleSpaceBeforeStatementFixer::name() => true, + StringableInterfaceFixer::name() => true, 'PedroTroller/ordered_with_getter_and_setter_first' => true, - 'PedroTroller/line_break_between_method_arguments' => [ - 'max-args' => false, - 'max-length' => 120, - 'automatic-argument-merge' => true, - ], 'PedroTroller/line_break_between_statements' => true, + 'method_chaining_indentation' => false, ]; } + #[\Override] public function getCustomFixers(): iterable { - yield from new \PhpCsFixerCustomFixers\Fixers(); + yield from new Fixers(); yield from new \PedroTroller\CS\Fixer\Fixers(); } + #[\Override] public function getRiskyAllowed(): bool { return true; diff --git a/src/RuleSet/Php82.php b/src/RuleSet/Php82.php index a6cbd8b..3106836 100644 --- a/src/RuleSet/Php82.php +++ b/src/RuleSet/Php82.php @@ -4,15 +4,40 @@ namespace VisualCraft\PhpCsFixerConfig\RuleSet; +use PhpCsFixerCustomFixers\Fixer\CommentSurroundedBySpacesFixer; +use PhpCsFixerCustomFixers\Fixer\MultilineCommentOpeningClosingAloneFixer; +use PhpCsFixerCustomFixers\Fixer\NoDoctrineMigrationsGeneratedCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoDuplicatedImportsFixer; +use PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer; +use PhpCsFixerCustomFixers\Fixer\NoLeadingSlashInGlobalNamespaceFixer; +use PhpCsFixerCustomFixers\Fixer\NoNullableBooleanTypeFixer; +use PhpCsFixerCustomFixers\Fixer\NoPhpStormGeneratedCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessDirnameCallFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessDoctrineRepositoryCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer; +use PhpCsFixerCustomFixers\Fixer\PhpdocNoSuperfluousParamFixer; +use PhpCsFixerCustomFixers\Fixer\PhpdocTypesTrimFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitAssertArgumentsOrderFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitDedicatedAssertFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitNoUselessReturnFixer; +use PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer; +use PhpCsFixerCustomFixers\Fixer\SingleSpaceBeforeStatementFixer; +use PhpCsFixerCustomFixers\Fixer\StringableInterfaceFixer; +use PhpCsFixerCustomFixers\Fixers; use VisualCraft\PhpCsFixerConfig\RuleSetInterface; final class Php82 implements RuleSetInterface { + #[\Override] public function name(): string { return 'Visual Craft (PHP 8.2)'; } + #[\Override] public function rules(): array { return [ @@ -68,44 +93,42 @@ public function rules(): array 'while', ], ], - \PhpCsFixerCustomFixers\Fixer\CommentSurroundedBySpacesFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\MultilineCommentOpeningClosingAloneFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoDoctrineMigrationsGeneratedCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoDuplicatedImportsFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoLeadingSlashInGlobalNamespaceFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoNullableBooleanTypeFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoPhpStormGeneratedCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessDirnameCallFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessDoctrineRepositoryCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitAssertArgumentsOrderFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitDedicatedAssertFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitNoUselessReturnFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpdocNoSuperfluousParamFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpdocTypesTrimFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\SingleSpaceBeforeStatementFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\StringableInterfaceFixer::name() => true, + CommentSurroundedBySpacesFixer::name() => true, + MultilineCommentOpeningClosingAloneFixer::name() => true, + NoDoctrineMigrationsGeneratedCommentFixer::name() => true, + NoDuplicatedImportsFixer::name() => true, + NoImportFromGlobalNamespaceFixer::name() => true, + NoLeadingSlashInGlobalNamespaceFixer::name() => true, + NoNullableBooleanTypeFixer::name() => true, + NoPhpStormGeneratedCommentFixer::name() => true, + NoSuperfluousConcatenationFixer::name() => true, + NoUselessCommentFixer::name() => true, + NoUselessDirnameCallFixer::name() => true, + NoUselessDoctrineRepositoryCommentFixer::name() => true, + NoUselessParenthesisFixer::name() => true, + NoUselessStrlenFixer::name() => true, + PhpUnitAssertArgumentsOrderFixer::name() => true, + PhpUnitDedicatedAssertFixer::name() => true, + PhpUnitNoUselessReturnFixer::name() => true, + PhpdocNoSuperfluousParamFixer::name() => true, + PhpdocTypesTrimFixer::name() => true, + SingleSpaceAfterStatementFixer::name() => true, + SingleSpaceBeforeStatementFixer::name() => true, + StringableInterfaceFixer::name() => true, 'PedroTroller/ordered_with_getter_and_setter_first' => true, - 'PedroTroller/line_break_between_method_arguments' => [ - 'max-args' => false, - 'max-length' => 120, - 'automatic-argument-merge' => true, - ], 'PedroTroller/line_break_between_statements' => true, + 'method_chaining_indentation' => false, ]; } + #[\Override] public function getCustomFixers(): iterable { - yield from new \PhpCsFixerCustomFixers\Fixers(); + yield from new Fixers(); yield from new \PedroTroller\CS\Fixer\Fixers(); } + #[\Override] public function getRiskyAllowed(): bool { return true; diff --git a/src/RuleSet/Php83.php b/src/RuleSet/Php83.php index 58a28fa..d5bd904 100644 --- a/src/RuleSet/Php83.php +++ b/src/RuleSet/Php83.php @@ -4,15 +4,40 @@ namespace VisualCraft\PhpCsFixerConfig\RuleSet; +use PhpCsFixerCustomFixers\Fixer\CommentSurroundedBySpacesFixer; +use PhpCsFixerCustomFixers\Fixer\MultilineCommentOpeningClosingAloneFixer; +use PhpCsFixerCustomFixers\Fixer\NoDoctrineMigrationsGeneratedCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoDuplicatedImportsFixer; +use PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer; +use PhpCsFixerCustomFixers\Fixer\NoLeadingSlashInGlobalNamespaceFixer; +use PhpCsFixerCustomFixers\Fixer\NoNullableBooleanTypeFixer; +use PhpCsFixerCustomFixers\Fixer\NoPhpStormGeneratedCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessDirnameCallFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessDoctrineRepositoryCommentFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer; +use PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer; +use PhpCsFixerCustomFixers\Fixer\PhpdocNoSuperfluousParamFixer; +use PhpCsFixerCustomFixers\Fixer\PhpdocTypesTrimFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitAssertArgumentsOrderFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitDedicatedAssertFixer; +use PhpCsFixerCustomFixers\Fixer\PhpUnitNoUselessReturnFixer; +use PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer; +use PhpCsFixerCustomFixers\Fixer\SingleSpaceBeforeStatementFixer; +use PhpCsFixerCustomFixers\Fixer\StringableInterfaceFixer; +use PhpCsFixerCustomFixers\Fixers; use VisualCraft\PhpCsFixerConfig\RuleSetInterface; final class Php83 implements RuleSetInterface { + #[\Override] public function name(): string { return 'Visual Craft (PHP 8.3)'; } + #[\Override] public function rules(): array { return [ @@ -68,44 +93,42 @@ public function rules(): array 'while', ], ], - \PhpCsFixerCustomFixers\Fixer\CommentSurroundedBySpacesFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\MultilineCommentOpeningClosingAloneFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoDoctrineMigrationsGeneratedCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoDuplicatedImportsFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoLeadingSlashInGlobalNamespaceFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoNullableBooleanTypeFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoPhpStormGeneratedCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessDirnameCallFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessDoctrineRepositoryCommentFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitAssertArgumentsOrderFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitDedicatedAssertFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpUnitNoUselessReturnFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpdocNoSuperfluousParamFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\PhpdocTypesTrimFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\SingleSpaceBeforeStatementFixer::name() => true, - \PhpCsFixerCustomFixers\Fixer\StringableInterfaceFixer::name() => true, + CommentSurroundedBySpacesFixer::name() => true, + MultilineCommentOpeningClosingAloneFixer::name() => true, + NoDoctrineMigrationsGeneratedCommentFixer::name() => true, + NoDuplicatedImportsFixer::name() => true, + NoImportFromGlobalNamespaceFixer::name() => true, + NoLeadingSlashInGlobalNamespaceFixer::name() => true, + NoNullableBooleanTypeFixer::name() => true, + NoPhpStormGeneratedCommentFixer::name() => true, + NoSuperfluousConcatenationFixer::name() => true, + NoUselessCommentFixer::name() => true, + NoUselessDirnameCallFixer::name() => true, + NoUselessDoctrineRepositoryCommentFixer::name() => true, + NoUselessParenthesisFixer::name() => true, + NoUselessStrlenFixer::name() => true, + PhpUnitAssertArgumentsOrderFixer::name() => true, + PhpUnitDedicatedAssertFixer::name() => true, + PhpUnitNoUselessReturnFixer::name() => true, + PhpdocNoSuperfluousParamFixer::name() => true, + PhpdocTypesTrimFixer::name() => true, + SingleSpaceAfterStatementFixer::name() => true, + SingleSpaceBeforeStatementFixer::name() => true, + StringableInterfaceFixer::name() => true, 'PedroTroller/ordered_with_getter_and_setter_first' => true, - 'PedroTroller/line_break_between_method_arguments' => [ - 'max-args' => false, - 'max-length' => 120, - 'automatic-argument-merge' => true, - ], 'PedroTroller/line_break_between_statements' => true, + 'method_chaining_indentation' => false, ]; } + #[\Override] public function getCustomFixers(): iterable { - yield from new \PhpCsFixerCustomFixers\Fixers(); + yield from new Fixers(); yield from new \PedroTroller\CS\Fixer\Fixers(); } + #[\Override] public function getRiskyAllowed(): bool { return true; diff --git a/src/RuleSet/Php84.php b/src/RuleSet/Php84.php new file mode 100644 index 0000000..1cee03d --- /dev/null +++ b/src/RuleSet/Php84.php @@ -0,0 +1,137 @@ +|bool> + */ + #[\Override] + public function rules(): array + { + return [ + '@Symfony' => true, + '@Symfony:risky' => true, + '@PHP84Migration' => true, + '@PHP82Migration:risky' => true, + '@PhpCsFixer' => true, + '@PhpCsFixer:risky' => true, + '@PHPUnit100Migration:risky' => true, + 'php_unit_test_class_requires_covers' => false, + 'php_unit_test_case_static_method_calls' => ['call_type' => 'this'], + 'array_syntax' => [ + 'syntax' => 'short', + ], + 'class_attributes_separation' => ['elements' => ['method' => 'one', 'property' => 'one']], + 'concat_space' => ['spacing' => 'one'], + 'phpdoc_align' => false, + 'phpdoc_separation' => false, + 'phpdoc_to_comment' => false, + 'phpdoc_add_missing_param_annotation' => false, + 'phpdoc_types_order' => [ + 'null_adjustment' => 'always_last', + ], + 'increment_style' => false, + 'yoda_style' => ['equal' => false, 'identical' => false, 'less_and_greater' => false], + 'fopen_flags' => false, + 'return_assignment' => false, + 'final_internal_class' => false, + 'blank_line_before_statement' => [ + 'statements' => [ + 'break', + 'case', + 'continue', + 'declare', + 'default', + 'do', + 'exit', + 'for', + 'foreach', + 'goto', + 'if', + 'include', + 'include_once', + 'require', + 'require_once', + 'return', + 'switch', + 'throw', + 'try', + 'while', + ], + ], + CommentSurroundedBySpacesFixer::name() => true, + MultilineCommentOpeningClosingAloneFixer::name() => true, + NoDoctrineMigrationsGeneratedCommentFixer::name() => true, + NoDuplicatedImportsFixer::name() => true, + NoImportFromGlobalNamespaceFixer::name() => true, + NoLeadingSlashInGlobalNamespaceFixer::name() => true, + NoNullableBooleanTypeFixer::name() => true, + NoPhpStormGeneratedCommentFixer::name() => true, + NoSuperfluousConcatenationFixer::name() => true, + NoUselessCommentFixer::name() => true, + NoUselessDirnameCallFixer::name() => true, + NoUselessDoctrineRepositoryCommentFixer::name() => true, + NoUselessParenthesisFixer::name() => true, + NoUselessStrlenFixer::name() => true, + PhpUnitAssertArgumentsOrderFixer::name() => true, + PhpUnitDedicatedAssertFixer::name() => true, + PhpUnitNoUselessReturnFixer::name() => true, + PhpdocNoSuperfluousParamFixer::name() => true, + PhpdocTypesTrimFixer::name() => true, + SingleSpaceAfterStatementFixer::name() => true, + SingleSpaceBeforeStatementFixer::name() => true, + StringableInterfaceFixer::name() => true, + 'PedroTroller/ordered_with_getter_and_setter_first' => true, + 'PedroTroller/line_break_between_statements' => true, + 'method_chaining_indentation' => false, + ]; + } + + #[\Override] + public function getCustomFixers(): iterable + { + yield from new Fixers(); + yield from new \PedroTroller\CS\Fixer\Fixers(); + } + + #[\Override] + public function getRiskyAllowed(): bool + { + return true; + } +} diff --git a/src/RuleSetInterface.php b/src/RuleSetInterface.php index 73319f1..b3e8eaa 100644 --- a/src/RuleSetInterface.php +++ b/src/RuleSetInterface.php @@ -16,7 +16,7 @@ public function name(): string; /** * Returns an array of rules along with their configuration. * - * @psalm-return array + * @psalm-return array|bool> */ public function rules(): array;