Completed
Pull Request — master (#283)
by Oskar
04:36
created

PackageMetric::addOutgoingClassDependency()   A

Complexity

Conditions 4
Paths 5

Size

Total Lines 17
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 11
c 0
b 0
f 0
nc 5
nop 2
dl 0
loc 17
rs 9.2
1
<?php
2
3
namespace Hal\Metric;
4
5
use JsonSerializable;
6
7
class PackageMetric implements Metric, JsonSerializable
8
{
9
    use BagTrait;
10
11
    public function getClasses()
12
    {
13
        return $this->has('classes') ? $this->get('classes') : [];
14
    }
15
16
    public function addClass($name)
17
    {
18
        $elements = $this->get('classes');
0 ignored issues
show
Bug introduced by
Are you sure the assignment to $elements is correct as $this->get('classes') (which targets Hal\Metric\BagTrait::get()) seems to always return null.

This check looks for function or method calls that always return null and whose return value is assigned to a variable.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
$object = $a->getObject();

The method getObject() can return nothing but null, so it makes no sense to assign that value to a variable.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
19
        $elements[] = (string) $name;
20
        $this->set('classes', $elements);
21
    }
22
23
    public function setAbstraction($abstraction)
24
    {
25
        $this->set('abstraction', $abstraction);
26
    }
27
28
    public function getAbstraction()
29
    {
30
        return $this->get('abstraction');
31
    }
32
33
    public function setInstability($abstraction)
34
    {
35
        $this->set('instability', $abstraction);
36
    }
37
38
    public function getInstability()
39
    {
40
        return $this->get('instability');
41
    }
42
43
    public function addOutgoingClassDependency($className, $packageName)
44
    {
45
        if ($packageName === $this->getName()) {
46
            return;
47
        }
48
        $classDependencies = $this->getOutgoingClassDependencies();
49
        $packageDependencies = $this->getOutgoingPackageDependencies();
50
        if (! in_array($className, $classDependencies)) {
51
            $classDependencies[] = $className;
52
            $this->set('outgoing_class_dependencies', $classDependencies);
53
        }
54
        if (! in_array($packageName, $packageDependencies)) {
55
            $packageDependencies[] = $packageName;
56
            $this->set('outgoing_package_dependencies', $packageDependencies);
57
        }
58
59
    }
60
61
    public function getOutgoingClassDependencies()
62
    {
63
        return $this->has('outgoing_class_dependencies') ? $this->get('outgoing_class_dependencies') : [];
64
    }
65
66
    public function getOutgoingPackageDependencies()
67
    {
68
        return $this->has('outgoing_package_dependencies') ? $this->get('outgoing_package_dependencies') : [];
69
    }
70
71
    public function addIncomingClassDependency($className, $packageName)
72
    {
73
        if ($packageName === $this->getName()) {
74
            return;
75
        }
76
        $classDependencies = $this->getIncomingClassDependencies();
77
        $packageDependencies = $this->getIncomingPackageDependencies();
78
        if (! in_array($className, $classDependencies)) {
79
            $classDependencies[] = $className;
80
            $this->set('incoming_class_dependencies', $classDependencies);
81
        }
82
        if (! in_array($packageName, $packageDependencies)) {
83
            $packageDependencies[] = $packageName;
84
            $this->set('incoming_package_dependencies', $packageDependencies);
85
        }
86
87
    }
88
89
    public function getIncomingClassDependencies()
90
    {
91
        return $this->has('incoming_class_dependencies') ? $this->get('incoming_class_dependencies') : [];
92
    }
93
94
    public function getIncomingPackageDependencies()
95
    {
96
        return $this->has('incoming_package_dependencies') ? $this->get('incoming_package_dependencies') : [];
97
    }
98
99
    public function setNormalizedDistance($normalizedDistance)
100
    {
101
        $this->set('distance', $normalizedDistance / sqrt(2.0));
102
        $this->set('normalized_distance', $normalizedDistance);
103
    }
104
105
    public function getDistance()
106
    {
107
        return $this->get('distance');
108
    }
109
110
    public function setDependentInstabilities(array $instabilities)
111
    {
112
        $this->set('dependent_instabilities', $instabilities);
113
    }
114
115
    public function getDependentInstabilities()
116
    {
117
        return $this->get('dependent_instabilities');
118
    }
119
}
120