Completed
Pull Request — develop (#640)
by Narcotic
08:00 queued 01:02
created

ApiDefinitionLoaderPass   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 32
Duplicated Lines 34.38 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 43.75%

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 3
dl 11
loc 32
rs 10
c 0
b 0
f 0
ccs 7
cts 16
cp 0.4375

1 Method

Rating   Name   Duplication   Size   Complexity  
B process() 11 22 4

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
/**
3
 * ApiDefinitionLoaderPass
4
 */
5
6
namespace Graviton\ProxyBundle\DependencyInjection\Compiler;
7
8
use Symfony\Component\DependencyInjection\ContainerBuilder;
9
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
10
use Symfony\Component\DependencyInjection\Reference;
11
12
/**
13
 * Class ApiDefinitionLoaderPass
14
 *
15
 * @package Graviton\ProxyExtensionBundle\Definition\Loader
16
 *
17
 * @author   List of contributors <https://github.com/libgraviton/graviton/graphs/contributors>
18
 * @license  https://opensource.org/licenses/MIT MIT License
19
 * @link     http://swisscom.ch
20
 */
21
class ApiDefinitionLoaderPass implements CompilerPassInterface
22
{
23
    /**
24
     * {@inheritDoc}
25
     *
26
     * @param ContainerBuilder $container Symfony Service container
27
     *
28
     * @return void
29
     */
30 2
    public function process(ContainerBuilder $container)
31
    {
32
        // always first check if the primary service is defined
33 2
        if (!$container->has('graviton.proxy.service.loaderfactory')) {
34
            return;
35
        }
36
37 2
        $definition = $container->findDefinition('graviton.proxy.service.loaderfactory');
38 2
        $taggedServices = $container->findTaggedServiceIds('graviton.proxy.definition.loader');
39
40 2 View Code Duplication
        foreach ($taggedServices as $id => $tags) {
41
            foreach ($tags as $attributes) {
42
                $definition->addMethodCall(
43
                    'addLoaderDefinition',
44
                    array(
45
                        new Reference($id),
46
                        $attributes["alias"]
47
                    )
48
                );
49
            }
50 1
        }
51 2
    }
52
}
53