AbstractNightlyTaskCommand   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 6
lcom 2
cbo 3
dl 0
loc 66
ccs 0
cts 24
cp 0
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A getTasks() 0 4 1
A beforeExecute() 0 5 1
A fillTasks() 0 9 3
1
<?php
2
3
namespace Dekalee\NightlyTaskBundle\Command;
4
5
use Dekalee\NightlyTaskBundle\Bag\TasksBag;
6
use Psr\Log\LoggerInterface;
7
use Symfony\Component\Console\Command\Command;
8
use Symfony\Component\Console\Descriptor\ApplicationDescription;
9
use Symfony\Component\Console\Input\InputInterface;
10
use Symfony\Component\Console\Output\OutputInterface;
11
12
/**
13
 * Class AbstractNightlyTaskCommand
14
 */
15
abstract class AbstractNightlyTaskCommand extends Command
16
{
17
    /**
18
     * @var InputInterface
19
     */
20
    protected $input;
21
22
    /**
23
     * @var OutputInterface
24
     */
25
    protected $output;
26
27
    /**
28
     * @var LoggerInterface
29
     */
30
    protected $logger;
31
32
    /**
33
     * @var TasksBag
34
     */
35
    private $taskBag;
36
37
    /**
38
     * @param TasksBag        $taskBag
39
     * @param LoggerInterface $logger
40
     */
41
    public function __construct(TasksBag $taskBag, LoggerInterface $logger)
42
    {
43
        parent::__construct();
44
        $this->logger = $logger;
45
        $this->taskBag = $taskBag;
46
    }
47
48
    /**
49
     * @return array
50
     */
51
    protected function getTasks()
52
    {
53
        return $this->taskBag->getTasks();
54
    }
55
56
    /**
57
     * Initialize fields
58
     *
59
     * @param InputInterface  $input
60
     * @param OutputInterface $output
61
     */
62
    protected function beforeExecute(InputInterface $input, OutputInterface $output)
63
    {
64
        $this->input = $input;
65
        $this->output = $output;
66
    }
67
68
    /**
69
     * Fill task lists
70
     */
71
    protected function fillTasks()
72
    {
73
        $description = new ApplicationDescription($this->getApplication());
0 ignored issues
show
Bug introduced by
It seems like $this->getApplication() can be null; however, __construct() does not accept null, maybe add an additional type check?

Unless you are absolutely sure that the expression can never be null because of other conditions, we strongly recommend to add an additional type check to your code:

/** @return stdClass|null */
function mayReturnNull() { }

function doesNotAcceptNull(stdClass $x) { }

// With potential error.
function withoutCheck() {
    $x = mayReturnNull();
    doesNotAcceptNull($x); // Potential error here.
}

// Safe - Alternative 1
function withCheck1() {
    $x = mayReturnNull();
    if ( ! $x instanceof stdClass) {
        throw new \LogicException('$x must be defined.');
    }
    doesNotAcceptNull($x);
}

// Safe - Alternative 2
function withCheck2() {
    $x = mayReturnNull();
    if ($x instanceof stdClass) {
        doesNotAcceptNull($x);
    }
}
Loading history...
74
        foreach ($description->getCommands() as $command) {
75
            if ($command instanceof NightlyCommandInterface) {
76
                $this->taskBag->addTask($command, $command->getPriority());
77
            }
78
        }
79
    }
80
}
81