From 94df1f2ad13a541497120cab594443da2ae05362 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 13:16:58 +0200 Subject: [PATCH] WIP: Fix use sniff * Make use sniff tests pass again. Relates: #72 --- .../Feature/LegacyClassnameFeature.php | 30 ++++++++++++++----- .../Typo3Update/Sniffs/Classname/UseSniff.php | 5 ---- .../Sniffs/Classname/UseSniff/Expected.diff | 2 +- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php index a052abf..72edd35 100644 --- a/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php +++ b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php @@ -44,6 +44,11 @@ class LegacyClassnameFeature implements FeatureInterface */ protected $legacyMapping; + /** + * @var PhpCsSniff + */ + protected $sniff; + /** * Used by some sniffs to keep original token for replacement. * @@ -53,8 +58,9 @@ class LegacyClassnameFeature implements FeatureInterface */ protected $originalTokenContent = ''; - public function __construct() + public function __construct(PhpCsSniff $sniff) { + $this->sniff = $sniff; $this->legacyMapping = LegacyClassnameMapping::getInstance(); } @@ -175,18 +181,14 @@ class LegacyClassnameFeature implements FeatureInterface * @param PhpCsFile $phpcsFile * @param int $classnamePosition * @param string $classname - * @param bool $forceEmptyPrefix Defines whether '\\' prefix should be checked or always be left out. - * - * @SuppressWarnings(PHPMD.BooleanArgumentFlag) */ protected function replaceLegacyClassname( PhpCsFile $phpcsFile, $classnamePosition, - $classname, - $forceEmptyPrefix = false + $classname ) { $prefix = '\\'; - if ($forceEmptyPrefix || $phpcsFile->getTokens()[$classnamePosition -1]['code'] === T_NS_SEPARATOR) { + if ($this->forceEmptyPrefix() || $phpcsFile->getTokens()[$classnamePosition -1]['code'] === T_NS_SEPARATOR) { $prefix = ''; } @@ -233,4 +235,18 @@ class LegacyClassnameFeature implements FeatureInterface return implode($stringSign, $token); } + + /** + * Check whether new class name for replacment should not contain the "\" as prefix. + * + * @return bool + */ + protected function forceEmptyPrefix() + { + if (get_class($this->sniff) === \Typo3Update_Sniffs_Classname_UseSniff::class) { + return true; + } + + return false; + } } diff --git a/src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php index 60e49ff..67c00e6 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php @@ -22,11 +22,6 @@ use PHP_CodeSniffer_File as PhpCsFile; use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Detect and migrate use statements with legacy classnames.. - * - * According to PSR-2, only one class per use statement is expected. - */ class Typo3Update_Sniffs_Classname_UseSniff extends AbstractClassnameChecker { /** diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.diff index 919696a..ff0098d 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/InputFileForIssues.php +++ PHP_CodeSniffer @@ -19,8 +19,8 @@ * 02110-1301, USA.