Skip to content

Commit 2ae3640

Browse files
committed
Updated Rector to commit abaf47c828502d09a968590292aafe71d34e3e17
rectorphp/rector-src@abaf47c feat: add coding style levels (#6695)
1 parent c08fd20 commit 2ae3640

File tree

6 files changed

+88
-30
lines changed

6 files changed

+88
-30
lines changed

config/set/coding-style.php

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,13 @@
33
declare (strict_types=1);
44
namespace RectorPrefix202501;
55

6-
use Rector\CodingStyle\Rector\Assign\SplitDoubleAssignRector;
7-
use Rector\CodingStyle\Rector\Catch_\CatchExceptionNameMatchingTypeRector;
8-
use Rector\CodingStyle\Rector\ClassConst\RemoveFinalFromConstRector;
9-
use Rector\CodingStyle\Rector\ClassConst\SplitGroupedClassConstantsRector;
10-
use Rector\CodingStyle\Rector\ClassMethod\FuncGetArgsToVariadicParamRector;
11-
use Rector\CodingStyle\Rector\ClassMethod\MakeInheritedMethodVisibilitySameAsParentRector;
12-
use Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector;
13-
use Rector\CodingStyle\Rector\Encapsed\EncapsedStringsToSprintfRector;
14-
use Rector\CodingStyle\Rector\Encapsed\WrapEncapsedVariableInCurlyBracesRector;
15-
use Rector\CodingStyle\Rector\FuncCall\CallUserFuncArrayToVariadicRector;
16-
use Rector\CodingStyle\Rector\FuncCall\CallUserFuncToMethodCallRector;
17-
use Rector\CodingStyle\Rector\FuncCall\ConsistentImplodeRector;
18-
use Rector\CodingStyle\Rector\FuncCall\CountArrayToEmptyArrayComparisonRector;
19-
use Rector\CodingStyle\Rector\FuncCall\StrictArraySearchRector;
20-
use Rector\CodingStyle\Rector\FuncCall\VersionCompareFuncCallToConstantRector;
21-
use Rector\CodingStyle\Rector\If_\NullableCompareToNullRector;
22-
use Rector\CodingStyle\Rector\Property\SplitGroupedPropertiesRector;
23-
use Rector\CodingStyle\Rector\Stmt\NewlineAfterStatementRector;
24-
use Rector\CodingStyle\Rector\Stmt\RemoveUselessAliasInUseStatementRector;
25-
use Rector\CodingStyle\Rector\String_\SymplifyQuoteEscapeRector;
26-
use Rector\CodingStyle\Rector\String_\UseClassKeywordForClassNameResolutionRector;
27-
use Rector\CodingStyle\Rector\Ternary\TernaryConditionVariableAssignmentRector;
28-
use Rector\CodingStyle\Rector\Use_\SeparateMultiUseImportsRector;
6+
use Rector\Config\Level\CodingStyleLevel;
297
use Rector\Config\RectorConfig;
30-
use Rector\Php55\Rector\String_\StringClassNameToClassConstantRector;
31-
use Rector\Transform\Rector\FuncCall\FuncCallToConstFetchRector;
32-
use Rector\Visibility\Rector\ClassMethod\ExplicitPublicClassMethodRector;
338
return static function (RectorConfig $rectorConfig) : void {
34-
$rectorConfig->ruleWithConfiguration(FuncCallToConstFetchRector::class, ['php_sapi_name' => 'PHP_SAPI', 'pi' => 'M_PI']);
35-
$rectorConfig->rules([SeparateMultiUseImportsRector::class, NewlineAfterStatementRector::class, RemoveFinalFromConstRector::class, NullableCompareToNullRector::class, ConsistentImplodeRector::class, TernaryConditionVariableAssignmentRector::class, SymplifyQuoteEscapeRector::class, StringClassNameToClassConstantRector::class, CatchExceptionNameMatchingTypeRector::class, SplitDoubleAssignRector::class, EncapsedStringsToSprintfRector::class, WrapEncapsedVariableInCurlyBracesRector::class, NewlineBeforeNewAssignSetRector::class, MakeInheritedMethodVisibilitySameAsParentRector::class, CallUserFuncArrayToVariadicRector::class, VersionCompareFuncCallToConstantRector::class, CountArrayToEmptyArrayComparisonRector::class, CallUserFuncToMethodCallRector::class, FuncGetArgsToVariadicParamRector::class, StrictArraySearchRector::class, UseClassKeywordForClassNameResolutionRector::class, SplitGroupedPropertiesRector::class, SplitGroupedClassConstantsRector::class, ExplicitPublicClassMethodRector::class, RemoveUselessAliasInUseStatementRector::class]);
9+
foreach (CodingStyleLevel::RULES_WITH_CONFIGURATION as $rectorClass => $configuration) {
10+
$rectorConfig->ruleWithConfiguration($rectorClass, $configuration);
11+
}
12+
// the rule order matters, as its used in withCodingStyleLevel() method
13+
// place the safest rules first, follow by more complex ones
14+
$rectorConfig->rules(CodingStyleLevel::RULES);
3615
};

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = 'c1d6c547285bfe633d125cbb0c2c03f2c09ee39c';
22+
public const PACKAGE_VERSION = 'abaf47c828502d09a968590292aafe71d34e3e17';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2025-01-26 00:32:11';
27+
public const RELEASE_DATE = '2025-01-27 09:32:19';
2828
/**
2929
* @var int
3030
*/

src/Config/Level/CodingStyleLevel.php

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
declare (strict_types=1);
4+
namespace Rector\Config\Level;
5+
6+
use Rector\CodingStyle\Rector\Assign\SplitDoubleAssignRector;
7+
use Rector\CodingStyle\Rector\Catch_\CatchExceptionNameMatchingTypeRector;
8+
use Rector\CodingStyle\Rector\ClassConst\RemoveFinalFromConstRector;
9+
use Rector\CodingStyle\Rector\ClassConst\SplitGroupedClassConstantsRector;
10+
use Rector\CodingStyle\Rector\ClassMethod\FuncGetArgsToVariadicParamRector;
11+
use Rector\CodingStyle\Rector\ClassMethod\MakeInheritedMethodVisibilitySameAsParentRector;
12+
use Rector\CodingStyle\Rector\ClassMethod\NewlineBeforeNewAssignSetRector;
13+
use Rector\CodingStyle\Rector\Encapsed\EncapsedStringsToSprintfRector;
14+
use Rector\CodingStyle\Rector\Encapsed\WrapEncapsedVariableInCurlyBracesRector;
15+
use Rector\CodingStyle\Rector\FuncCall\CallUserFuncArrayToVariadicRector;
16+
use Rector\CodingStyle\Rector\FuncCall\CallUserFuncToMethodCallRector;
17+
use Rector\CodingStyle\Rector\FuncCall\ConsistentImplodeRector;
18+
use Rector\CodingStyle\Rector\FuncCall\CountArrayToEmptyArrayComparisonRector;
19+
use Rector\CodingStyle\Rector\FuncCall\StrictArraySearchRector;
20+
use Rector\CodingStyle\Rector\FuncCall\VersionCompareFuncCallToConstantRector;
21+
use Rector\CodingStyle\Rector\If_\NullableCompareToNullRector;
22+
use Rector\CodingStyle\Rector\Property\SplitGroupedPropertiesRector;
23+
use Rector\CodingStyle\Rector\Stmt\NewlineAfterStatementRector;
24+
use Rector\CodingStyle\Rector\Stmt\RemoveUselessAliasInUseStatementRector;
25+
use Rector\CodingStyle\Rector\String_\SymplifyQuoteEscapeRector;
26+
use Rector\CodingStyle\Rector\String_\UseClassKeywordForClassNameResolutionRector;
27+
use Rector\CodingStyle\Rector\Ternary\TernaryConditionVariableAssignmentRector;
28+
use Rector\CodingStyle\Rector\Use_\SeparateMultiUseImportsRector;
29+
use Rector\Contract\Rector\RectorInterface;
30+
use Rector\Php55\Rector\String_\StringClassNameToClassConstantRector;
31+
use Rector\Transform\Rector\FuncCall\FuncCallToConstFetchRector;
32+
use Rector\Visibility\Rector\ClassMethod\ExplicitPublicClassMethodRector;
33+
/**
34+
* Key 0 = level 0
35+
* Key 50 = level 50
36+
*
37+
* Start at 0, go slowly higher, one level per PR, and improve your rule coverage
38+
*
39+
* From the safest rules to more changing ones.
40+
*
41+
* @experimental This list can change in time, based on community feedback,
42+
* what rules are safer than other. The safest rules will be always in the top.
43+
*/
44+
final class CodingStyleLevel
45+
{
46+
/**
47+
* The rule order matters, as its used in withCodingStyleLevel() method
48+
* Place the safest rules first, followed by more complex ones
49+
*
50+
* @var array<class-string<RectorInterface>>
51+
*/
52+
public const RULES = [SeparateMultiUseImportsRector::class, NewlineAfterStatementRector::class, RemoveFinalFromConstRector::class, NullableCompareToNullRector::class, ConsistentImplodeRector::class, TernaryConditionVariableAssignmentRector::class, SymplifyQuoteEscapeRector::class, StringClassNameToClassConstantRector::class, CatchExceptionNameMatchingTypeRector::class, SplitDoubleAssignRector::class, EncapsedStringsToSprintfRector::class, WrapEncapsedVariableInCurlyBracesRector::class, NewlineBeforeNewAssignSetRector::class, MakeInheritedMethodVisibilitySameAsParentRector::class, CallUserFuncArrayToVariadicRector::class, VersionCompareFuncCallToConstantRector::class, CountArrayToEmptyArrayComparisonRector::class, CallUserFuncToMethodCallRector::class, FuncGetArgsToVariadicParamRector::class, StrictArraySearchRector::class, UseClassKeywordForClassNameResolutionRector::class, SplitGroupedPropertiesRector::class, SplitGroupedClassConstantsRector::class, ExplicitPublicClassMethodRector::class, RemoveUselessAliasInUseStatementRector::class];
53+
/**
54+
* @var array<class-string<RectorInterface>, mixed[]>
55+
*/
56+
public const RULES_WITH_CONFIGURATION = [FuncCallToConstFetchRector::class => ['php_sapi_name' => 'PHP_SAPI', 'pi' => 'M_PI']];
57+
}

src/Configuration/RectorConfigBuilder.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface;
99
use Rector\Composer\InstalledPackageResolver;
1010
use Rector\Config\Level\CodeQualityLevel;
11+
use Rector\Config\Level\CodingStyleLevel;
1112
use Rector\Config\Level\DeadCodeLevel;
1213
use Rector\Config\Level\TypeDeclarationLevel;
1314
use Rector\Config\RectorConfig;
@@ -105,6 +106,7 @@ final class RectorConfigBuilder
105106
private ?bool $isTypeCoverageLevelUsed = null;
106107
private ?bool $isDeadCodeLevelUsed = null;
107108
private ?bool $isCodeQualityLevelUsed = null;
109+
private ?bool $isCodingStyleLevelUsed = null;
108110
private ?bool $isFluentNewLine = null;
109111
/**
110112
* @var RegisteredService[]
@@ -153,6 +155,9 @@ public function __invoke(RectorConfig $rectorConfig) : void
153155
if (\in_array(SetList::CODE_QUALITY, $uniqueSets, \true) && $this->isCodeQualityLevelUsed === \true) {
154156
throw new InvalidConfigurationException(\sprintf('Your config already enables code quality set.%sRemove "->withCodeQualityLevel()" as it only duplicates it, or remove code quality set.', \PHP_EOL));
155157
}
158+
if (\in_array(SetList::CODING_STYLE, $uniqueSets, \true) && $this->isCodingStyleLevelUsed === \true) {
159+
throw new InvalidConfigurationException(\sprintf('Your config already enables coding style set.%sRemove "->withCodingStyleLevel()" as it only duplicates it, or remove coding style set.', \PHP_EOL));
160+
}
156161
if ($uniqueSets !== []) {
157162
$rectorConfig->sets($uniqueSets);
158163
}
@@ -683,6 +688,21 @@ public function withCodeQualityLevel(int $level) : self
683688
}
684689
return $this;
685690
}
691+
/**
692+
* @experimental Raise your coding style from the safest rules
693+
* to more affecting ones, one level at a time
694+
*/
695+
public function withCodingStyleLevel(int $level) : self
696+
{
697+
Assert::natural($level);
698+
$this->isCodingStyleLevelUsed = \true;
699+
$levelRules = LevelRulesResolver::resolve($level, CodingStyleLevel::RULES, __METHOD__);
700+
$this->rules = \array_merge($this->rules, $levelRules);
701+
foreach (CodingStyleLevel::RULES_WITH_CONFIGURATION as $rectorClass => $configuration) {
702+
$this->rulesWithConfigurations[$rectorClass][] = $configuration;
703+
}
704+
return $this;
705+
}
686706
public function withFluentCallNewLine(bool $isFluentNewLine = \true) : self
687707
{
688708
$this->isFluentNewLine = $isFluentNewLine;

vendor/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1239,6 +1239,7 @@
12391239
'Rector\\Composer\\InstalledPackageResolver' => $baseDir . '/src/Composer/InstalledPackageResolver.php',
12401240
'Rector\\Composer\\ValueObject\\InstalledPackage' => $baseDir . '/src/Composer/ValueObject/InstalledPackage.php',
12411241
'Rector\\Config\\Level\\CodeQualityLevel' => $baseDir . '/src/Config/Level/CodeQualityLevel.php',
1242+
'Rector\\Config\\Level\\CodingStyleLevel' => $baseDir . '/src/Config/Level/CodingStyleLevel.php',
12421243
'Rector\\Config\\Level\\DeadCodeLevel' => $baseDir . '/src/Config/Level/DeadCodeLevel.php',
12431244
'Rector\\Config\\Level\\TypeDeclarationLevel' => $baseDir . '/src/Config/Level/TypeDeclarationLevel.php',
12441245
'Rector\\Config\\RectorConfig' => $baseDir . '/src/Config/RectorConfig.php',

vendor/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1458,6 +1458,7 @@ class ComposerStaticInit3327108c61eea19d09115fa0e353e8ec
14581458
'Rector\\Composer\\InstalledPackageResolver' => __DIR__ . '/../..' . '/src/Composer/InstalledPackageResolver.php',
14591459
'Rector\\Composer\\ValueObject\\InstalledPackage' => __DIR__ . '/../..' . '/src/Composer/ValueObject/InstalledPackage.php',
14601460
'Rector\\Config\\Level\\CodeQualityLevel' => __DIR__ . '/../..' . '/src/Config/Level/CodeQualityLevel.php',
1461+
'Rector\\Config\\Level\\CodingStyleLevel' => __DIR__ . '/../..' . '/src/Config/Level/CodingStyleLevel.php',
14611462
'Rector\\Config\\Level\\DeadCodeLevel' => __DIR__ . '/../..' . '/src/Config/Level/DeadCodeLevel.php',
14621463
'Rector\\Config\\Level\\TypeDeclarationLevel' => __DIR__ . '/../..' . '/src/Config/Level/TypeDeclarationLevel.php',
14631464
'Rector\\Config\\RectorConfig' => __DIR__ . '/../..' . '/src/Config/RectorConfig.php',

0 commit comments

Comments
 (0)