-
-
Notifications
You must be signed in to change notification settings - Fork 699
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updated Rector to commit 487f162d53fe42f6d76557ca6cd49d93ceb911e8
rectorphp/rector-src@487f162 [experimental] Add withTypeCoverageLevel() method to streamline Rector integration to new projects (#5553)
- Loading branch information
1 parent
ad50de3
commit 7810dc2
Showing
8 changed files
with
258 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
<?php | ||
|
||
declare (strict_types=1); | ||
namespace Rector\Configuration\Levels; | ||
|
||
use Rector\CodeQuality\Rector\FunctionLike\SimplifyUselessVariableRector; | ||
use Rector\Contract\Rector\RectorInterface; | ||
use Rector\DeadCode\Rector\Array_\RemoveDuplicatedArrayKeyRector; | ||
use Rector\DeadCode\Rector\Assign\RemoveDoubleAssignRector; | ||
use Rector\DeadCode\Rector\Assign\RemoveUnusedVariableAssignRector; | ||
use Rector\DeadCode\Rector\BooleanAnd\RemoveAndTrueRector; | ||
use Rector\DeadCode\Rector\Cast\RecastingRemovalRector; | ||
use Rector\DeadCode\Rector\ClassConst\RemoveUnusedPrivateClassConstantRector; | ||
use Rector\DeadCode\Rector\ClassMethod\RemoveEmptyClassMethodRector; | ||
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedConstructorParamRector; | ||
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPrivateMethodParameterRector; | ||
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPrivateMethodRector; | ||
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPromotedPropertyRector; | ||
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessParamTagRector; | ||
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessReturnExprInConstructRector; | ||
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector; | ||
use Rector\DeadCode\Rector\Concat\RemoveConcatAutocastRector; | ||
use Rector\DeadCode\Rector\ConstFetch\RemovePhpVersionIdCheckRector; | ||
use Rector\DeadCode\Rector\Expression\RemoveDeadStmtRector; | ||
use Rector\DeadCode\Rector\Expression\SimplifyMirrorAssignRector; | ||
use Rector\DeadCode\Rector\For_\RemoveDeadContinueRector; | ||
use Rector\DeadCode\Rector\For_\RemoveDeadIfForeachForRector; | ||
use Rector\DeadCode\Rector\For_\RemoveDeadLoopRector; | ||
use Rector\DeadCode\Rector\Foreach_\RemoveUnusedForeachKeyRector; | ||
use Rector\DeadCode\Rector\FunctionLike\RemoveDeadReturnRector; | ||
use Rector\DeadCode\Rector\If_\RemoveAlwaysTrueIfConditionRector; | ||
use Rector\DeadCode\Rector\If_\RemoveDeadInstanceOfRector; | ||
use Rector\DeadCode\Rector\If_\RemoveTypedPropertyDeadInstanceOfRector; | ||
use Rector\DeadCode\Rector\If_\RemoveUnusedNonEmptyArrayBeforeForeachRector; | ||
use Rector\DeadCode\Rector\If_\SimplifyIfElseWithSameContentRector; | ||
use Rector\DeadCode\Rector\If_\UnwrapFutureCompatibleIfPhpVersionRector; | ||
use Rector\DeadCode\Rector\Node\RemoveNonExistingVarAnnotationRector; | ||
use Rector\DeadCode\Rector\Plus\RemoveDeadZeroAndOneOperationRector; | ||
use Rector\DeadCode\Rector\Property\RemoveUnusedPrivatePropertyRector; | ||
use Rector\DeadCode\Rector\Property\RemoveUselessVarTagRector; | ||
use Rector\DeadCode\Rector\PropertyProperty\RemoveNullPropertyInitializationRector; | ||
use Rector\DeadCode\Rector\Return_\RemoveDeadConditionAboveReturnRector; | ||
use Rector\DeadCode\Rector\StaticCall\RemoveParentCallWithoutParentRector; | ||
use Rector\DeadCode\Rector\Stmt\RemoveUnreachableStatementRector; | ||
use Rector\DeadCode\Rector\Switch_\RemoveDuplicatedCaseInSwitchRector; | ||
use Rector\DeadCode\Rector\Ternary\TernaryToBooleanOrFalseToBooleanAndRector; | ||
use Rector\DeadCode\Rector\TryCatch\RemoveDeadTryCatchRector; | ||
/** | ||
* Key 0 = level 0 | ||
* Key 50 = level 50 | ||
* | ||
* Start at 0, go slowly higher, one level per PR, and improve your rule coverage | ||
* | ||
* From the safest rules to more changing ones. | ||
* | ||
* @experimental Since 0.19.7 This list can change in time, based on community feedback, | ||
* what rules are safer than other. The safest rules will be always in the top. | ||
*/ | ||
final class DeadCodeLevel | ||
{ | ||
/** | ||
* Mind that return type declarations are the safest to add, | ||
* followed by property, then params | ||
* | ||
* @var array<class-string<RectorInterface>> | ||
*/ | ||
public const RULE_LIST = [ | ||
// easy picks | ||
RemoveUnusedForeachKeyRector::class, | ||
RemoveDuplicatedArrayKeyRector::class, | ||
RecastingRemovalRector::class, | ||
RemoveAndTrueRector::class, | ||
SimplifyMirrorAssignRector::class, | ||
RemoveDeadContinueRector::class, | ||
RemoveUnusedNonEmptyArrayBeforeForeachRector::class, | ||
RemoveNullPropertyInitializationRector::class, | ||
RemoveUselessReturnExprInConstructRector::class, | ||
RemoveTypedPropertyDeadInstanceOfRector::class, | ||
TernaryToBooleanOrFalseToBooleanAndRector::class, | ||
RemoveDoubleAssignRector::class, | ||
RemoveConcatAutocastRector::class, | ||
SimplifyIfElseWithSameContentRector::class, | ||
SimplifyUselessVariableRector::class, | ||
RemoveDeadZeroAndOneOperationRector::class, | ||
// docblock | ||
RemoveUselessParamTagRector::class, | ||
RemoveUselessReturnTagRector::class, | ||
RemoveNonExistingVarAnnotationRector::class, | ||
RemoveUselessVarTagRector::class, | ||
RemovePhpVersionIdCheckRector::class, | ||
RemoveAlwaysTrueIfConditionRector::class, | ||
RemoveUnusedPrivateClassConstantRector::class, | ||
RemoveUnusedPrivatePropertyRector::class, | ||
RemoveDuplicatedCaseInSwitchRector::class, | ||
RemoveDeadInstanceOfRector::class, | ||
RemoveDeadTryCatchRector::class, | ||
RemoveDeadIfForeachForRector::class, | ||
RemoveDeadStmtRector::class, | ||
UnwrapFutureCompatibleIfPhpVersionRector::class, | ||
RemoveParentCallWithoutParentRector::class, | ||
RemoveDeadConditionAboveReturnRector::class, | ||
RemoveDeadLoopRector::class, | ||
// removing methods could be risky if there is some magic loading them | ||
RemoveUnusedPromotedPropertyRector::class, | ||
RemoveUnusedPrivateMethodParameterRector::class, | ||
RemoveUnusedPrivateMethodRector::class, | ||
RemoveUnreachableStatementRector::class, | ||
RemoveUnusedVariableAssignRector::class, | ||
// this could break framework magic autowiring in some cases | ||
RemoveUnusedConstructorParamRector::class, | ||
RemoveEmptyClassMethodRector::class, | ||
RemoveDeadReturnRector::class, | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<?php | ||
|
||
declare (strict_types=1); | ||
namespace Rector\Configuration\Levels; | ||
|
||
use Rector\Contract\Rector\RectorInterface; | ||
use RectorPrefix202402\Webmozart\Assert\Assert; | ||
final class LevelRulesResolver | ||
{ | ||
/** | ||
* @param array<class-string<RectorInterface>> $availableRules | ||
* @return array<class-string<RectorInterface>> | ||
*/ | ||
public static function resolve(int $level, array $availableRules, string $methodName) : array | ||
{ | ||
$rulesCount = \count($availableRules); | ||
Assert::range($level, 0, $rulesCount - 1, 'Level %s is not available "' . $methodName . '" method. Pick one between %2$s (lowest) and %3$s (highest).'); | ||
$levelRules = []; | ||
for ($i = 0; $i <= $level; ++$i) { | ||
$levelRules[] = $availableRules[$i]; | ||
} | ||
return $levelRules; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
<?php | ||
|
||
declare (strict_types=1); | ||
namespace Rector\Configuration\Levels; | ||
|
||
use Rector\TypeDeclaration\Rector\ArrowFunction\AddArrowFunctionReturnTypeRector; | ||
use Rector\TypeDeclaration\Rector\Class_\MergeDateTimePropertyTypeDeclarationRector; | ||
use Rector\TypeDeclaration\Rector\Class_\PropertyTypeFromStrictSetterGetterRector; | ||
use Rector\TypeDeclaration\Rector\Class_\ReturnTypeFromStrictTernaryRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\AddMethodCallBasedStrictParamTypeRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\AddParamTypeBasedOnPHPUnitDataProviderRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\AddParamTypeFromPropertyTypeRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\AddVoidReturnTypeWhereNoReturnRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\BoolReturnTypeFromStrictScalarReturnsRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\NumericReturnTypeFromStrictScalarReturnsRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ParamTypeByParentCallTypeRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromReturnDirectArrayRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromReturnNewRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictBoolReturnExprRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictConstantReturnRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictNativeCallRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictNewArrayRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictParamRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictScalarReturnExprRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnTypeFromStrictTypedCallRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnUnionTypeRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\StrictArrayParamDimFetchRector; | ||
use Rector\TypeDeclaration\Rector\ClassMethod\StrictStringParamConcatRector; | ||
use Rector\TypeDeclaration\Rector\Empty_\EmptyOnNullableObjectToInstanceOfRector; | ||
use Rector\TypeDeclaration\Rector\FunctionLike\AddParamTypeSplFixedArrayRector; | ||
use Rector\TypeDeclaration\Rector\FunctionLike\AddReturnTypeDeclarationFromYieldsRector; | ||
use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromStrictConstructorRector; | ||
use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromStrictSetUpRector; | ||
/** | ||
* Key 0 = level 0 | ||
* Key 50 = level 50 | ||
* | ||
* Start at 0, go slowly higher, one level per PR, and improve your type coverage | ||
* | ||
* From the safest rules to more changing ones. | ||
* @experimental Since 0.19.7 This list can change in time, based on community feedback, | ||
* what rules are safer than other. The safest rules will be always in the top. | ||
*/ | ||
final class TypeCoverageLevel | ||
{ | ||
/** | ||
* Mind that return type declarations are the safest to add, | ||
* followed by property, then params | ||
* | ||
* @var array<class-string> | ||
*/ | ||
public const RULE_LIST = [ | ||
// php 7.0 | ||
AddVoidReturnTypeWhereNoReturnRector::class, | ||
// php 7.4 | ||
AddArrowFunctionReturnTypeRector::class, | ||
ReturnTypeFromStrictNewArrayRector::class, | ||
ReturnTypeFromStrictConstantReturnRector::class, | ||
NumericReturnTypeFromStrictScalarReturnsRector::class, | ||
ReturnTypeFromStrictScalarReturnExprRector::class, | ||
ReturnTypeFromStrictBoolReturnExprRector::class, | ||
ReturnTypeFromStrictTernaryRector::class, | ||
EmptyOnNullableObjectToInstanceOfRector::class, | ||
// php 7.4 | ||
TypedPropertyFromStrictConstructorRector::class, | ||
ReturnTypeFromReturnDirectArrayRector::class, | ||
AddParamTypeSplFixedArrayRector::class, | ||
AddReturnTypeDeclarationFromYieldsRector::class, | ||
AddParamTypeBasedOnPHPUnitDataProviderRector::class, | ||
// php 7.4 | ||
TypedPropertyFromStrictSetUpRector::class, | ||
ReturnTypeFromReturnNewRector::class, | ||
BoolReturnTypeFromStrictScalarReturnsRector::class, | ||
ReturnTypeFromStrictNativeCallRector::class, | ||
ReturnTypeFromStrictTypedCallRector::class, | ||
// param | ||
AddMethodCallBasedStrictParamTypeRector::class, | ||
ParamTypeByParentCallTypeRector::class, | ||
ReturnUnionTypeRector::class, | ||
// more risky rules | ||
ReturnTypeFromStrictParamRector::class, | ||
AddParamTypeFromPropertyTypeRector::class, | ||
MergeDateTimePropertyTypeDeclarationRector::class, | ||
PropertyTypeFromStrictSetterGetterRector::class, | ||
StrictArrayParamDimFetchRector::class, | ||
StrictStringParamConcatRector::class, | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters