Test Failed
Pull Request — master (#39)
by Aleksandr
08:25
created

ConsumerFactory::addConsumer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 0
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 2
rs 10
1
<?php
2
3
namespace OldSound\RabbitMqBundle\Declarations;
4
5
use OldSound\RabbitMqBundle\RabbitMq\Consumer;
6
use PhpAmqpLib\Connection\AbstractConnection;
7
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
8
9
class ConsumerFactory
10
{
11
    use ContainerAwareTrait;
12
13
    /** @var ConsumerDef[] */
14
    private $consumerDefs = [];
15
16
    public function addConsumer()
17
    {
18
19
    }
20
21
    public function create($name): Consumer
22
    {
23
        $consumerDef = $this->consumerDefs[$name];
24
        /** @var AbstractConnection $connection */
25
        $connection = $this->container->get(sprintf('old_sound_rabbit_mq.connection.%s', $consumerDef->name));
26
        $consumer = new Consumer($consumerDef->name);
0 ignored issues
show
Bug introduced by
$consumerDef->name of type string is incompatible with the type PhpAmqpLib\Channel\AMQPChannel expected by parameter $channel of OldSound\RabbitMqBundle\...Consumer::__construct(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

26
        $consumer = new Consumer(/** @scrutinizer ignore-type */ $consumerDef->name);
Loading history...
27
        $consumer->setChannel($connection->channel());
0 ignored issues
show
Bug introduced by
The method setChannel() does not exist on OldSound\RabbitMqBundle\RabbitMq\Consumer. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

27
        $consumer->/** @scrutinizer ignore-call */ 
28
                   setChannel($connection->channel());

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
28
29
        foreach([] as $d) {
30
            $consumer->consumeQueue();
0 ignored issues
show
Bug introduced by
The call to OldSound\RabbitMqBundle\...onsumer::consumeQueue() has too few arguments starting with queueConsuming. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

30
            $consumer->/** @scrutinizer ignore-call */ 
31
                       consumeQueue();

This check compares calls to functions or methods with their respective definitions. If the call has less arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
31
        }
32
33
        return $consumer;
34
    }
35
}