From 01eb087969ab4efeee78ba7b17f78935fb36c43e Mon Sep 17 00:00:00 2001 From: Jakub Date: Tue, 9 Oct 2018 11:18:48 +0100 Subject: [PATCH] feat: blacklist use of namespaces. ban use of Knp timestampable --- .../Usage/NamespaceOverwrittenSniff.php | 52 +++++++++++++++++++ Markup/ruleset.xml | 3 ++ 2 files changed, 55 insertions(+) create mode 100644 Markup/Sniffs/Usage/NamespaceOverwrittenSniff.php diff --git a/Markup/Sniffs/Usage/NamespaceOverwrittenSniff.php b/Markup/Sniffs/Usage/NamespaceOverwrittenSniff.php new file mode 100644 index 0000000..8152a79 --- /dev/null +++ b/Markup/Sniffs/Usage/NamespaceOverwrittenSniff.php @@ -0,0 +1,52 @@ + 'Knp\\DoctrineBehaviors\\Model\\Timestampable\\Timestampable', + 'require_use' => 'Phoenix\\Common\\Database\\Doctrine\\Entity\\Timestampable', + ], + ]; + + /** + * @return mixed[] + */ + public function register() + { + return [ + T_OPEN_TAG, + ]; + } + + /** + * @param \PHP_CodeSniffer\Files\File $phpcsFile + * @param int $openTagPointer + */ + public function process(File $phpcsFile, $openTagPointer) + { + $useStatements = UseStatementHelper::getUseStatements($phpcsFile, $openTagPointer); + + foreach ($useStatements as $useStatement) { + foreach (self::BLACKLIST_NAMESPACES as $namespace) { + if (stripos($useStatement->getFullyQualifiedTypeName(), $namespace['namespace']) !== false) { + $phpcsFile->addError( + sprintf( + "Class %s is overwritten, use %s instead", + $useStatement->getFullyQualifiedTypeName(), + $namespace['require_use'] + ), + $useStatement->getPointer(), + 'BlacklistedNamespace' + ); + } + } + } + } +} diff --git a/Markup/ruleset.xml b/Markup/ruleset.xml index e58a50b..79a92dc 100644 --- a/Markup/ruleset.xml +++ b/Markup/ruleset.xml @@ -38,6 +38,9 @@ + + error +