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

SniffNaming::ensureSniffClassNameIsValid()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2.7462

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 3
cts 7
cp 0.4286
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 7
nc 2
nop 2
crap 2.7462
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