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

keradus / PHP-CS-Fixer / 16428450756

21 Jul 2025 06:19PM UTC coverage: 94.756% (-0.002%) from 94.758%
16428450756

push

github

web-flow
fix: always reach 100% of checked files (#8861)

4 of 4 new or added lines in 1 file covered. (100.0%)

111 existing lines in 19 files now uncovered.

28186 of 29746 relevant lines covered (94.76%)

45.93 hits per line

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

95.65
/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

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

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

42
        usort($this->items, static fn (TransformerInterface $a, TransformerInterface $b): int => $b->getPriority() <=> $a->getPriority());
1✔
43
    }
44

45
    public static function createSingleton(): self
46
    {
47
        static $instance = null;
1✔
48

49
        if (!$instance) {
1✔
50
            $instance = new self();
1✔
51
        }
52

53
        return $instance;
1✔
54
    }
55

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

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

80
    private function registerBuiltInTransformers(): void
81
    {
82
        static $registered = false;
1✔
83

84
        if ($registered) {
1✔
UNCOV
85
            return;
×
86
        }
87

88
        $registered = true;
1✔
89

90
        foreach ($this->findBuiltInTransformers() as $transformer) {
1✔
91
            $this->registerTransformer($transformer);
1✔
92
        }
93
    }
94

95
    /**
96
     * @return \Generator<TransformerInterface>
97
     */
98
    private function findBuiltInTransformers(): iterable
99
    {
100
        foreach (Finder::create()->files()->in(__DIR__.'/Transformer') as $file) {
1✔
101
            $relativeNamespace = $file->getRelativePath();
1✔
102
            $class = __NAMESPACE__.'\Transformer\\'.('' !== $relativeNamespace ? $relativeNamespace.'\\' : '').$file->getBasename('.php');
1✔
103

104
            $instance = new $class();
1✔
105

106
            \assert($instance instanceof TransformerInterface);
1✔
107

108
            yield $instance;
1✔
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