From 87cf3a319527972203dfa8b51b38a72b941cf0b7 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Thu, 18 May 2017 08:33:10 +0200 Subject: [PATCH] TASK: Do not check all classname parts for extension name * As discussed in PR, fetch possible extension names and lookup only them, not all parts of class name. Relates: #44, !70 --- .../Typo3Update/Feature/FeaturesSupport.php | 5 +++ .../Feature/RemovedExtensionFeature.php | 33 ++++++++++++------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/Standards/Typo3Update/Feature/FeaturesSupport.php b/src/Standards/Typo3Update/Feature/FeaturesSupport.php index 26975c5..5eb06ec 100644 --- a/src/Standards/Typo3Update/Feature/FeaturesSupport.php +++ b/src/Standards/Typo3Update/Feature/FeaturesSupport.php @@ -21,12 +21,15 @@ namespace Typo3Update\Feature; */ use PHP_CodeSniffer_File as PhpCsFile; +use Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; /** * Provides "feature" support for sniffs. */ trait FeaturesSupport { + use ExtendedPhpCsSupportTrait; + /** * @return Features */ @@ -44,6 +47,8 @@ trait FeaturesSupport */ public function processFeatures(PhpCsFile $phpcsFile, $stackPtr, $content) { + $content = $this->getStringContent($content); + foreach ($this->getFeatures() as $featureClassName) { $feature = $this->createFeature($featureClassName); $feature->process($phpcsFile, $stackPtr, $content); diff --git a/src/Standards/Typo3Update/Feature/RemovedExtensionFeature.php b/src/Standards/Typo3Update/Feature/RemovedExtensionFeature.php index dce19fc..38d2e91 100644 --- a/src/Standards/Typo3Update/Feature/RemovedExtensionFeature.php +++ b/src/Standards/Typo3Update/Feature/RemovedExtensionFeature.php @@ -27,18 +27,8 @@ class RemovedExtensionFeature extends AbstractYamlRemovedUsage { public function process(PhpCsFile $phpcsFile, $classnamePosition, $classname) { - $classnameParts = array_filter(preg_split('/\\\\|_/', $classname)); - $extname = ''; - - foreach ($classnameParts as $classnamePart) { - $classnamePart = strtolower($classnamePart); - if ($this->configured->isRemoved($classnamePart) === true) { - $extname = $classnamePart; - break; - } - } - - if ($extname === '') { + $extname = $this->getExtnameFromClassname($classname); + if ($extname === '' || $this->configured->isRemoved($extname) === false) { return; } @@ -49,6 +39,25 @@ class RemovedExtensionFeature extends AbstractYamlRemovedUsage ); } + protected function getExtnameFromClassname($classname) + { + $classname = ltrim($classname, '\\'); + $classnameParts = array_filter(preg_split('/\\\\|_/', $classname)); + $classnameParts = array_values($classnameParts); // To reset key numbers of array. + $extname = ''; + + if (count($classnameParts) <= 2) { + return ''; + } + + $extname = $classnameParts[1]; + if (stripos($classname, 'TYPO3\CMS') === 0) { + $extname = $classnameParts[2]; + } + + return strtolower($extname); + } + protected function prepareStructure(array $typo3Versions) { $newStructure = [];