Completed
Branch master (c5ceed)
by Tomáš
33:54 queued 13:17
created

SniffNaming   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 77.78%

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 1
dl 0
loc 51
ccs 21
cts 27
cp 0.7778
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A guessSniffClassBySniffCode() 0 17 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\SniffFinder\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].'\\Sniffs\\'.$parts[1].'\\'.$parts[2].'Sniff';
29 1
        return $thirdGuess;
30
    }
31
32 2
    public static function guessSniffCodeBySniffClass(string $sniffClass) : string
33
    {
34 2
        $parts = explode('\\', $sniffClass);
35
36 2
        self::ensureSniffClassNameIsValid($sniffClass, $parts);
37
38 2
        $standardName = $parts[count($parts)-4];
39 2
        if (Strings::endsWith($standardName, 'CodingStandard')) {
40 1
            $standardName = substr($standardName, 0, -strlen('CodingStandard'));
41
        }
42
43 2
        $categoryName = $parts[count($parts)-2];
44
45 2
        $sniffName = $parts[count($parts)-1];
46 2
        $sniffName = substr($sniffName, 0, -strlen('Sniff'));
47
48 2
        return $standardName.'.'.$categoryName.'.'.$sniffName;
49
    }
50
51 2
    private static function ensureSniffClassNameIsValid(string $sniffClass, array $parts)
52
    {
53 2
        if (count($parts) < 4) {
54
            throw new \Exception(sprintf(
55
                '"%s" is not valid sniff class name. Name in form %s or %s is expected.',
56
                $sniffClass,
57
                '<Name>CodingStandard\Sniffs\<Category>\<Name>Sniff',
58
                '<Name>\CodingStandard\Sniffs\<Category>\<Name>Sniff'
59
            ));
60
        }
61 2
    }
62
}
63