Completed
Push — master ( 5cf284...830bc1 )
by Tomáš
03:38
created

LegacyClassAliases   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 12.5%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 5
dl 0
loc 41
ccs 3
cts 24
cp 0.125
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 14 2
A registerAbstractSniffAliases() 0 6 1
A registerSniffAliases() 0 10 2
A convertSniffCodeToLegacyClassName() 0 5 1
1
<?php
2
3
/*
4
 * This file is part of Symplify
5
 * Copyright (c) 2016 Tomas Votruba (http://tomasvotruba.cz).
6
 */
7
8
namespace Symplify\PHP7_CodeSniffer\Legacy;
9
10
use PHP_CodeSniffer\Files\File;
11
use PHP_CodeSniffer\Sniffs\AbstractPatternSniff;
12
use PHP_CodeSniffer\Sniffs\AbstractScopeSniff;
13
use PHP_CodeSniffer\Sniffs\AbstractVariableSniff;
14
use PHP_CodeSniffer\Sniffs\Sniff;
15
use PHP_CodeSniffer\Util\Tokens;
16
use Symplify\PHP7_CodeSniffer\Composer\VendorDirProvider;
17
use Symplify\PHP7_CodeSniffer\Sniff\Finder\SniffClassFilter;
18
use Symplify\PHP7_CodeSniffer\Sniff\Finder\SniffClassRobotLoaderFactory;
19
use Symplify\PHP7_CodeSniffer\Sniff\Finder\SniffFinder;
20
21
final class LegacyClassAliases
22
{
23 1
    public static function register()
24
    {
25 1
        if (class_exists('PHP_CodeSniffer_File')) {
26 1
            return;
27
        }
28
29
        new Tokens();
30
31
        class_alias(File::class, 'PHP_CodeSniffer_File');
32
        class_alias(Sniff::class, 'PHP_CodeSniffer_Sniff');
33
34
        self::registerAbstractSniffAliases();
35
        self::registerSniffAliases();
36
    }
37
38
    private static function registerAbstractSniffAliases()
39
    {
40
        class_alias(AbstractVariableSniff::class, 'PHP_CodeSniffer_Standards_AbstractVariableSniff');
41
        class_alias(AbstractPatternSniff::class, 'PHP_CodeSniffer_Standards_AbstractPatternSniff');
42
        class_alias(AbstractScopeSniff::class, 'PHP_CodeSniffer_Standards_AbstractScopeSniff');
43
    }
44
45
    private static function registerSniffAliases()
46
    {
47
        $sniffFinder = new SniffFinder(new SniffClassRobotLoaderFactory(), new SniffClassFilter());
48
49
        $sniffClasses = $sniffFinder->findAllSniffClassesInDirectory(VendorDirProvider::provide() . '/squizlabs/php_codesniffer/src/Standards');
50
        foreach ($sniffClasses as $sniffCode => $sniffClass) {
51
            $legacySniffClass = self::convertSniffCodeToLegacyClassName($sniffCode);
52
            class_alias($sniffClass, $legacySniffClass);
53
        }
54
    }
55
56
    private static function convertSniffCodeToLegacyClassName(string $sniffCode) : string
57
    {
58
        $parts = explode('.', $sniffCode);
59
        return $parts[0] . '_Sniffs_' . $parts[1] . '_' . $parts[2] . 'Sniff';
60
    }
61
}
62