Skip to content

Commit

Permalink
[DX] Add PhpUpgradeImplementsMinPhpVersionInterfaceRule (#910)
Browse files Browse the repository at this point in the history
Co-authored-by: GitHub Action <action@github.com>
  • Loading branch information
samsonasik and actions-user committed Sep 24, 2021
1 parent ef779c9 commit 49314dc
Show file tree
Hide file tree
Showing 73 changed files with 944 additions and 157 deletions.
4 changes: 4 additions & 0 deletions phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ services:
class: Rector\PHPStanRules\Rules\PhpUpgradeDowngradeRegisteredInSetRule
tags: [phpstan.rules.rule]

-
class: Rector\PHPStanRules\Rules\PhpUpgradeImplementsMinPhpVersionInterfaceRule
tags: [phpstan.rules.rule]

parameters:
level: max

Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

9 changes: 8 additions & 1 deletion rules/Php52/Rector/Property/VarToPublicPropertyRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,21 @@
use PhpParser\Node;
use PhpParser\Node\Stmt\Property;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

/**
* @see \Rector\Tests\Php52\Rector\Property\VarToPublicPropertyRector\VarToPublicPropertyRectorTest
*/
final class VarToPublicPropertyRector extends AbstractRector
final class VarToPublicPropertyRector extends AbstractRector implements MinPhpVersionInterface
{
public function provideMinPhpVersion(): int
{
return PhpVersionFeature::PROPERTY_MODIFIER;
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Change property modifier from `var` to `public`', [
Expand Down
9 changes: 8 additions & 1 deletion rules/Php52/Rector/Switch_/ContinueToBreakInSwitchRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,22 @@
use PHPStan\Type\Constant\ConstantIntegerType;
use PHPStan\Type\ConstantType;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

/**
* @changelog https://stackoverflow.com/a/12349889/1348344
* @see \Rector\Tests\Php52\Rector\Switch_\ContinueToBreakInSwitchRector\ContinueToBreakInSwitchRectorTest
*/
final class ContinueToBreakInSwitchRector extends AbstractRector
final class ContinueToBreakInSwitchRector extends AbstractRector implements MinPhpVersionInterface
{
public function provideMinPhpVersion(): int
{
return PhpVersionFeature::CONTINUE_TO_BREAK;
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Use break instead of continue in switch statements', [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,22 @@
use PhpParser\Node\Expr\AssignRef;
use PhpParser\Node\Expr\New_;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

/**
* @see https://3v4l.org/UJN6H
* @see \Rector\Tests\Php53\Rector\AssignRef\ClearReturnNewByReferenceRector\ClearReturnNewByReferenceRectorTest
*/
final class ClearReturnNewByReferenceRector extends AbstractRector
final class ClearReturnNewByReferenceRector extends AbstractRector implements MinPhpVersionInterface
{
public function provideMinPhpVersion(): int
{
return PhpVersionFeature::NO_REFERENCE_IN_NEW;
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@
use PhpParser\Node;
use PhpParser\Node\Expr\Variable;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

/**
* @see \Rector\Tests\Php53\Rector\Variable\ReplaceHttpServerVarsByServerRector\ReplaceHttpServerVarsByServerRectorTest
* @changelog https://blog.tigertech.net/posts/php-5-3-http-server-vars/
*/
final class ReplaceHttpServerVarsByServerRector extends AbstractRector
final class ReplaceHttpServerVarsByServerRector extends AbstractRector implements MinPhpVersionInterface
{
/**
* @var array<string, string>
Expand All @@ -29,6 +31,11 @@ final class ReplaceHttpServerVarsByServerRector extends AbstractRector
'HTTP_COOKIE_VARS' => '_COOKIE',
];

public function provideMinPhpVersion(): int
{
return PhpVersionFeature::SERVER_VAR;
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(
Expand Down
9 changes: 8 additions & 1 deletion rules/Php54/Rector/Break_/RemoveZeroBreakContinueRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
use PHPStan\Type\Constant\ConstantIntegerType;
use PHPStan\Type\ConstantType;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

Expand All @@ -20,8 +22,13 @@
*
* @see \Rector\Tests\Php54\Rector\Break_\RemoveZeroBreakContinueRector\RemoveZeroBreakContinueRectorTest
*/
final class RemoveZeroBreakContinueRector extends AbstractRector
final class RemoveZeroBreakContinueRector extends AbstractRector implements MinPhpVersionInterface
{
public function provideMinPhpVersion(): int
{
return PhpVersionFeature::NO_ZERO_BREAK;
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Remove 0 from break and continue', [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,21 @@
use PhpParser\Node;
use PhpParser\Node\Expr\FuncCall;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

/**
* @see \Rector\Tests\Php54\Rector\FuncCall\RemoveReferenceFromCallRector\RemoveReferenceFromCallRectorTest
*/
final class RemoveReferenceFromCallRector extends AbstractRector
final class RemoveReferenceFromCallRector extends AbstractRector implements MinPhpVersionInterface
{
public function provideMinPhpVersion(): int
{
return PhpVersionFeature::NO_REFERENCE_IN_ARG;
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Remove & from function and method calls', [
Expand Down
9 changes: 8 additions & 1 deletion rules/Php55/Rector/FuncCall/PregReplaceEModifierRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Name;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\Php55\RegexMatcher;
use Rector\Php72\NodeFactory\AnonymousFunctionFactory;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

Expand All @@ -20,14 +22,19 @@
*
* @see \Rector\Tests\Php55\Rector\FuncCall\PregReplaceEModifierRector\PregReplaceEModifierRectorTest
*/
final class PregReplaceEModifierRector extends AbstractRector
final class PregReplaceEModifierRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private AnonymousFunctionFactory $anonymousFunctionFactory,
private RegexMatcher $regexMatcher
) {
}

public function provideMinPhpVersion(): int
{
return PhpVersionFeature::PREG_REPLACE_CALLBACK_E_MODIFIER;
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
use PhpParser\Node\Stmt\Function_;
use Rector\Core\NodeAnalyzer\InlineHTMLAnalyzer;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\Php56\NodeAnalyzer\UndefinedVariableResolver;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

Expand All @@ -26,7 +28,7 @@
*
* @see \Rector\Tests\Php56\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector\AddDefaultValueForUndefinedVariableRectorTest
*/
final class AddDefaultValueForUndefinedVariableRector extends AbstractRector
final class AddDefaultValueForUndefinedVariableRector extends AbstractRector implements MinPhpVersionInterface
{
/**
* @var string
Expand All @@ -39,6 +41,11 @@ public function __construct(
) {
}

public function provideMinPhpVersion(): int
{
return PhpVersionFeature::REQUIRE_DEFAULT_VALUE;
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Adds default value for undefined variable', [
Expand Down
9 changes: 8 additions & 1 deletion rules/Php70/Rector/Assign/ListSplitStringRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
use PhpParser\Node\Expr\List_;
use PHPStan\Type\StringType;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

Expand All @@ -18,7 +20,7 @@
* @changelog https://stackoverflow.com/a/47965344/1348344
* @see \Rector\Tests\Php70\Rector\Assign\ListSplitStringRector\ListSplitStringRectorTest
*/
final class ListSplitStringRector extends AbstractRector
final class ListSplitStringRector extends AbstractRector implements MinPhpVersionInterface
{
public function getRuleDefinition(): RuleDefinition
{
Expand All @@ -28,6 +30,11 @@ public function getRuleDefinition(): RuleDefinition
);
}

public function provideMinPhpVersion(): int
{
return PhpVersionFeature::NO_LIST_SPLIT_STRING;
}

/**
* @return array<class-string<Node>>
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
use PhpParser\Node\Stmt\Break_;
use PhpParser\Node\Stmt\Return_;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\NodeNestingScope\ContextAnalyzer;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;

Expand All @@ -18,13 +20,18 @@
* @see https://3v4l.org/Qtelt
* @see \Rector\Tests\Php70\Rector\Break_\BreakNotInLoopOrSwitchToReturnRector\BreakNotInLoopOrSwitchToReturnRectorTest
*/
final class BreakNotInLoopOrSwitchToReturnRector extends AbstractRector
final class BreakNotInLoopOrSwitchToReturnRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private ContextAnalyzer $contextAnalyzer
) {
}

public function provideMinPhpVersion(): int
{
return PhpVersionFeature::NO_BREAK_OUTSIDE_LOOP;
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(
Expand Down
Loading

0 comments on commit 49314dc

Please sign in to comment.