Completed
Pull Request — master (#139)
by Kévin
21:00 queued 02:16
created

ConfigurablePassTrait   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 42
ccs 18
cts 18
cp 1
rs 10
c 0
b 0
f 0
wmc 6
lcom 0
cbo 2

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getName() 0 6 1
A getConfiguration() 0 8 1
A convertToSnakeCase() 0 13 4
1
<?php
2
/**
3
 * @author Kévin Gomez https://github.com/K-Phoen <[email protected]>
4
 */
5
6
namespace PHPSA\Analyzer\Helper;
7
8
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
9
10
trait ConfigurablePassTrait
11
{
12
    /**
13
     * {@inheritdoc}
14
     */
15 1
    public static function getName()
16
    {
17 1
        $fqcnParts = explode('\\', __CLASS__);
18
19 1
        return self::convertToSnakeCase(end($fqcnParts));
20
    }
21
22
    /**
23
     * {@inheritdoc}
24
     */
25 1
    public static function getConfiguration()
26
    {
27 1
        $treeBuilder = new TreeBuilder();
28
29 1
        return $treeBuilder->root(self::getName())
30 1
            ->canBeDisabled()
31 1
        ;
32
    }
33
34
    /**
35
     * @param string $string
36
     * @return string
37
     */
38 1
    private static function convertToSnakeCase($string)
39
    {
40 1
        $snakeCasedName = '';
41 1
        $len = strlen($string);
42 1
        for ($i = 0; $i < $len; ++$i) {
43 1
            if ($i !== 0 && ctype_upper($string[$i])) {
44 1
                $snakeCasedName .= '_'.strtolower($string[$i]);
45 1
            } else {
46 1
                $snakeCasedName .= strtolower($string[$i]);
47
            }
48 1
        }
49 1
        return $snakeCasedName;
50
    }
51
}
52