Completed
Pull Request — master (#190)
by
unknown
04:51
created

DeprecatedFunctions::pass()   B

Complexity

Conditions 5
Paths 5

Size

Total Lines 25
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

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