Completed
Push — master ( 0753cc...cb3576 )
by Дмитрий
07:55 queued 03:52
created

DeprecatedFunctions::pass()   C

Complexity

Conditions 7
Paths 4

Size

Total Lines 23
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 22.6944

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 7
eloc 17
c 1
b 0
f 1
nc 4
nop 2
dl 0
loc 23
ccs 6
cts 19
cp 0.3158
crap 22.6944
rs 6.7272
1
<?php
2
3
namespace PHPSA\Analyzer\Pass\Expression\FunctionCall;
4
5
use PhpParser\Node\Expr\FuncCall;
6
use PhpParser\Node\Name;
7
use PHPSA\Compiler\Expression;
8
use PHPSA\Context;
9
10
class DeprecatedFunctions extends AbstractFunctionCallAnalyzer
11
{
12
    protected $map = array(
13
        'datefmt_set_timezone_id' => ['5.5','IntlDateFormatter::setTimeZone()'],
14
        'define_syslog_variables' => ['5.3','_'],
15
        'set_magic_quotes_runtime' => ['5.3','_'],
16
        'set_socket_blocking' => ['5.3','_'],
17
        'ereg' => ['5.3','preg_match()'],
18
        'eregi' => ['5.3','preg_match()'],
19
        'ereg_replace' => ['5.3','preg_replace()'],
20
        'eregi_replace' => ['5.3','preg_replace()'],
21
        'split' => ['5.3','explode()'],
22
        'spliti' => ['5.3','preg_split()'],
23
        'sql_regcase' => ['5.3','preg_match()'],
24
        'session_is_registered' => ['5.3','$_SESSION'],
25
        'session_unregister' => ['5.3','$_SESSION'],
26
        'session_register' => ['5.3','$_SESSION'],
27
    );
28
29 6
    public function pass(FuncCall $funcCall, Context $context)
30
    {
31 6
        $functionName = $this->resolveFunctionName($funcCall, $context);
32 6
        if ($functionName && isset($this->map[$functionName])) {
33
            $context->notice(
34
                'deprecated.function',
35
                sprintf('%s() is deprecated since PHP %s. Use %s instead.', $functionName, $this->map[$functionName][0], $this->map[$functionName][1]),
36
                $funcCall
37
            );
38 6
        } elseif ($functionName && substr($functionName, 0, 6) === "mysql_") {
39
            $context->notice(
40
                'deprecated.function',
41
                sprintf('The MySQL Extension is deprecated since PHP 5.5. Use PDO instead.'),
42
                $funcCall
43
            );
44 6
        } elseif ($functionName && substr($functionName, 0, 7) === "mcrypt_") {
45
            $context->notice(
46
                'deprecated.function',
47
                sprintf('The Mcrypt Extension is deprecated since PHP 7.1. Use paragonie/halite instead.'),
48
                $funcCall
49
            );
50
        }
51 6
    }
52
}
53