ClassNameSingleResponsibility::apply()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 3

Importance

Changes 3
Bugs 1 Features 2
Metric Value
c 3
b 1
f 2
dl 0
loc 12
ccs 9
cts 9
cp 1
rs 9.4285
cc 3
eloc 7
nc 3
nop 1
crap 3
1
<?php
2
3
namespace MS\PHPMD\Rule\CleanCode;
4
5
use PHPMD\AbstractNode;
6
use PHPMD\AbstractRule;
7
use PHPMD\Node\ClassNode;
8
use PHPMD\Rule\ClassAware;
9
10
/**
11
 * Class ClassNameSingleResponsibility
12
 *
13
 * Try to avoid general suffixes like Manager. It might violate the single responsibility principle.
14
 *
15
 * @package MS\PHPMD\Rule\CleanCode
16
 */
17
class ClassNameSingleResponsibility extends AbstractRule implements ClassAware
18
{
19
    /**
20
     * @param AbstractNode|ClassNode $node
21
     */
22 2
    public function apply(AbstractNode $node)
23
    {
24 2
        $suffixes = $this->getStringProperty('suffixes');
25 2
        $generalSuffixes = explode($this->getStringProperty('delimiter'), $suffixes);
26
27 2
        foreach ($generalSuffixes as $generalSuffix) {
28 2
            if ($generalSuffix === substr($node->getImage(), strlen($generalSuffix) * -1)) {
29 1
                $this->addViolation($node, [$suffixes, $generalSuffix]);
30 1
                break;
31
            }
32 2
        }
33 2
    }
34
}
35