/
CamelCaseVariableName.php
95 lines (85 loc) · 2.29 KB
/
CamelCaseVariableName.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
/**
* This file is part of PHP Mess Detector.
*
* Copyright (c) Manuel Pichler <mapi@phpmd.org>.
* All rights reserved.
*
* Licensed under BSD License
* For full copyright and license information, please see the LICENSE file.
* Redistributions of files must retain the above copyright notice.
*
* @author Manuel Pichler <mapi@phpmd.org>
* @copyright Manuel Pichler. All rights reserved.
* @license https://opensource.org/licenses/bsd-license.php BSD License
* @link http://phpmd.org/
*/
namespace PHPMD\Rule\Controversial;
use PHPMD\AbstractNode;
use PHPMD\AbstractRule;
use PHPMD\Rule\FunctionAware;
use PHPMD\Rule\MethodAware;
/**
* This rule class detects variables not named in camelCase.
*
* @author Francis Besset <francis.besset@gmail.com>
* @since 1.1.0
*/
class CamelCaseVariableName extends AbstractRule implements MethodAware, FunctionAware
{
/**
* @var array
*/
protected $exceptions = array(
'$php_errormsg',
'$http_response_header',
'$GLOBALS',
'$_SERVER',
'$_GET',
'$_POST',
'$_FILES',
'$_COOKIE',
'$_SESSION',
'$_REQUEST',
'$_ENV',
);
/**
* This method checks if a variable is not named in camelCase
* and emits a rule violation.
*
* @param \PHPMD\AbstractNode $node
* @return void
*/
public function apply(AbstractNode $node)
{
foreach ($node->findChildrenOfTypeVariable() as $variable) {
if (!$this->isValid($variable)) {
$this->addViolation(
$node,
array(
$variable->getImage(),
)
);
}
}
}
protected function isValid($variable)
{
$image = $variable->getImage();
if (in_array($image, $this->exceptions)) {
return true;
}
if ($this->getBooleanProperty('allow-underscore')) {
if (preg_match('/^\$[_]?[a-z][a-zA-Z0-9]*$/', $image)) {
return true;
}
}
if (preg_match('/^\$[a-z][a-zA-Z0-9]*$/', $image)) {
return true;
}
if ($variable->getParent()->isInstanceOf('PropertyPostfix')) {
return true;
}
return false;
}
}