StaticMethodEnforcer   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
c 1
b 0
f 0
dl 0
loc 32
rs 10
wmc 5

1 Method

Rating   Name   Duplication   Size   Complexity  
A check() 0 30 5
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: peter
5
 * Date: 20.07.18
6
 * Time: 14:02
7
 */
8
9
namespace Maslosoft\Whitelist\Enforcers;
10
11
use function array_diff_key;
12
use Maslosoft\Whitelist\Checkers\AbstractChecker;
13
use Maslosoft\Whitelist\Helpers\ErrorCollector;
14
use Maslosoft\Whitelist\Helpers\ListNormalizer;
15
use Maslosoft\Whitelist\Interfaces\CheckerInterface;
16
use Maslosoft\Whitelist\Tokenizer\StaticMethod;
0 ignored issues
show
Bug introduced by
The type Maslosoft\Whitelist\Tokenizer\StaticMethod was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
17
use Maslosoft\Whitelist\Tokenizer\Tokenizer;
18
use Maslosoft\Whitelist\Whitelist;
19
20
class StaticMethodEnforcer extends AbstractChecker implements CheckerInterface
21
{
22
	public function check(Whitelist $list, Tokenizer $tokenizer, ErrorCollector $ec)
23
	{
24
		$result = true;
0 ignored issues
show
Unused Code introduced by
The assignment to $result is dead and can be removed.
Loading history...
25
		$required = ListNormalizer::normalize($list->required['methods']);
26
27
		$found = [];
28
29
		foreach ($tokenizer->getStaticMethodCalls() as $token)
30
		{
31
			if (!empty($required[$token->value]))
32
			{
33
				$found[$token->value];
34
				continue;
35
			}
36
		}
37
38
		$result = count($required) === count($found);
39
40
		if (!$result)
41
		{
42
			$diff = array_diff_key($required, $found);
43
44
			foreach ($diff as $value)
45
			{
46
				$token = new StaticMethod($value, $tokenizer->getTokens(), 0);
47
				$ec->required($token);
48
			}
49
		}
50
51
		return $result;
52
	}
53
54
}