Skip to content

Commit e47da85

Browse files
authored
Sync with core Rector and fix rules & docs (#373)
1 parent 9a68b2a commit e47da85

File tree

8 files changed

+70
-35
lines changed

8 files changed

+70
-35
lines changed

composer.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@
4343
"rector-dry-run": "vendor/bin/rector process --dry-run --ansi",
4444
"rector": "vendor/bin/rector process --ansi",
4545
"docs": "vendor/bin/rule-doc-generator generate src --output-file docs/rector_rules_overview.md --ansi",
46+
"qa": [
47+
"@rector",
48+
"@fix",
49+
"@phpstan",
50+
"@docs",
51+
"@test"
52+
],
4653
"make:rule": "php commands/make-rule.php"
4754
},
4855
"minimum-stability": "dev",

docs/rector_rules_overview.md

Lines changed: 50 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 80 Rules Overview
1+
# 83 Rules Overview
22

33
## AbortIfRector
44

@@ -59,28 +59,6 @@ Adds the `@extends` annotation to Factories.
5959

6060
<br>
6161

62-
## AddHasFactoryToModelsRector
63-
64-
Adds the `HasFactory` trait to Models.
65-
66-
:wrench: **configure it!**
67-
68-
- class: [`RectorLaravel\Rector\Class_\AddHasFactoryToModelsRector`](../src/Rector/Class_/AddHasFactoryToModelsRector.php)
69-
70-
```diff
71-
namespace App\Models;
72-
73-
use Illuminate\Database\Eloquent\Factories\Factory;
74-
use Illuminate\Database\Eloquent\Model;
75-
76-
class User extends Model
77-
{
78-
+ use \Illuminate\Database\Eloquent\Factories\HasFactory;
79-
}
80-
```
81-
82-
<br>
83-
8462
## AddGenericReturnTypeToRelationsRector
8563

8664
Add generic return type to relations in child of `Illuminate\Database\Eloquent\Model`
@@ -143,6 +121,25 @@ Add new `$guard` argument to Illuminate\Auth\Events\Login
143121

144122
<br>
145123

124+
## AddHasFactoryToModelsRector
125+
126+
Adds the HasFactory trait to Models.
127+
128+
:wrench: **configure it!**
129+
130+
- class: [`RectorLaravel\Rector\Class_\AddHasFactoryToModelsRector`](../src/Rector/Class_/AddHasFactoryToModelsRector.php)
131+
132+
```diff
133+
use Illuminate\Database\Eloquent\Model;
134+
135+
class User extends Model
136+
{
137+
+ use \Illuminate\Database\Eloquent\Factories\HasFactory;
138+
}
139+
```
140+
141+
<br>
142+
146143
## AddMockConsoleOutputFalseToConsoleTestsRector
147144

148145
Add "$this->mockConsoleOutput = false"; to console tests that work with output content
@@ -502,6 +499,36 @@ Refactor `whereDate()` queries to include both date and time comparisons with Ca
502499

503500
<br>
504501

502+
## ContainerBindConcreteWithClosureOnlyRector
503+
504+
Drop the specified abstract class from the bind method and replace it with a closure that returns the abstract class.
505+
506+
- class: [`RectorLaravel\Rector\MethodCall\ContainerBindConcreteWithClosureOnlyRector`](../src/Rector/MethodCall/ContainerBindConcreteWithClosureOnlyRector.php)
507+
508+
```diff
509+
-$this->app->bind(SomeClass::class, function (): SomeClass {
510+
+$this->app->bind(function (): SomeClass {
511+
return new SomeClass();
512+
});
513+
```
514+
515+
<br>
516+
517+
## ConvertEnumerableToArrayToAllRector
518+
519+
Convert `toArray()` to `all()` when the collection does not contain any Arrayable objects.
520+
521+
- class: [`RectorLaravel\Rector\MethodCall\ConvertEnumerableToArrayToAllRector`](../src/Rector/MethodCall/ConvertEnumerableToArrayToAllRector.php)
522+
523+
```diff
524+
use Illuminate\Support\Collection;
525+
526+
-new Collection([0, 1, -1])->toArray();
527+
+new Collection([0, 1, -1])->all();
528+
```
529+
530+
<br>
531+
505532
## DatabaseExpressionCastsToMethodCallRector
506533

507534
Convert DB Expression string casts to `getValue()` method calls.

src/NodeAnalyzer/LaravelServiceAnalyzer.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ public function getFacadeOrigin(StaticCall $staticCall): ?ObjectType
5353
if (! $reflectionMethod->isStatic() || $reflectionMethod->getNumberOfParameters() > 0) {
5454
return null;
5555
}
56-
$reflectionMethod->setAccessible(true);
5756
$origin = $reflectionMethod->invoke(null);
5857
if (! is_string($origin)) {
5958
return null;

src/NodeAnalyzer/QueryBuilderAnalyzer.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
final readonly class QueryBuilderAnalyzer
1313
{
1414
public function __construct(
15-
private readonly NodeTypeResolver $nodeTypeResolver,
16-
private readonly NodeNameResolver $nodeNameResolver,
15+
private NodeTypeResolver $nodeTypeResolver,
16+
private NodeNameResolver $nodeNameResolver,
1717
) {}
1818

1919
protected static function modelType(): ObjectType

src/Rector/Class_/AddHasFactoryToModelsRector.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
use PHPStan\Reflection\ClassReflection;
1212
use PHPStan\Type\ObjectType;
1313
use Rector\Contract\Rector\ConfigurableRectorInterface;
14-
use Rector\Rector\AbstractRector;
1514
use Rector\Reflection\ReflectionResolver;
15+
use RectorLaravel\AbstractRector;
1616
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
1717
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
1818
use Webmozart\Assert\Assert;
@@ -21,7 +21,7 @@
2121
* @changelog https://github.com/laravel/framework/pull/39310
2222
*
2323
* @see \RectorLaravel\Tests\Rector\Class_\AddHasFactoryToModelsRector\AddHasFactoryToModelsRectorTest
24-
* @see \RectorLaravel\Tests\Rector\Class_\AddHasFactoryToModelsRectorConfiguredTest\AddHasFactoryToModelsRectorConfiguredTest
24+
* @see \RectorLaravel\Tests\Rector\Class_\AddHasFactoryToModelsRector\AddHasFactoryToModelsRectorConfiguredTest
2525
*/
2626
final class AddHasFactoryToModelsRector extends AbstractRector implements ConfigurableRectorInterface
2727
{

src/Rector/FuncCall/FactoryFuncCallToStaticCallRector.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use PhpParser\Node\Expr\StaticCall;
1212
use Rector\Contract\Rector\ConfigurableRectorInterface;
1313
use RectorLaravel\AbstractRector;
14-
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
14+
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
1515
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
1616
use Webmozart\Assert\Assert;
1717

@@ -33,7 +33,7 @@ final class FactoryFuncCallToStaticCallRector extends AbstractRector implements
3333
public function getRuleDefinition(): RuleDefinition
3434
{
3535
return new RuleDefinition('Use the static factory method instead of global factory function.', [
36-
new CodeSample(
36+
new ConfiguredCodeSample(
3737
<<<'CODE_SAMPLE'
3838
factory(User::class);
3939
CODE_SAMPLE
@@ -42,7 +42,8 @@ public function getRuleDefinition(): RuleDefinition
4242
<<<'CODE_SAMPLE'
4343
User::factory();
4444
CODE_SAMPLE
45-
),
45+
,
46+
['App\User']),
4647
]);
4748
}
4849

src/Rector/MethodCall/ContainerBindConcreteWithClosureOnlyRector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
use PHPStan\Type\ObjectType;
1010
use PHPStan\Type\Type;
1111
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
12-
use Rector\Rector\AbstractRector;
1312
use Rector\StaticTypeMapper\StaticTypeMapper;
1413
use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
14+
use RectorLaravel\AbstractRector;
1515
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
1616
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
1717

src/Rector/Namespace_/FactoryDefinitionRector.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
2222
use RectorLaravel\AbstractRector;
2323
use RectorLaravel\NodeFactory\ModelFactoryNodeFactory;
24-
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
24+
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
2525
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
2626
use Webmozart\Assert\Assert;
2727

@@ -45,7 +45,7 @@ public function __construct(
4545
public function getRuleDefinition(): RuleDefinition
4646
{
4747
return new RuleDefinition('Upgrade legacy factories to support classes.', [
48-
new CodeSample(
48+
new ConfiguredCodeSample(
4949
<<<'CODE_SAMPLE'
5050
use Faker\Generator as Faker;
5151
@@ -73,7 +73,8 @@ public function definition()
7373
}
7474
}
7575
CODE_SAMPLE
76-
),
76+
,
77+
['App\User']),
7778
]);
7879
}
7980

0 commit comments

Comments
 (0)