Skip to content

Commit

Permalink
[CodeQuality] Add empty array support to InlineArrayReturnAssignRector (
Browse files Browse the repository at this point in the history
  • Loading branch information
TomasVotruba committed May 31, 2022
1 parent dc6bd96 commit 01fc91e
Show file tree
Hide file tree
Showing 12 changed files with 286 additions and 163 deletions.
111 changes: 55 additions & 56 deletions config/set/code-quality.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
declare(strict_types=1);

use Rector\CodeQuality\Rector\Array_\ArrayThisCallToThisMethodCallRector;

use Rector\CodeQuality\Rector\Array_\CallableThisArrayToAnonymousFunctionRector;
use Rector\CodeQuality\Rector\Assign\CombinedAssignRector;
use Rector\CodeQuality\Rector\Assign\SplitListAssignToSeparateLineRector;
Expand Down Expand Up @@ -82,61 +81,6 @@
use Rector\Renaming\Rector\FuncCall\RenameFunctionRector;

return static function (RectorConfig $rectorConfig): void {
$rectorConfig->rule(CombinedAssignRector::class);
$rectorConfig->rule(SimplifyEmptyArrayCheckRector::class);
$rectorConfig->rule(ReplaceMultipleBooleanNotRector::class);
$rectorConfig->rule(ForeachToInArrayRector::class);
$rectorConfig->rule(SimplifyForeachToCoalescingRector::class);
$rectorConfig->rule(SimplifyFuncGetArgsCountRector::class);
$rectorConfig->rule(SimplifyInArrayValuesRector::class);
$rectorConfig->rule(SimplifyStrposLowerRector::class);
$rectorConfig->rule(GetClassToInstanceOfRector::class);
$rectorConfig->rule(SimplifyArraySearchRector::class);
$rectorConfig->rule(SimplifyConditionsRector::class);
$rectorConfig->rule(SimplifyIfNotNullReturnRector::class);
$rectorConfig->rule(SimplifyIfReturnBoolRector::class);
$rectorConfig->rule(SimplifyUselessVariableRector::class);
$rectorConfig->rule(UnnecessaryTernaryExpressionRector::class);
$rectorConfig->rule(RemoveExtraParametersRector::class);
$rectorConfig->rule(SimplifyDeMorganBinaryRector::class);
$rectorConfig->rule(SimplifyTautologyTernaryRector::class);
$rectorConfig->rule(SimplifyForeachToArrayFilterRector::class);
$rectorConfig->rule(SingleInArrayToCompareRector::class);
$rectorConfig->rule(SimplifyIfElseToTernaryRector::class);
$rectorConfig->rule(JoinStringConcatRector::class);
$rectorConfig->rule(ConsecutiveNullCompareReturnsToNullCoalesceQueueRector::class);
$rectorConfig->rule(SimplifyIfIssetToNullCoalescingRector::class);
$rectorConfig->rule(ExplicitBoolCompareRector::class);
$rectorConfig->rule(CombineIfRector::class);
$rectorConfig->rule(UseIdenticalOverEqualWithSameTypeRector::class);
$rectorConfig->rule(SimplifyBoolIdenticalTrueRector::class);
$rectorConfig->rule(SimplifyRegexPatternRector::class);
$rectorConfig->rule(BooleanNotIdenticalToNotIdenticalRector::class);
$rectorConfig->rule(CallableThisArrayToAnonymousFunctionRector::class);
$rectorConfig->rule(AndAssignsToSeparateLinesRector::class);
$rectorConfig->rule(ForToForeachRector::class);
$rectorConfig->rule(CompactToVariablesRector::class);
$rectorConfig->rule(CompleteDynamicPropertiesRector::class);
$rectorConfig->rule(IsAWithStringWithThirdArgumentRector::class);
$rectorConfig->rule(StrlenZeroToIdenticalEmptyStringRector::class);
$rectorConfig->rule(RemoveAlwaysTrueConditionSetInConstructorRector::class);
$rectorConfig->rule(ThrowWithPreviousExceptionRector::class);
$rectorConfig->rule(RemoveSoleValueSprintfRector::class);
$rectorConfig->rule(ShortenElseIfRector::class);
$rectorConfig->rule(AddPregQuoteDelimiterRector::class);
$rectorConfig->rule(ArrayMergeOfNonArraysToSimpleArrayRector::class);
$rectorConfig->rule(IntvalToTypeCastRector::class);
$rectorConfig->rule(ArrayKeyExistsTernaryThenValueToCoalescingRector::class);
$rectorConfig->rule(AbsolutizeRequireAndIncludePathRector::class);
$rectorConfig->rule(ChangeArrayPushToArrayAssignRector::class);
$rectorConfig->rule(ForRepeatedCountToOwnVariableRector::class);
$rectorConfig->rule(ForeachItemsAssignToEmptyArrayToAssignRector::class);
$rectorConfig->rule(InlineIfToExplicitIfRector::class);
$rectorConfig->rule(ArrayKeysAndInArrayToArrayKeyExistsRector::class);
$rectorConfig->rule(SplitListAssignToSeparateLineRector::class);
$rectorConfig->rule(UnusedForeachValueToArrayKeysRector::class);
$rectorConfig->rule(ArrayThisCallToThisMethodCallRector::class);
$rectorConfig->rule(CommonNotEqualRector::class);
$rectorConfig
->ruleWithConfiguration(RenameFunctionRector::class, [
'split' => 'explode',
Expand Down Expand Up @@ -165,6 +109,61 @@
]);

$rectorConfig->rules([
CombinedAssignRector::class,
SimplifyEmptyArrayCheckRector::class,
ReplaceMultipleBooleanNotRector::class,
ForeachToInArrayRector::class,
SimplifyForeachToCoalescingRector::class,
SimplifyFuncGetArgsCountRector::class,
SimplifyInArrayValuesRector::class,
SimplifyStrposLowerRector::class,
GetClassToInstanceOfRector::class,
SimplifyArraySearchRector::class,
SimplifyConditionsRector::class,
SimplifyIfNotNullReturnRector::class,
SimplifyIfReturnBoolRector::class,
SimplifyUselessVariableRector::class,
UnnecessaryTernaryExpressionRector::class,
RemoveExtraParametersRector::class,
SimplifyDeMorganBinaryRector::class,
SimplifyTautologyTernaryRector::class,
SimplifyForeachToArrayFilterRector::class,
SingleInArrayToCompareRector::class,
SimplifyIfElseToTernaryRector::class,
JoinStringConcatRector::class,
ConsecutiveNullCompareReturnsToNullCoalesceQueueRector::class,
SimplifyIfIssetToNullCoalescingRector::class,
ExplicitBoolCompareRector::class,
CombineIfRector::class,
UseIdenticalOverEqualWithSameTypeRector::class,
SimplifyBoolIdenticalTrueRector::class,
SimplifyRegexPatternRector::class,
BooleanNotIdenticalToNotIdenticalRector::class,
CallableThisArrayToAnonymousFunctionRector::class,
AndAssignsToSeparateLinesRector::class,
ForToForeachRector::class,
CompactToVariablesRector::class,
CompleteDynamicPropertiesRector::class,
IsAWithStringWithThirdArgumentRector::class,
StrlenZeroToIdenticalEmptyStringRector::class,
RemoveAlwaysTrueConditionSetInConstructorRector::class,
ThrowWithPreviousExceptionRector::class,
RemoveSoleValueSprintfRector::class,
ShortenElseIfRector::class,
AddPregQuoteDelimiterRector::class,
ArrayMergeOfNonArraysToSimpleArrayRector::class,
IntvalToTypeCastRector::class,
ArrayKeyExistsTernaryThenValueToCoalescingRector::class,
AbsolutizeRequireAndIncludePathRector::class,
ChangeArrayPushToArrayAssignRector::class,
ForRepeatedCountToOwnVariableRector::class,
ForeachItemsAssignToEmptyArrayToAssignRector::class,
InlineIfToExplicitIfRector::class,
ArrayKeysAndInArrayToArrayKeyExistsRector::class,
SplitListAssignToSeparateLineRector::class,
UnusedForeachValueToArrayKeysRector::class,
ArrayThisCallToThisMethodCallRector::class,
CommonNotEqualRector::class,
SetTypeToCastRector::class,
LogicalToBooleanRector::class,
VarToPublicPropertyRector::class,
Expand Down
58 changes: 29 additions & 29 deletions config/set/coding-style.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
declare(strict_types=1);

use Rector\CodingStyle\Rector\Assign\PHPStormVarAnnotationRector;

use Rector\CodingStyle\Rector\Assign\SplitDoubleAssignRector;
use Rector\CodingStyle\Rector\Catch_\CatchExceptionNameMatchingTypeRector;
use Rector\CodingStyle\Rector\Class_\AddArrayDefaultToArrayPropertyRector;
Expand Down Expand Up @@ -34,38 +33,39 @@
use Rector\Transform\Rector\FuncCall\FuncCallToConstFetchRector;

return static function (RectorConfig $rectorConfig): void {
$rectorConfig->rule(PHPStormVarAnnotationRector::class);
$rectorConfig->rule(NullableCompareToNullRector::class);
$rectorConfig->rule(BinarySwitchToIfElseRector::class);
$rectorConfig->rule(ConsistentImplodeRector::class);
$rectorConfig->rule(TernaryConditionVariableAssignmentRector::class);
$rectorConfig->rule(SymplifyQuoteEscapeRector::class);
$rectorConfig->rule(SplitGroupedConstantsAndPropertiesRector::class);
$rectorConfig->rule(StringClassNameToClassConstantRector::class);
$rectorConfig->rule(ConsistentPregDelimiterRector::class);
$rectorConfig->rule(CatchExceptionNameMatchingTypeRector::class);
$rectorConfig->rule(UseIncrementAssignRector::class);
$rectorConfig->rule(SplitDoubleAssignRector::class);
$rectorConfig->rule(VarConstantCommentRector::class);
$rectorConfig->rule(EncapsedStringsToSprintfRector::class);
$rectorConfig->rule(WrapEncapsedVariableInCurlyBracesRector::class);
$rectorConfig->rule(NewlineBeforeNewAssignSetRector::class);
$rectorConfig->rule(AddArrayDefaultToArrayPropertyRector::class);
$rectorConfig->rule(AddFalseDefaultToBoolPropertyRector::class);
$rectorConfig->rule(MakeInheritedMethodVisibilitySameAsParentRector::class);
$rectorConfig->rule(CallUserFuncArrayToVariadicRector::class);
$rectorConfig->rule(VersionCompareFuncCallToConstantRector::class);

$rectorConfig
->ruleWithConfiguration(FuncCallToConstFetchRector::class, [
'php_sapi_name' => 'PHP_SAPI',
'pi' => 'M_PI',
]);

$rectorConfig->rule(SeparateMultiUseImportsRector::class);
$rectorConfig->rule(RemoveDoubleUnderscoreInMethodNameRector::class);
$rectorConfig->rule(PostIncDecToPreIncDecRector::class);
$rectorConfig->rule(UnSpreadOperatorRector::class);
$rectorConfig->rule(NewlineAfterStatementRector::class);
$rectorConfig->rule(RemoveFinalFromConstRector::class);
$rectorConfig->rules([
SeparateMultiUseImportsRector::class,
RemoveDoubleUnderscoreInMethodNameRector::class,
PostIncDecToPreIncDecRector::class,
UnSpreadOperatorRector::class,
NewlineAfterStatementRector::class,
RemoveFinalFromConstRector::class,
PHPStormVarAnnotationRector::class,
NullableCompareToNullRector::class,
BinarySwitchToIfElseRector::class,
ConsistentImplodeRector::class,
TernaryConditionVariableAssignmentRector::class,
SymplifyQuoteEscapeRector::class,
SplitGroupedConstantsAndPropertiesRector::class,
StringClassNameToClassConstantRector::class,
ConsistentPregDelimiterRector::class,
CatchExceptionNameMatchingTypeRector::class,
UseIncrementAssignRector::class,
SplitDoubleAssignRector::class,
VarConstantCommentRector::class,
EncapsedStringsToSprintfRector::class,
WrapEncapsedVariableInCurlyBracesRector::class,
NewlineBeforeNewAssignSetRector::class,
AddArrayDefaultToArrayPropertyRector::class,
AddFalseDefaultToBoolPropertyRector::class,
MakeInheritedMethodVisibilitySameAsParentRector::class,
CallUserFuncArrayToVariadicRector::class,
VersionCompareFuncCallToConstantRector::class,
]);
};
96 changes: 48 additions & 48 deletions config/set/dead-code.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
declare(strict_types=1);

use Rector\CodeQuality\Rector\FunctionLike\SimplifyUselessVariableRector;

use Rector\Config\RectorConfig;
use Rector\DeadCode\Rector\Array_\RemoveDuplicatedArrayKeyRector;
use Rector\DeadCode\Rector\Assign\RemoveDoubleAssignRector;
Expand Down Expand Up @@ -51,51 +50,52 @@
use Rector\PHPUnit\Rector\ClassMethod\RemoveEmptyTestMethodRector;

return static function (RectorConfig $rectorConfig): void {
$rectorConfig->rule(UnwrapFutureCompatibleIfFunctionExistsRector::class);
$rectorConfig->rule(UnwrapFutureCompatibleIfPhpVersionRector::class);
$rectorConfig->rule(RecastingRemovalRector::class);
$rectorConfig->rule(RemoveDeadStmtRector::class);
$rectorConfig->rule(RemoveDuplicatedArrayKeyRector::class);
$rectorConfig->rule(RemoveUnusedForeachKeyRector::class);
$rectorConfig->rule(RemoveParentCallWithoutParentRector::class);
$rectorConfig->rule(RemoveEmptyClassMethodRector::class);
$rectorConfig->rule(RemoveDoubleAssignRector::class);
$rectorConfig->rule(SimplifyMirrorAssignRector::class);
$rectorConfig->rule(RemoveOverriddenValuesRector::class);
$rectorConfig->rule(RemoveUnusedPrivatePropertyRector::class);
$rectorConfig->rule(RemoveUnusedPrivateClassConstantRector::class);
$rectorConfig->rule(RemoveUnusedPrivateMethodRector::class);
$rectorConfig->rule(RemoveDeadConstructorRector::class);
$rectorConfig->rule(RemoveDeadReturnRector::class);
$rectorConfig->rule(RemoveDeadContinueRector::class);
$rectorConfig->rule(RemoveDeadIfForeachForRector::class);
$rectorConfig->rule(RemoveAndTrueRector::class);
$rectorConfig->rule(RemoveConcatAutocastRector::class);
$rectorConfig->rule(SimplifyUselessVariableRector::class);
$rectorConfig->rule(RemoveDelegatingParentCallRector::class);
$rectorConfig->rule(RemoveDuplicatedInstanceOfRector::class);
$rectorConfig->rule(RemoveDuplicatedCaseInSwitchRector::class);
$rectorConfig->rule(RemoveNullPropertyInitializationRector::class);
$rectorConfig->rule(RemoveUnreachableStatementRector::class);
$rectorConfig->rule(SimplifyIfElseWithSameContentRector::class);
$rectorConfig->rule(TernaryToBooleanOrFalseToBooleanAndRector::class);
$rectorConfig->rule(RemoveEmptyTestMethodRector::class);
$rectorConfig->rule(RemoveDeadTryCatchRector::class);
$rectorConfig->rule(RemoveUnusedVariableAssignRector::class);
$rectorConfig->rule(RemoveDuplicatedIfReturnRector::class);
$rectorConfig->rule(RemoveUnusedNonEmptyArrayBeforeForeachRector::class);
$rectorConfig->rule(RemoveEmptyMethodCallRector::class);
$rectorConfig->rule(RemoveDeadConditionAboveReturnRector::class);
$rectorConfig->rule(RemoveUnusedConstructorParamRector::class);
$rectorConfig->rule(RemoveDeadInstanceOfRector::class);
$rectorConfig->rule(RemoveDeadLoopRector::class);
$rectorConfig->rule(RemoveUnusedPrivateMethodParameterRector::class);
$rectorConfig->rule(RemoveUnusedParamInRequiredAutowireRector::class);

// docblock
$rectorConfig->rule(RemoveUselessParamTagRector::class);
$rectorConfig->rule(RemoveUselessReturnTagRector::class);
$rectorConfig->rule(RemoveNonExistingVarAnnotationRector::class);
$rectorConfig->rule(RemoveUnusedPromotedPropertyRector::class);
$rectorConfig->rule(RemoveLastReturnRector::class);
$rectorConfig->rules([
UnwrapFutureCompatibleIfFunctionExistsRector::class,
UnwrapFutureCompatibleIfPhpVersionRector::class,
RecastingRemovalRector::class,
RemoveDeadStmtRector::class,
RemoveDuplicatedArrayKeyRector::class,
RemoveUnusedForeachKeyRector::class,
RemoveParentCallWithoutParentRector::class,
RemoveEmptyClassMethodRector::class,
RemoveDoubleAssignRector::class,
SimplifyMirrorAssignRector::class,
RemoveOverriddenValuesRector::class,
RemoveUnusedPrivatePropertyRector::class,
RemoveUnusedPrivateClassConstantRector::class,
RemoveUnusedPrivateMethodRector::class,
RemoveDeadConstructorRector::class,
RemoveDeadReturnRector::class,
RemoveDeadContinueRector::class,
RemoveDeadIfForeachForRector::class,
RemoveAndTrueRector::class,
RemoveConcatAutocastRector::class,
SimplifyUselessVariableRector::class,
RemoveDelegatingParentCallRector::class,
RemoveDuplicatedInstanceOfRector::class,
RemoveDuplicatedCaseInSwitchRector::class,
RemoveNullPropertyInitializationRector::class,
RemoveUnreachableStatementRector::class,
SimplifyIfElseWithSameContentRector::class,
TernaryToBooleanOrFalseToBooleanAndRector::class,
RemoveEmptyTestMethodRector::class,
RemoveDeadTryCatchRector::class,
RemoveUnusedVariableAssignRector::class,
RemoveDuplicatedIfReturnRector::class,
RemoveUnusedNonEmptyArrayBeforeForeachRector::class,
RemoveEmptyMethodCallRector::class,
RemoveDeadConditionAboveReturnRector::class,
RemoveUnusedConstructorParamRector::class,
RemoveDeadInstanceOfRector::class,
RemoveDeadLoopRector::class,
RemoveUnusedPrivateMethodParameterRector::class,
RemoveUnusedParamInRequiredAutowireRector::class,
// docblock
RemoveUselessParamTagRector::class,
RemoveUselessReturnTagRector::class,
RemoveNonExistingVarAnnotationRector::class,
RemoveUnusedPromotedPropertyRector::class,
RemoveLastReturnRector::class,
]);
};
1 change: 1 addition & 0 deletions phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,7 @@ parameters:
- rules/Php70/EregToPcreTransformer.php
- rules/CodeQuality/Rector/PropertyFetch/ExplicitMethodCallOverMagicGetSetRector.php
- src/Kernel/RectorKernel.php
- rules/Php72/Rector/Assign/ReplaceEachAssignmentWithKeyCurrentRector.php

- '#Method Rector\\Core\\Application\\ApplicationFileProcessor\:\:runParallel\(\) should return array\{system_errors\: array<Rector\\Core\\ValueObject\\Error\\SystemError\>, file_diffs\: array<Rector\\Core\\ValueObject\\Reporting\\FileDiff\>\} but returns array#'

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

namespace Rector\Tests\CodeQuality\Rector\ClassMethod\InlineArrayReturnAssignRector\Fixture;

final class EmptyArray
{
public function run()
{
$person = [];

$person[] = 'Timmy';
$person[] = 'Back';

return $person;
}
}

?>
-----
<?php

namespace Rector\Tests\CodeQuality\Rector\ClassMethod\InlineArrayReturnAssignRector\Fixture;

final class EmptyArray
{
public function run()
{
return ['Timmy', 'Back'];
}
}

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php

namespace Rector\Tests\CodeQuality\Rector\ClassMethod\InlineArrayReturnAssignRector\Fixture;

final class KeepComments
{
public function getPerson()
{
$person = [];
// name
$person['name'] = 'Timmy';
// surname
$person['surname'] = 'Back';

return $person;
}
}

?>
-----
<?php

namespace Rector\Tests\CodeQuality\Rector\ClassMethod\InlineArrayReturnAssignRector\Fixture;

final class KeepComments
{
public function getPerson()
{
return [
// name
'name' => 'Timmy',
// surname
'surname' => 'Back',
];
}
}

?>
Loading

0 comments on commit 01fc91e

Please sign in to comment.