Skip to content

Commit 3cb145e

Browse files
committed
feat: added rules for 4.5
1 parent 9020216 commit 3cb145e

File tree

8 files changed

+120
-14
lines changed

8 files changed

+120
-14
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ See available [Codeigniter4 rules](/docs/rector_rules_overview.md)
88

99
## Requirement
1010

11-
This package initiated, CodeIgniter for `4.5` already prepare rector with minimum PHP 8.1. And we follow minimum PHP 8.1 for the future.
11+
Minimum PHP 8.1
1212

1313
## Install
1414

config/sets/codeigniter45.php

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use PHPDevsr\Rector\Codeigniter4\Utils\PassStrictParameterToFunctionParameterRector;
6+
use PHPDevsr\Rector\Codeigniter4\Utils\RemoveErrorSuppressInTryCatchStmtsRector;
7+
use PHPDevsr\Rector\Codeigniter4\Utils\UnderscoreToCamelCaseVariableNameRector;
8+
use Rector\CodeQuality\Rector\BooleanAnd\SimplifyEmptyArrayCheckRector;
9+
use Rector\CodeQuality\Rector\Class_\CompleteDynamicPropertiesRector;
10+
use Rector\CodeQuality\Rector\Empty_\SimplifyEmptyCheckOnEmptyArrayRector;
11+
use Rector\CodeQuality\Rector\Expression\InlineIfToExplicitIfRector;
12+
use Rector\CodeQuality\Rector\Foreach_\UnusedForeachValueToArrayKeysRector;
13+
use Rector\CodeQuality\Rector\FuncCall\ChangeArrayPushToArrayAssignRector;
14+
use Rector\CodeQuality\Rector\FuncCall\SimplifyRegexPatternRector;
15+
use Rector\CodeQuality\Rector\FuncCall\SimplifyStrposLowerRector;
16+
use Rector\CodeQuality\Rector\FuncCall\SingleInArrayToCompareRector;
17+
use Rector\CodeQuality\Rector\FunctionLike\SimplifyUselessVariableRector;
18+
use Rector\CodeQuality\Rector\If_\CombineIfRector;
19+
use Rector\CodeQuality\Rector\If_\ShortenElseIfRector;
20+
use Rector\CodeQuality\Rector\If_\SimplifyIfElseToTernaryRector;
21+
use Rector\CodeQuality\Rector\If_\SimplifyIfReturnBoolRector;
22+
use Rector\CodeQuality\Rector\Ternary\TernaryEmptyArrayArrayDimFetchToCoalesceRector;
23+
use Rector\CodeQuality\Rector\Ternary\UnnecessaryTernaryExpressionRector;
24+
use Rector\CodingStyle\Rector\ClassMethod\FuncGetArgsToVariadicParamRector;
25+
use Rector\CodingStyle\Rector\ClassMethod\MakeInheritedMethodVisibilitySameAsParentRector;
26+
use Rector\CodingStyle\Rector\FuncCall\CountArrayToEmptyArrayComparisonRector;
27+
use Rector\CodingStyle\Rector\FuncCall\VersionCompareFuncCallToConstantRector;
28+
use Rector\Config\RectorConfig;
29+
use Rector\EarlyReturn\Rector\Foreach_\ChangeNestedForeachIfsToEarlyContinueRector;
30+
use Rector\EarlyReturn\Rector\If_\ChangeIfElseValueAssignToEarlyReturnRector;
31+
use Rector\EarlyReturn\Rector\If_\RemoveAlwaysElseRector;
32+
use Rector\EarlyReturn\Rector\Return_\PreparedValueToEarlyReturnRector;
33+
use Rector\Php55\Rector\String_\StringClassNameToClassConstantRector;
34+
use Rector\PHPUnit\Set\PHPUnitSetList;
35+
use Rector\Privatization\Rector\Property\PrivatizeFinalClassPropertyRector;
36+
use Rector\Set\ValueObject\LevelSetList;
37+
use Rector\Set\ValueObject\SetList;
38+
use Rector\Strict\Rector\Empty_\DisallowedEmptyRuleFixerRector;
39+
use Rector\Strict\Rector\If_\BooleanInIfConditionRuleFixerRector;
40+
use Rector\TypeDeclaration\Rector\Empty_\EmptyOnNullableObjectToInstanceOfRector;
41+
use Rector\TypeDeclaration\Rector\StmtsAwareInterface\DeclareStrictTypesRector;
42+
43+
// see: https://laravel.com/docs/5.0/upgrade
44+
return static function (RectorConfig $rectorConfig): void {
45+
$rectorConfig->import(__DIR__ . '/../config.php');
46+
47+
$rectorConfig->sets([
48+
SetList::DEAD_CODE,
49+
LevelSetList::UP_TO_PHP_81,
50+
PHPUnitSetList::PHPUNIT_CODE_QUALITY,
51+
PHPUnitSetList::PHPUNIT_100,
52+
]);
53+
54+
$rectorConfig->rules([
55+
DeclareStrictTypesRector::class,
56+
UnderscoreToCamelCaseVariableNameRector::class,
57+
SimplifyUselessVariableRector::class,
58+
RemoveAlwaysElseRector::class,
59+
PassStrictParameterToFunctionParameterRector::class,
60+
CountArrayToEmptyArrayComparisonRector::class,
61+
ChangeNestedForeachIfsToEarlyContinueRector::class,
62+
ChangeIfElseValueAssignToEarlyReturnRector::class,
63+
SimplifyStrposLowerRector::class,
64+
CombineIfRector::class,
65+
SimplifyIfReturnBoolRector::class,
66+
InlineIfToExplicitIfRector::class,
67+
PreparedValueToEarlyReturnRector::class,
68+
ShortenElseIfRector::class,
69+
SimplifyIfElseToTernaryRector::class,
70+
UnusedForeachValueToArrayKeysRector::class,
71+
ChangeArrayPushToArrayAssignRector::class,
72+
UnnecessaryTernaryExpressionRector::class,
73+
RemoveErrorSuppressInTryCatchStmtsRector::class,
74+
SimplifyRegexPatternRector::class,
75+
FuncGetArgsToVariadicParamRector::class,
76+
MakeInheritedMethodVisibilitySameAsParentRector::class,
77+
SimplifyEmptyArrayCheckRector::class,
78+
SimplifyEmptyCheckOnEmptyArrayRector::class,
79+
TernaryEmptyArrayArrayDimFetchToCoalesceRector::class,
80+
EmptyOnNullableObjectToInstanceOfRector::class,
81+
DisallowedEmptyRuleFixerRector::class,
82+
PrivatizeFinalClassPropertyRector::class,
83+
CompleteDynamicPropertiesRector::class,
84+
BooleanInIfConditionRuleFixerRector::class,
85+
SingleInArrayToCompareRector::class,
86+
VersionCompareFuncCallToConstantRector::class,
87+
]);
88+
89+
$rectorConfig
90+
->ruleWithConfiguration(StringClassNameToClassConstantRector::class, [
91+
// keep '\\' prefix string on string '\Foo\Bar'
92+
StringClassNameToClassConstantRector::SHOULD_KEEP_PRE_SLASH => true,
93+
]);
94+
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Rector\Config\RectorConfig;
6+
use PHPDevsr\Rector\Codeigniter4\Set\CodeigniterSetList;
7+
8+
return static function (RectorConfig $rectorConfig): void {
9+
$rectorConfig->sets([CodeigniterSetList::CODEIGNITER_45]);
10+
};

rector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
return RectorConfig::configure()
1111
->withImportNames(removeUnusedImports:true)
1212
->withSets([
13-
CodeigniterSetList::CODEIGNITER_44,
13+
CodeigniterSetList::CODEIGNITER_45,
1414
])
1515
->withPaths([
1616
__DIR__ . '/src',

src/Set/CodeigniterLevelSetList.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,9 @@ final class CodeigniterLevelSetList
1010
* @var string
1111
*/
1212
public const UP_TO_CODEIGNITER_44 = __DIR__ . '/../../config/sets/level/up-to-codeigniter-44.php';
13+
14+
/**
15+
* @var string
16+
*/
17+
public const UP_TO_CODEIGNITER_45 = __DIR__ . '/../../config/sets/level/up-to-codeigniter-45.php';
1318
}

src/Set/CodeigniterSetList.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,9 @@ final class CodeigniterSetList
1010
* @var string
1111
*/
1212
public const CODEIGNITER_44 = __DIR__ . '/../../config/sets/codeigniter44.php';
13+
14+
/**
15+
* @var string
16+
*/
17+
public const CODEIGNITER_45 = __DIR__ . '/../../config/sets/codeigniter45.php';
1318
}

src/Utils/UnderscoreToCamelCaseVariableNameRector.php

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,10 @@ final class UnderscoreToCamelCaseVariableNameRector extends AbstractRector
3737
* @see https://regex101.com/r/OtFn8I/1
3838
*/
3939
private const PARAM_NAME_REGEX = '#(?<paramPrefix>@param\s.*\s+\$)(?<paramName>%s)#ms';
40-
41-
private ReservedKeywordAnalyzer $reservedKeywordAnalyzer;
42-
private PhpDocInfoFactory $phpDocInfoFactory;
4340
private bool $hasChanged = false;
4441

45-
public function __construct(
46-
ReservedKeywordAnalyzer $reservedKeywordAnalyzer,
47-
PhpDocInfoFactory $phpDocInfoFactory
48-
) {
49-
$this->reservedKeywordAnalyzer = $reservedKeywordAnalyzer;
50-
$this->phpDocInfoFactory = $phpDocInfoFactory;
42+
public function __construct(private readonly ReservedKeywordAnalyzer $reservedKeywordAnalyzer, private readonly PhpDocInfoFactory $phpDocInfoFactory)
43+
{
5144
}
5245

5346
public function getRuleDefinition(): RuleDefinition

tests/Utils/UnderscoreToCamelCaseVariableNameRector/UnderscoreToCamelCaseVariableNameRectorTest.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace PHPDevsr\Rector\Codeigniter4\Tests\Utils\UnderscoreToCamelCaseVariableNameRector;
66

7+
use PHPUnit\Framework\Attributes\Test;
78
use Iterator;
89
use PHPUnit\Framework\Attributes\DataProvider;
910
use Rector\Testing\PHPUnit\AbstractRectorTestCase;
@@ -15,10 +16,8 @@ public static function provideData(): Iterator
1516
return self::yieldFilesFromDirectory(__DIR__ . '/Fixture');
1617
}
1718

18-
/**
19-
* @test
20-
*/
2119
#[DataProvider('provideData')]
20+
#[Test]
2221
public function test(string $filePath): void
2322
{
2423
$this->doTestFile($filePath);

0 commit comments

Comments
 (0)