Completed
Branch master (06cb84)
by Tomáš
06:00
created

SniffNaming   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 75%

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 1
dl 0
loc 52
ccs 21
cts 28
cp 0.75
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A guessSniffClassBySniffCode() 0 18 3
A guessSniffCodeBySniffClass() 0 18 2
A ensureSniffClassNameIsValid() 0 11 2
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\Sniff\Naming;
9
10
use Nette\Utils\Strings;
11
12
final class SniffNaming
13
{
14 1
    public static function guessSniffClassBySniffCode(string $sniffCode) : string
15
    {
16 1
        $parts = explode('.', $sniffCode);
17
18 1
        $firstGuess = $parts[0].'CodingStandard\\Sniffs\\'.$parts[1].'\\'.$parts[2].'Sniff';
19 1
        if (class_exists($firstGuess)) {
20
            return $firstGuess;
21
        }
22
23 1
        $secondGuess = $parts[0].'\\CodingStandard\\Sniffs\\'.$parts[1].'\\'.$parts[2].'Sniff';
24 1
        if (class_exists($secondGuess)) {
25
            return $secondGuess;
26
        }
27
28 1
        $thirdGuess = 'PHP_CodeSniffer\\Standards\\'.$parts[0]
29 1
            .'\\Sniffs\\'.$parts[1].'\\'.$parts[2].'Sniff';
30 1
        return $thirdGuess;
31
    }
32
33 4
    public static function guessSniffCodeBySniffClass(string $sniffClass) : string
34
    {
35 4
        $parts = explode('\\', $sniffClass);
36
37 4
        self::ensureSniffClassNameIsValid($sniffClass, $parts);
38
39 4
        $standardName = $parts[count($parts)-4];
40 4
        if (Strings::endsWith($standardName, 'CodingStandard')) {
41
            $standardName = substr($standardName, 0, -strlen('CodingStandard'));
42
        }
43
44 4
        $categoryName = $parts[count($parts)-2];
45
46 4
        $sniffName = $parts[count($parts)-1];
47 4
        $sniffName = substr($sniffName, 0, -strlen('Sniff'));
48
49 4
        return $standardName.'.'.$categoryName.'.'.$sniffName;
50
    }
51
52 4
    private static function ensureSniffClassNameIsValid(string $sniffClass, array $parts)
53
    {
54 4
        if (count($parts) < 4) {
55
            throw new \Exception(sprintf(
56
                '"%s" is not valid sniff class name. Name in form %s or %s is expected.',
57
                $sniffClass,
58
                '<Name>CodingStandard\Sniffs\<Category>\<Name>Sniff',
59
                '<Name>\CodingStandard\Sniffs\<Category>\<Name>Sniff'
60
            ));
61
        }
62 4
    }
63
}
64