-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
Copy pathForbidExitRule.php
69 lines (63 loc) · 1.99 KB
/
ForbidExitRule.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
<?php
/**
* ---------------------------------------------------------------------
*
* GLPI - Gestionnaire Libre de Parc Informatique
*
* http://glpi-project.org
*
* @copyright 2015-2025 Teclib' and contributors.
* @licence https://www.gnu.org/licenses/gpl-3.0.html
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* ---------------------------------------------------------------------
*/
namespace Glpi\Tools\PHPStan;
use PhpParser\Node;
use PhpParser\Node\Expr\Exit_;
use PHPStan\Analyser\Scope;
use PHPStan\Rules\Rule;
use PHPStan\Rules\RuleErrorBuilder;
class ForbidExitRule implements Rule
{
public function getNodeType(): string
{
return Exit_::class;
}
public function processNode(Node $node, Scope $scope): array
{
$name = match ($node->getAttribute('kind')) {
Exit_::KIND_DIE => 'die',
Exit_::KIND_EXIT => 'exit',
default => 'die/exit',
};
return [
RuleErrorBuilder::message(
sprintf(
'You should not use the `%s` function. It prevents the execution of post-request/post-command routines.',
$name
)
)
->identifier('glpi.forbidExit')
->build()
];
}
}