Skip to content

Commit 98f9b77

Browse files
committed
feat: prevent phoenix in next
1 parent 2150b9b commit 98f9b77

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Markup\Sniffs\Next;
5+
6+
use SlevomatCodingStandard\Helpers\ClassHelper;
7+
use SlevomatCodingStandard\Helpers\FunctionHelper;
8+
use SlevomatCodingStandard\Helpers\ReturnTypeHint;
9+
use SlevomatCodingStandard\Helpers\UseStatement;
10+
use SlevomatCodingStandard\Helpers\UseStatementHelper;
11+
12+
class PreventExposingPhoenixSniff implements \PHP_CodeSniffer\Sniffs\Sniff
13+
{
14+
private const NEXT_CODE_PATH = 'src/Next/';
15+
16+
private const BLACKLIST_NAMESPACES = [
17+
'Phoenix\\',
18+
];
19+
20+
/**
21+
* @return mixed[]
22+
*/
23+
public function register()
24+
{
25+
return [
26+
T_OPEN_TAG,
27+
];
28+
}
29+
30+
/**
31+
* @phpcsSuppress SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingParameterTypeHint
32+
* @param \PHP_CodeSniffer\Files\File $phpcsFile
33+
* @param int $openTagPointer
34+
*/
35+
public function process(\PHP_CodeSniffer\Files\File $phpcsFile, $openTagPointer)
36+
{
37+
if (stripos($phpcsFile->getFilename(), self::NEXT_CODE_PATH) === false) {
38+
return;
39+
}
40+
41+
$useStatements = UseStatementHelper::getUseStatements($phpcsFile, $openTagPointer);
42+
43+
$blacklist = self::BLACKLIST_NAMESPACES;
44+
45+
/** @var UseStatement $useStatement */
46+
foreach (array_shift($useStatements) ?? [] as $useStatement) {
47+
$found = false;
48+
49+
foreach ($blacklist as $namespace) {
50+
if (stripos($useStatement->getFullyQualifiedTypeName(), $namespace) !== false) {
51+
$statement = $useStatement->getFullyQualifiedTypeName();
52+
53+
$phpcsFile->addError(
54+
sprintf(
55+
'Next cannot be consuming Phoenix code',
56+
$useStatement->getFullyQualifiedTypeName()
57+
),
58+
$openTagPointer,
59+
'PhoenixUsed'
60+
);
61+
}
62+
}
63+
}
64+
}
65+
}

0 commit comments

Comments
 (0)