Skip to content

Commit bcc119d

Browse files
authored
Merge SkipSkipper and SkippedClassResolver into Skipper (#8601)
1 parent fda9d82 commit bcc119d

14 files changed

Lines changed: 127 additions & 171 deletions

File tree

‎phpstan.neon‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ parameters:
339339
identifier: symplify.forbiddenFuncCall
340340
message: '#Function "(class_exists|interface_exists)\(\)" cannot be used/left in the code\: use ReflectionProvider\->has\*\(\) instead#'
341341
paths:
342-
- src/Skipper/SkipCriteriaResolver/SkippedClassResolver.php
342+
- src/Skipper/Skipper/Skipper.php
343343

344344
-
345345
identifier: symplify.noConstructorOverride

‎src/Application/RectorRegistry.php‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44

55
namespace Rector\Application;
66

7+
use Rector\Contract\Rector\HTMLAverseRectorInterface;
78
use Rector\Contract\Rector\RectorInterface;
89
use Rector\Skipper\Skipper\Skipper;
10+
use Rector\ValueObject\Application\File;
911

1012
/**
1113
* @see \Rector\Tests\Application\RectorRegistryTest
@@ -35,11 +37,15 @@ public function refreshRectors(array $rectors): void
3537
/**
3638
* @return array<RectorInterface>
3739
*/
38-
public function forPath(string $filePath): array
40+
public function forFile(File $file): array
3941
{
4042
$rectorsForPath = [];
4143
foreach ($this->rectors as $rector) {
42-
if ($this->skipper->shouldSkipRectorAndFile($rector, $filePath)) {
44+
if ($this->skipper->shouldSkipRectorAndFile($rector, $file->getFilePath())) {
45+
continue;
46+
}
47+
48+
if ($rector instanceof HTMLAverseRectorInterface && $file->containsHTML()) {
4349
continue;
4450
}
4551

‎src/Config/RectorConfig.php‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
use Rector\Enum\Config\Defaults;
1818
use Rector\Exception\ShouldNotHappenException;
1919
use Rector\Php\PhpVersionResolver\ComposerJsonPhpVersionResolver;
20-
use Rector\Skipper\SkipCriteriaResolver\SkippedClassResolver;
20+
use Rector\Skipper\Skipper\Skipper;
2121
use Rector\Validation\RectorConfigValidator;
2222
use Rector\ValueObject\Configuration\LevelOverflow;
2323
use Rector\ValueObject\PhpVersion;
@@ -510,8 +510,8 @@ public function resetRuleConfigurations(): void
510510
*/
511511
public function boot(): void
512512
{
513-
$skippedClassResolver = new SkippedClassResolver();
514-
$skippedElements = $skippedClassResolver->resolve();
513+
$skippedElements = $this->make(Skipper::class)
514+
->resolveSkippedClasses();
515515

516516
foreach ($skippedElements as $skippedClass => $path) {
517517
if ($path !== null) {

‎src/Console/Command/ListRulesCommand.php‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use Rector\Configuration\Option;
1010
use Rector\Contract\Rector\RectorInterface;
1111
use Rector\PostRector\Contract\Rector\PostRectorInterface;
12-
use Rector\Skipper\SkipCriteriaResolver\SkippedClassResolver;
12+
use Rector\Skipper\Skipper\Skipper;
1313
use Symfony\Component\Console\Command\Command;
1414
use Symfony\Component\Console\Input\InputInterface;
1515
use Symfony\Component\Console\Input\InputOption;
@@ -23,7 +23,7 @@ final class ListRulesCommand extends Command
2323
*/
2424
public function __construct(
2525
private readonly SymfonyStyle $symfonyStyle,
26-
private readonly SkippedClassResolver $skippedClassResolver,
26+
private readonly Skipper $skipper,
2727
private readonly array $rectors
2828
) {
2929
parent::__construct();
@@ -101,7 +101,7 @@ private function getSkippedRectorClasses(): array
101101
{
102102
$skippedRectorClasses = [];
103103

104-
foreach ($this->skippedClassResolver->resolve() as $rectorClass => $fileList) {
104+
foreach ($this->skipper->resolveSkippedClasses() as $rectorClass => $fileList) {
105105
// ignore specific skips
106106
if ($fileList !== null) {
107107
continue;

‎src/Console/Command/ProcessCommand.php‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
use Rector\Exception\ShouldNotHappenException;
1919
use Rector\Reporting\DeprecatedRulesReporter;
2020
use Rector\Reporting\MissConfigurationReporter;
21-
use Rector\Skipper\SkipCriteriaResolver\SkippedClassResolver;
21+
use Rector\Skipper\Skipper\Skipper;
2222
use Rector\StaticReflection\DynamicSourceLocatorDecorator;
2323
use Rector\Util\MemoryLimiter;
2424
use Rector\ValueObject\Configuration;
@@ -45,7 +45,7 @@ public function __construct(
4545
private readonly DeprecatedRulesReporter $deprecatedRulesReporter,
4646
private readonly MissConfigurationReporter $missConfigurationReporter,
4747
private readonly ConfigurationRuleFilter $configurationRuleFilter,
48-
private readonly SkippedClassResolver $skippedClassResolver,
48+
private readonly Skipper $skipper,
4949
) {
5050
parent::__construct();
5151
}
@@ -116,11 +116,11 @@ protected function execute(InputInterface $input, OutputInterface $output): int
116116
}
117117

118118
// 0. warn about skipped rules that are deprecated
119-
if ($this->skippedClassResolver->resolveDeprecatedSkippedClasses() !== []) {
119+
if ($this->skipper->resolveDeprecatedSkippedClasses() !== []) {
120120
$this->symfonyStyle->warning(sprintf(
121121
'These rules are skipped, but are deprecated. Most likely you do not need to skip them anymore as not part of any set and remove them: %s%s',
122122
"\n\n",
123-
'* ' . implode("\n* ", $this->skippedClassResolver->resolveDeprecatedSkippedClasses()) . "\n"
123+
'* ' . implode("\n* ", $this->skipper->resolveDeprecatedSkippedClasses()) . "\n"
124124
));
125125
}
126126

‎src/Console/Command/ValidateConfigCommand.php‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use Rector\Console\ExitCode;
1212
use Rector\Reporting\DeprecatedRulesReporter;
1313
use Rector\Reporting\MissConfigurationReporter;
14-
use Rector\Skipper\SkipCriteriaResolver\SkippedClassResolver;
14+
use Rector\Skipper\Skipper\Skipper;
1515
use Rector\ValueObject\Configuration;
1616
use Symfony\Component\Console\Command\Command;
1717
use Symfony\Component\Console\Input\InputInterface;
@@ -28,7 +28,7 @@ public function __construct(
2828
private readonly SymfonyStyle $symfonyStyle,
2929
private readonly DeprecatedRulesReporter $deprecatedRulesReporter,
3030
private readonly MissConfigurationReporter $missConfigurationReporter,
31-
private readonly SkippedClassResolver $skippedClassResolver,
31+
private readonly Skipper $skipper,
3232
) {
3333
parent::__construct();
3434
}
@@ -94,7 +94,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
9494

9595
private function reportDeprecatedSkippedClasses(): int
9696
{
97-
$deprecatedSkippedClasses = $this->skippedClassResolver->resolveDeprecatedSkippedClasses();
97+
$deprecatedSkippedClasses = $this->skipper->resolveDeprecatedSkippedClasses();
9898
if ($deprecatedSkippedClasses === []) {
9999
return 0;
100100
}

‎src/Reporting/UnusedSkipResolver.php‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Rector\Configuration\Option;
88
use Rector\Configuration\Parameter\SimpleParameterProvider;
99
use Rector\FileSystem\FilePathHelper;
10-
use Rector\Skipper\SkipCriteriaResolver\SkippedClassResolver;
10+
use Rector\Skipper\Skipper\Skipper;
1111
use Rector\Skipper\SkipCriteriaResolver\SkippedPathsResolver;
1212
use Rector\ValueObject\ProcessResult;
1313

@@ -17,7 +17,7 @@
1717
final readonly class UnusedSkipResolver
1818
{
1919
public function __construct(
20-
private SkippedClassResolver $skippedClassResolver,
20+
private Skipper $skipper,
2121
private SkippedPathsResolver $skippedPathsResolver,
2222
private FilePathHelper $filePathHelper,
2323
) {
@@ -73,7 +73,7 @@ private function shouldSkipReporting(): bool
7373
private function resolveRelativePathsByClass(): array
7474
{
7575
$relativePathsByClass = [];
76-
foreach ($this->skippedClassResolver->resolve() as $rectorClass => $paths) {
76+
foreach ($this->skipper->resolveSkippedClasses() as $rectorClass => $paths) {
7777
if ($paths === null) {
7878
continue;
7979
}
@@ -118,7 +118,7 @@ private function resolveUnusedRuleScopedSkips(array $usedSkips): array
118118
$unusedRelativePaths = [];
119119
foreach ($relativePaths as $path => $relativePath) {
120120
// used skips are tracked scoped to their rule (class => [path]), so the same path
121-
// skipped under another rule does not mark this one used (see SkipSkipper)
121+
// skipped under another rule does not mark this one used (see Skipper::matchSkip())
122122
if (! in_array($path, $usedSkips[$rectorClass] ?? [], true)) {
123123
$unusedRelativePaths[] = $relativePath;
124124
}

‎src/Skipper/SkipCriteriaResolver/SkippedClassResolver.php‎

Lines changed: 0 additions & 74 deletions
This file was deleted.

‎src/Skipper/Skipper/SkipSkipper.php‎

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)