-
-
Notifications
You must be signed in to change notification settings - Fork 439
Expand file tree
/
Copy pathunique-rector-short-class-name.php
More file actions
69 lines (54 loc) · 1.73 KB
/
unique-rector-short-class-name.php
File metadata and controls
69 lines (54 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
// this is part of downgrade build
declare(strict_types=1);
use Rector\Console\ExitCode;
use Rector\Scripts\Finder\RectorClassFinder;
require __DIR__ . '/../vendor/autoload.php';
$rectorClassFinder = new RectorClassFinder();
$rectorClassNames = $rectorClassFinder->find([
__DIR__ . '/../rules',
__DIR__ . '/../vendor/rector/rector-doctrine',
__DIR__ . '/../vendor/rector/rector-phpunit',
__DIR__ . '/../vendor/rector/rector-symfony',
__DIR__ . '/../vendor/rector/rector-downgrade-php',
]);
/**
* @param string[] $classNames
* @return string[]
*/
function getShortClassNames(array $classNames): array
{
$shortClassNames = [];
foreach ($classNames as $className) {
$shortClassNames[] = substr($className, strrpos($className, '\\') + 1);
}
return $shortClassNames;
}
/**
* @param string[] $shortClassNames
* @return string[]
*/
function filterDuplicatedValues(array $shortClassNames): array
{
$classNamesToCounts = array_count_values($shortClassNames);
$duplicatedShortClassNames = [];
foreach ($classNamesToCounts as $className => $count) {
if ($count === 1) {
// unique, skip
continue;
}
$duplicatedShortClassNames[] = $className;
}
return $duplicatedShortClassNames;
}
$shortClassNames = getShortClassNames($rectorClassNames);
$duplicatedShortClassNames = filterDuplicatedValues($shortClassNames);
if ($duplicatedShortClassNames === []) {
echo "All Rector class names are unique!\n";
exit(ExitCode::SUCCESS);
}
echo "The following Rector class names are duplicated:\n";
foreach ($duplicatedShortClassNames as $duplicatedShortClassName) {
echo sprintf("- %s\n", $duplicatedShortClassName);
}
exit(ExitCode::FAILURE);