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 +