• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

PHP-CS-Fixer / PHP-CS-Fixer / 3721300657

pending completion
3721300657

push

github

GitHub
minor: Follow PSR12 ordered imports in Symfony ruleset (#6712)

9 of 9 new or added lines in 2 files covered. (100.0%)

22674 of 24281 relevant lines covered (93.38%)

39.08 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

26.09
/src/Tokenizer/Transformers.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of PHP CS Fixer.
7
 *
8
 * (c) Fabien Potencier <fabien@symfony.com>
9
 *     Dariusz Rumiński <dariusz.ruminski@gmail.com>
10
 *
11
 * This source file is subject to the MIT license that is bundled
12
 * with this source code in the file LICENSE.
13
 */
14

15
namespace PhpCsFixer\Tokenizer;
16

17
use Symfony\Component\Finder\Finder;
18
use Symfony\Component\Finder\SplFileInfo;
19

20
/**
21
 * Collection of Transformer classes.
22
 *
23
 * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
24
 *
25
 * @internal
26
 */
27
final class Transformers
28
{
29
    /**
30
     * The registered transformers.
31
     *
32
     * @var list<TransformerInterface>
33
     */
34
    private array $items = [];
35

36
    /**
37
     * Register built in Transformers.
38
     */
39
    private function __construct()
40
    {
41
        $this->registerBuiltInTransformers();
×
42

43
        usort($this->items, static function (TransformerInterface $a, TransformerInterface $b): int {
×
44
            return $b->getPriority() <=> $a->getPriority();
×
45
        });
×
46
    }
47

48
    public static function createSingleton(): self
49
    {
50
        static $instance = null;
1✔
51

52
        if (!$instance) {
1✔
53
            $instance = new self();
×
54
        }
55

56
        return $instance;
1✔
57
    }
58

59
    /**
60
     * Transform given Tokens collection through all Transformer classes.
61
     *
62
     * @param Tokens $tokens Tokens collection
63
     */
64
    public function transform(Tokens $tokens): void
65
    {
66
        foreach ($this->items as $transformer) {
1✔
67
            foreach ($tokens as $index => $token) {
1✔
68
                $transformer->process($tokens, $token, $index);
1✔
69
            }
70
        }
71
    }
72

73
    /**
74
     * @param TransformerInterface $transformer Transformer
75
     */
76
    private function registerTransformer(TransformerInterface $transformer): void
77
    {
78
        if (\PHP_VERSION_ID >= $transformer->getRequiredPhpVersionId()) {
×
79
            $this->items[] = $transformer;
×
80
        }
81
    }
82

83
    private function registerBuiltInTransformers(): void
84
    {
85
        static $registered = false;
×
86

87
        if ($registered) {
×
88
            return;
×
89
        }
90

91
        $registered = true;
×
92

93
        foreach ($this->findBuiltInTransformers() as $transformer) {
×
94
            $this->registerTransformer($transformer);
×
95
        }
96
    }
97

98
    /**
99
     * @return \Generator<TransformerInterface>
100
     */
101
    private function findBuiltInTransformers(): iterable
102
    {
103
        /** @var SplFileInfo $file */
104
        foreach (Finder::create()->files()->in(__DIR__.'/Transformer') as $file) {
×
105
            $relativeNamespace = $file->getRelativePath();
×
106
            $class = __NAMESPACE__.'\\Transformer\\'.($relativeNamespace ? $relativeNamespace.'\\' : '').$file->getBasename('.php');
×
107

108
            yield new $class();
×
109
        }
110
    }
111
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc