Skip to content

Commit a9986fb

Browse files
committed
[ci] add simple script to detect duplicated short class names
1 parent a08605f commit a9986fb

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
// this is part of downgrade build
4+
5+
declare(strict_types=1);
6+
7+
require __DIR__ . '/../vendor/autoload.php';
8+
9+
$rectorClassFinder = new \Rector\Scripts\Finder\RectorClassFinder();
10+
$rectorClassNames = $rectorClassFinder->find([
11+
__DIR__ . '/../src',
12+
__DIR__ . '/../rules',
13+
__DIR__ . '/../vendor/rector/rector-doctrine',
14+
__DIR__ . '/../vendor/rector/rector-phpunit',
15+
__DIR__ . '/../vendor/rector/rector-symfony',
16+
__DIR__ . '/../vendor/rector/rector-downgrade-php',
17+
]);
18+
19+
$shortClassNames = [];
20+
foreach ($rectorClassNames as $rectorClassName) {
21+
$shortClassNames[] = substr($rectorClassName, strrpos($rectorClassName, '\\') + 1);
22+
}
23+
24+
$classNamesToCounts = array_count_values($shortClassNames);
25+
$duplicatedShortClassNames = [];
26+
27+
foreach ($classNamesToCounts as $className => $count) {
28+
if ($count === 1) {
29+
// unique, skip
30+
continue;
31+
}
32+
33+
$duplicatedShortClassNames[] = $className;
34+
}
35+
36+
if ($duplicatedShortClassNames === []) {
37+
// good
38+
echo "All Rector class names are unique!\n";
39+
exit(\Rector\Console\ExitCode::SUCCESS);
40+
}
41+
42+
echo "The following Rector class names are duplicated:\n";
43+
foreach ($duplicatedShortClassNames as $duplicatedShortClassName) {
44+
echo sprintf("- %s\n", $duplicatedShortClassName);
45+
}
46+
47+
exit(\Rector\Console\ExitCode::FAILURE);

0 commit comments

Comments
 (0)