From 2f6dc2304a40e918f992c8d461d51eced75c9663 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 12:58:19 +0200 Subject: [PATCH 01/24] WIP: Refactor code to new architecture * Migrate class names. * Add new architecture of "Features". * Configure old assignments for new features. * Rename necessary parts. Relates: #72 --- .../Features/LegacyClassnames.yaml | 15 +++ .../LegacyClassnameFeature.php} | 95 ++++++------------- .../LegacyClassnameMapping.php} | 8 +- .../Typo3Update/FeatureInterface.php | 40 ++++++++ src/Standards/Typo3Update/Features.php | 69 ++++++++++++++ src/Standards/Typo3Update/FeaturesSupport.php | 53 +++++++++++ .../Typo3Update/{Sniffs => }/Options.php | 27 +++++- .../Classname/AbstractClassnameChecker.php | 77 +++++++++++++++ .../InheritanceSniff.php | 7 +- .../InlineCommentSniff.php | 6 +- .../InstanceofSniff.php | 4 +- .../InstantiationWithMakeInstanceSniff.php | 6 +- .../InstantiationWithNewSniff.php | 4 +- .../InstantiationWithObjectManagerSniff.php | 20 +--- .../IsACallSniff.php | 20 +--- .../MissingNamespaceSniff.php | 9 +- .../PhpDocCommentSniff.php} | 41 ++------ .../StaticCallSniff.php | 4 +- .../TypeHintCatchExceptionSniff.php | 4 +- .../TypeHintSniff.php | 6 +- .../UseSniff.php | 23 +---- ...MissingVendorForPluginsAndModulesSniff.php | 4 +- .../Sniffs/Removed/AbstractGenericUsage.php | 2 +- .../Removed/GenericConstantUsageSniff.php | 2 +- .../Removed/GenericFunctionCallSniff.php | 2 +- src/Standards/Typo3Update/ruleset.xml | 6 +- .../InheritanceSniff/Expected.diff | 0 .../InheritanceSniff/Expected.json | 12 +-- .../InheritanceSniff/InputFileForIssues.php | 0 .../InlineCommentSniff/Expected.diff | 0 .../InlineCommentSniff/Expected.json | 8 +- .../InlineCommentSniff/InputFileForIssues.php | 0 .../InstanceofSniff/Expected.diff | 0 .../InstanceofSniff/Expected.json | 2 +- .../InstanceofSniff/InputFileForIssues.php | 0 .../Expected.diff | 0 .../Expected.json | 2 +- .../InputFileForIssues.php | 0 .../InstantiationWithNewSniff/Expected.diff | 0 .../InstantiationWithNewSniff/Expected.json | 12 +-- .../InputFileForIssues.php | 0 .../Expected.diff | 0 .../Expected.json | 8 +- .../InputFileForIssues.php | 0 .../IsACallSniff/Expected.diff | 0 .../IsACallSniff/Expected.json | 4 +- .../IsACallSniff/InputFileForIssues.php | 0 .../MissingNamespaceSniff/Arguments.php | 0 .../customVendor/Expected.diff | 0 .../customVendor}/Expected.json | 2 +- .../customVendor/InputFileForIssues.php | 0 .../defaultVendor/Expected.diff | 0 .../defaultVendor}/Expected.json | 2 +- .../defaultVendor/InputFileForIssues.php | 0 .../PhpDocCommentSniff}/Expected.diff | 2 +- .../PhpDocCommentSniff}/Expected.json | 8 +- .../InputFileForIssues.php | 0 .../StaticCallSniff/Expected.diff | 0 .../StaticCallSniff/Expected.json | 12 +-- .../StaticCallSniff/InputFileForIssues.php | 0 .../TypeHintCatchExceptionSniff/Expected.diff | 0 .../TypeHintCatchExceptionSniff/Expected.json | 4 +- .../InputFileForIssues.php | 0 .../TypeHintSniff/Expected.diff | 0 .../TypeHintSniff/Expected.json | 12 +-- .../TypeHintSniff/InputFileForIssues.php | 0 .../UseSniff/Expected.diff | 0 .../UseSniff/Expected.json | 4 +- .../UseSniff/InputFileForIssues.php | 0 .../Arguments.php | 0 .../customVendor/Expected.diff | 0 .../customVendor/Expected.json | 12 +-- .../customVendor/InputFileForIssues.php | 0 .../defaultVendor/Expected.diff | 0 .../defaultVendor/Expected.json | 12 +-- .../defaultVendor/InputFileForIssues.php | 0 76 files changed, 419 insertions(+), 253 deletions(-) create mode 100644 src/Standards/Typo3Update/Configuration/Features/LegacyClassnames.yaml rename src/Standards/Typo3Update/{Sniffs/LegacyClassnames/AbstractClassnameChecker.php => Feature/LegacyClassnameFeature.php} (77%) rename src/Standards/Typo3Update/{Sniffs/LegacyClassnames/Mapping.php => Feature/LegacyClassnameMapping.php} (95%) create mode 100644 src/Standards/Typo3Update/FeatureInterface.php create mode 100644 src/Standards/Typo3Update/Features.php create mode 100644 src/Standards/Typo3Update/FeaturesSupport.php rename src/Standards/Typo3Update/{Sniffs => }/Options.php (82%) create mode 100644 src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InheritanceSniff.php (92%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InlineCommentSniff.php (92%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstanceofSniff.php (87%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithMakeInstanceSniff.php (91%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithNewSniff.php (86%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithObjectManagerSniff.php (77%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/IsACallSniff.php (75%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/MissingNamespaceSniff.php (93%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames/DocCommentSniff.php => Classname/PhpDocCommentSniff.php} (64%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/StaticCallSniff.php (89%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/TypeHintCatchExceptionSniff.php (86%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/TypeHintSniff.php (89%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/UseSniff.php (60%) rename src/Standards/Typo3Update/Sniffs/{LegacyClassnames => LegacyClassname}/MissingVendorForPluginsAndModulesSniff.php (96%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InheritanceSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InheritanceSniff/Expected.json (82%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InheritanceSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InlineCommentSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InlineCommentSniff/Expected.json (83%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InlineCommentSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstanceofSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstanceofSniff/Expected.json (87%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstanceofSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithMakeInstanceSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithMakeInstanceSniff/Expected.json (85%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithMakeInstanceSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithNewSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithNewSniff/Expected.json (81%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithNewSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithObjectManagerSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithObjectManagerSniff/Expected.json (80%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/InstantiationWithObjectManagerSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/IsACallSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/IsACallSniff/Expected.json (84%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/IsACallSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/MissingNamespaceSniff/Arguments.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/MissingNamespaceSniff/customVendor/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames/MissingNamespaceSniff/defaultVendor => Classname/MissingNamespaceSniff/customVendor}/Expected.json (86%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/MissingNamespaceSniff/customVendor/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/MissingNamespaceSniff/defaultVendor/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames/MissingNamespaceSniff/customVendor => Classname/MissingNamespaceSniff/defaultVendor}/Expected.json (86%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/MissingNamespaceSniff/defaultVendor/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames/DocCommentSniff => Classname/PhpDocCommentSniff}/Expected.diff (89%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames/DocCommentSniff => Classname/PhpDocCommentSniff}/Expected.json (83%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames/DocCommentSniff => Classname/PhpDocCommentSniff}/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/StaticCallSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/StaticCallSniff/Expected.json (82%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/StaticCallSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/TypeHintCatchExceptionSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/TypeHintCatchExceptionSniff/Expected.json (82%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/TypeHintCatchExceptionSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/TypeHintSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/TypeHintSniff/Expected.json (83%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/TypeHintSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/UseSniff/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/UseSniff/Expected.json (86%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => Classname}/UseSniff/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => LegacyClassname}/MissingVendorForPluginsAndModulesSniff/Arguments.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => LegacyClassname}/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => LegacyClassname}/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.json (79%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => LegacyClassname}/MissingVendorForPluginsAndModulesSniff/customVendor/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => LegacyClassname}/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.diff (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => LegacyClassname}/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.json (79%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{LegacyClassnames => LegacyClassname}/MissingVendorForPluginsAndModulesSniff/defaultVendor/InputFileForIssues.php (100%) diff --git a/src/Standards/Typo3Update/Configuration/Features/LegacyClassnames.yaml b/src/Standards/Typo3Update/Configuration/Features/LegacyClassnames.yaml new file mode 100644 index 0000000..c510db2 --- /dev/null +++ b/src/Standards/Typo3Update/Configuration/Features/LegacyClassnames.yaml @@ -0,0 +1,15 @@ +Typo3Update\Feature\LegacyClassnameFeature: + - Typo3Update_Sniffs_Classname_InheritanceSniff + - Typo3Update_Sniffs_Classname_InlineCommentSniff + - Typo3Update_Sniffs_Classname_InstanceofSniff + - Typo3Update_Sniffs_Classname_InstantiationWithMakeInstanceSniff + - Typo3Update_Sniffs_Classname_InstantiationWithNewSniff + - Typo3Update_Sniffs_Classname_InstantiationWithObjectManagerSniff + - Typo3Update_Sniffs_Classname_IsACallSniff + - Typo3Update_Sniffs_Classname_MissingNamespaceSniff + - Typo3Update_Sniffs_Classname_MissingVendorForPluginsAndModulesSniff + - Typo3Update_Sniffs_Classname_PhpDocCommentSniff + - Typo3Update_Sniffs_Classname_StaticCallSniff + - Typo3Update_Sniffs_Classname_TypeHintCatchExceptionSniff + - Typo3Update_Sniffs_Classname_TypeHintSniff + - Typo3Update_Sniffs_Classname_UseSniff diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/AbstractClassnameChecker.php b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php similarity index 77% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/AbstractClassnameChecker.php rename to src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php index 76c3cfe..70b5cf5 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/AbstractClassnameChecker.php +++ b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php @@ -1,5 +1,5 @@ @@ -23,12 +23,13 @@ namespace Typo3Update\Sniffs\LegacyClassnames; use PHP_CodeSniffer as PhpCs; use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Sniff as PhpCsSniff; -use Typo3Update\Sniffs\LegacyClassnames\Mapping; +use Typo3Update\FeatureInterface; +use Typo3Update\Feature\LegacyClassnameMapping; /** - * Provide common uses for all sniffs, regarding class name checks. + * */ -abstract class AbstractClassnameChecker implements PhpCsSniff +class LegacyClassnameFeature implements FeatureInterface { /** * A list of extension names that might contain legacy class names. @@ -41,7 +42,7 @@ abstract class AbstractClassnameChecker implements PhpCsSniff public $legacyExtensions = ['Extbase', 'Fluid']; /** - * @var Mapping + * @var LegacyClassnameMapping */ protected $legacyMapping; @@ -56,51 +57,37 @@ abstract class AbstractClassnameChecker implements PhpCsSniff public function __construct() { - $this->legacyMapping = Mapping::getInstance(); + $this->legacyMapping = LegacyClassnameMapping::getInstance(); } /** - * Define whether the T_STRING default behaviour should be checked before - * or after the $stackPtr. + * Process like a PHPCS Sniff. * - * @return bool - */ - protected function shouldLookBefore() - { - return false; - } - - /** - * Processes the tokens that this sniff is interested in. - * - * This is the default implementation, as most of the time next T_STRING is - * the class name. This way only the register method has to be registered - * in default cases. - * - * @param PhpCsFile $phpcsFile The file where the token was found. - * @param int $stackPtr The position in the stack where - * the token was found. + * @param PhpCsFile $phpcsFile + * @param int $classnamePosition + * @param string $classname * * @return void - * - * @SuppressWarnings(PHPMD.ElseExpression) This is for performance reason. */ - public function process(PhpCsFile $phpcsFile, $stackPtr) + public function process(PhpCsFile $phpcsFile, $classnamePosition, $classname) { - $tokens = $phpcsFile->getTokens(); + $classname = trim($classname, '\\\'"'); // Remove trailing slash, and quotes. + $this->addMaybeWarning($phpcsFile, $classnamePosition, $classname); - if ($this->shouldLookBefore()) { - $classnamePosition = $phpcsFile->findPrevious(T_STRING, $stackPtr); - } else { - $classnamePosition = $phpcsFile->findNext(T_STRING, $stackPtr); - } - - if ($classnamePosition === false) { + if ($this->isLegacyClassname($classname) === false) { return; } - $classname = $tokens[$classnamePosition]['content']; - $this->addFixableError($phpcsFile, $classnamePosition, $classname); + $fix = $phpcsFile->addFixableError( + 'Legacy classes are not allowed; found "%s", use "%s" instead', + $classnamePosition, + 'legacyClassname', + [$classname, $this->getNewClassname($classname)] + ); + + if ($fix === true) { + $this->replaceLegacyClassname($phpcsFile, $classnamePosition, $classname); + } } /** @@ -122,7 +109,7 @@ abstract class AbstractClassnameChecker implements PhpCsSniff * @param string $classname * @return bool */ - private function isMaybeLegacyClassname($classname) + protected function isMaybeLegacyClassname($classname) { if (strpos($classname, 'Tx_') === false) { return false; @@ -163,34 +150,6 @@ abstract class AbstractClassnameChecker implements PhpCsSniff $this->legacyMapping->addLegacyClassname($legacyClassname, $newClassname); } - /** - * Add an fixable error if given $classname is legacy. - * - * @param PhpCsFile $phpcsFile - * @param int $classnamePosition - * @param string $classname - */ - public function addFixableError(PhpCsFile $phpcsFile, $classnamePosition, $classname) - { - $classname = trim($classname, '\\\'"'); // Remove trailing slash, and quotes. - $this->addMaybeWarning($phpcsFile, $classnamePosition, $classname); - - if ($this->isLegacyClassname($classname) === false) { - return; - } - - $fix = $phpcsFile->addFixableError( - 'Legacy classes are not allowed; found "%s", use "%s" instead', - $classnamePosition, - 'legacyClassname', - [$classname, $this->getNewClassname($classname)] - ); - - if ($fix === true) { - $this->replaceLegacyClassname($phpcsFile, $classnamePosition, $classname); - } - } - /** * Add an warning if given $classname is maybe legacy. * @@ -198,7 +157,7 @@ abstract class AbstractClassnameChecker implements PhpCsSniff * @param int $classnamePosition * @param string $classname */ - private function addMaybeWarning(PhpCsFile $phpcsFile, $classnamePosition, $classname) + protected function addMaybeWarning(PhpCsFile $phpcsFile, $classnamePosition, $classname) { if ($this->isLegacyClassname($classname) || $this->isMaybeLegacyClassname($classname) === false) { return; diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/Mapping.php b/src/Standards/Typo3Update/Feature/LegacyClassnameMapping.php similarity index 95% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/Mapping.php rename to src/Standards/Typo3Update/Feature/LegacyClassnameMapping.php index 685dec6..a2eacf6 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/Mapping.php +++ b/src/Standards/Typo3Update/Feature/LegacyClassnameMapping.php @@ -1,5 +1,5 @@ @@ -20,7 +20,7 @@ namespace Typo3Update\Sniffs\LegacyClassnames; * 02110-1301, USA. */ -use Typo3Update\Sniffs\Options; +use Typo3Update\Options; /** * Singleton wrapper for mappings. @@ -28,7 +28,7 @@ use Typo3Update\Sniffs\Options; * Will check the configured file for whether a class is legacy and provides further methods. * Also can update to add new migrated class names. */ -final class Mapping +final class LegacyClassnameMapping { // Singleton implementation - Start static protected $instance = null; @@ -40,7 +40,7 @@ final class Mapping public static function getInstance() { if (static::$instance === null) { - static::$instance = new Mapping(); + static::$instance = new LegacyClassnameMapping(); } return static::$instance; diff --git a/src/Standards/Typo3Update/FeatureInterface.php b/src/Standards/Typo3Update/FeatureInterface.php new file mode 100644 index 0000000..ed73e55 --- /dev/null +++ b/src/Standards/Typo3Update/FeatureInterface.php @@ -0,0 +1,40 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +use PHP_CodeSniffer_File as PhpCsFile; + +/** + * + */ +interface FeatureInterface +{ + /** + * Process like a PHPCS Sniff. + * + * @param PhpCsFile $phpcsFile The current PhpCsFile working with. + * @param int $stackPtr The current stack pointer. + * @param string $content The content detected to work with. + * + * @return void + */ + public function process(PhpCsFile $phpcsFile, $stackPtr, $content); +} diff --git a/src/Standards/Typo3Update/Features.php b/src/Standards/Typo3Update/Features.php new file mode 100644 index 0000000..1927ffc --- /dev/null +++ b/src/Standards/Typo3Update/Features.php @@ -0,0 +1,69 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +use PHP_CodeSniffer_Sniff as PhpCsSniff; + +/** + * + */ +class Features implements \Iterator +{ + protected $index = 0; + protected $features = []; + + public function __construct(PhpCsSniff $sniff) + { + foreach (Options::getFeaturesConfiguration() as $featureName => $sniffs) { + if (in_array(get_class($sniff), $sniffs)) { + if (!class_implements($featureName, FeatureInterface::class)) { + throw new \Exception( + 'Configured Feature "' . $featureName . '" does not implement "' . FeatureInterface::class . '".', + 1493115488 + ); + } + $this->features[] = $featureName; + } + } + } + + // implement Iterator interface: + public function current() + { + return $this->features[$this->index]; + } + public function key() + { + return $this->index; + } + public function next() + { + ++$this->index; + } + public function rewind() + { + $this->index = 0; + } + public function valid() + { + return isset($this->features[$this->index]); + } +} diff --git a/src/Standards/Typo3Update/FeaturesSupport.php b/src/Standards/Typo3Update/FeaturesSupport.php new file mode 100644 index 0000000..183f017 --- /dev/null +++ b/src/Standards/Typo3Update/FeaturesSupport.php @@ -0,0 +1,53 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +use PHP_CodeSniffer_File as PhpCsFile; +use Typo3Update\Features; + +/** + * Provides "feature" support for sniff. + */ +trait FeaturesSupport +{ + /** + * @var Features + */ + protected $features; + + public function __construct() + { + $this->features = new Features($this); + } + + public function processFeatures(PhpCsFile $phpcsFile, $stackPtr, $content) + { + foreach ($this->features as $featureClassName) { + $feature = $this->createFeature($featureClassName); + $feature->process($phpcsFile, $stackPtr, $content); + } + } + + protected function createFeature($featureClassname) + { + return new $featureClassname($this); + } +} diff --git a/src/Standards/Typo3Update/Sniffs/Options.php b/src/Standards/Typo3Update/Options.php similarity index 82% rename from src/Standards/Typo3Update/Sniffs/Options.php rename to src/Standards/Typo3Update/Options.php index c6b5ba7..6aba777 100644 --- a/src/Standards/Typo3Update/Sniffs/Options.php +++ b/src/Standards/Typo3Update/Options.php @@ -1,5 +1,5 @@ @@ -21,6 +21,7 @@ namespace Typo3Update\Sniffs; */ use PHP_CodeSniffer as PhpCs; +use Symfony\Component\Yaml\Yaml; /** * Wrapper to retrieve options from PhpCs with defaults. @@ -51,7 +52,7 @@ class Options { return (string) static::getOptionWithDefault( 'mappingFile', - __DIR__ . '/../../../../LegacyClassnames.php' + __DIR__ . '/../../../LegacyClassnames.php' ); } @@ -64,7 +65,7 @@ class Options { return static::getOptionFileNames( 'removedFunctionConfigFiles', - __DIR__ . '/../Configuration/Removed/Functions/*.yaml' + __DIR__ . '/Configuration/Removed/Functions/*.yaml' ); } @@ -77,7 +78,7 @@ class Options { return static::getOptionFileNames( 'removedConstantConfigFiles', - __DIR__ . '/../Configuration/Removed/Constants/*.yaml' + __DIR__ . '/Configuration/Removed/Constants/*.yaml' ); } @@ -99,6 +100,24 @@ class Options return $option; } + public static function getFeaturesConfiguration() + { + $option = []; + $fileNames = static::getOptionFileNames( + 'features', + __DIR__ . '/Configuration/Features/*.yaml' + ); + + foreach ($fileNames as $file) { + $option = array_merge( + $option, + Yaml::parse(file_get_contents((string) $file)) + ); + } + + return $option; + } + /** * Get file names defined by option using optionName, if not defined, use default. * diff --git a/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php b/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php new file mode 100644 index 0000000..7bc96b2 --- /dev/null +++ b/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php @@ -0,0 +1,77 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +use PHP_CodeSniffer_File as PhpCsFile; +use PHP_CodeSniffer_Sniff as PhpCsSniff; +use Typo3Update\FeaturesSupport; + +/** + * Provide common uses for all sniffs, regarding class name checks. + */ +abstract class AbstractClassnameChecker implements PhpCsSniff +{ + use FeaturesSupport; + + /** + * Define whether the T_STRING default behaviour should be checked before + * or after the $stackPtr. + * + * @return bool + */ + protected function shouldLookBefore() + { + return false; + } + + /** + * Processes the tokens that this sniff is interested in. + * + * This is the default implementation, as most of the time next T_STRING is + * the class name. This way only the register method has to be registered + * in default cases. + * + * @param PhpCsFile $phpcsFile The file where the token was found. + * @param int $stackPtr The position in the stack where + * the token was found. + * + * @return void + * + * @SuppressWarnings(PHPMD.ElseExpression) This is for performance reason. + */ + public function process(PhpCsFile $phpcsFile, $stackPtr) + { + $tokens = $phpcsFile->getTokens(); + + if ($this->shouldLookBefore()) { + $classnamePosition = $phpcsFile->findPrevious(T_STRING, $stackPtr); + } else { + $classnamePosition = $phpcsFile->findNext(T_STRING, $stackPtr); + } + + if ($classnamePosition === false) { + return; + } + + $classname = $tokens[$classnamePosition]['content']; + $this->processFeatures($phpcsFile, $classnamePosition, $classname); + } +} diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php similarity index 92% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php index 59c9dd3..aa5f134 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php @@ -20,12 +20,12 @@ */ use PHP_CodeSniffer_File as PhpCsFile; -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Detect and migrate extend and implement of old legacy classnames. */ -class Typo3Update_Sniffs_LegacyClassnames_InheritanceSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_InheritanceSniff extends AbstractClassnameChecker { /** * Returns the token types that this sniff is interested in. @@ -79,6 +79,7 @@ class Typo3Update_Sniffs_LegacyClassnames_InheritanceSniff extends AbstractClass } foreach ($interfaces as $interface) { + // TODO: Migrate if (! $this->isLegacyClassname($interface)) { continue; } @@ -88,7 +89,7 @@ class Typo3Update_Sniffs_LegacyClassnames_InheritanceSniff extends AbstractClass continue; } - $this->addFixableError($phpcsFile, $position, $interface); + $this->processFeatures($phpcsFile, $position, $interface); } } } diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff.php similarity index 92% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff.php index 0877989..7f1b58c 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff.php @@ -20,12 +20,12 @@ */ use PHP_CodeSniffer_File as PhpCsFile; -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Migrate PHP inline comments, e.g. for IDEs. */ -class Typo3Update_Sniffs_LegacyClassnames_InlineCommentSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_InlineCommentSniff extends AbstractClassnameChecker { /** * Returns the token types that this sniff is interested in. @@ -59,7 +59,7 @@ class Typo3Update_Sniffs_LegacyClassnames_InlineCommentSniff extends AbstractCla return; } - $this->addFixableError($phpcsFile, $stackPtr, $commentParts[$this->getClassnamePosition($commentParts)]); + $this->processFeatures($phpcsFile, $stackPtr, $commentParts[$this->getClassnamePosition($commentParts)]); } /** diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff.php similarity index 87% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff.php index b261922..07fd90a 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff.php @@ -19,12 +19,12 @@ * 02110-1301, USA. */ -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Detect and migrate instanceof checks of old legacy classnames. */ -class Typo3Update_Sniffs_LegacyClassnames_InstanceofSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_InstanceofSniff extends AbstractClassnameChecker { /** * Returns the token types that this sniff is interested in. diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php similarity index 91% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php index bcb33d5..ee71469 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php @@ -21,12 +21,12 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Tokens as Tokens; -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Detect and migrate instantiations of old legacy classnames using "makeInstance". */ -class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithMakeInstanceSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_InstantiationWithMakeInstanceSniff extends AbstractClassnameChecker { use \Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; @@ -67,7 +67,7 @@ class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithMakeInstanceSniff ext $classname = $tokens[$classnamePosition]['content']; $this->originalTokenContent = $tokens[$classnamePosition]['content']; - $this->addFixableError($phpcsFile, $classnamePosition, $classname); + $this->processFeatures($phpcsFile, $classnamePosition, $classname); } /** diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff.php similarity index 86% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff.php index 9a1758e..be836f5 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff.php @@ -19,12 +19,12 @@ * 02110-1301, USA. */ -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Detect and migrate old legacy classnames instantiations using phps "new". */ -class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithNewSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_InstantiationWithNewSniff extends AbstractClassnameChecker { /** * Returns the token types that this sniff is interested in. diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff.php similarity index 77% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff.php index aa1d055..14afa1e 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff.php @@ -21,12 +21,12 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Tokens as Tokens; -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Detect and migrate old legacy classname instantiations using objectmanager create and get. */ -class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithObjectManagerSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_InstantiationWithObjectManagerSniff extends AbstractClassnameChecker { use \Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; @@ -80,20 +80,6 @@ class Typo3Update_Sniffs_LegacyClassnames_InstantiationWithObjectManagerSniff ex } $classname = $tokens[$classnamePosition]['content']; - $this->originalTokenContent = $tokens[$classnamePosition]['content']; - $this->addFixableError($phpcsFile, $classnamePosition, $classname); - } - - /** - * As token contains more then just class name, we have to build new content ourself. - * - * @param string $newClassname - * @param string $originalClassname - * @param PhpCsFile $phpcsFile - * @return string - */ - protected function getTokenForReplacement($newClassname, $originalClassname, PhpCsFile $phpcsFile) - { - return $this->getTokenReplacementForString($newClassname); + $this->processFeatures($phpcsFile, $classnamePosition, $classname); } } diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/IsACallSniff.php similarity index 75% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/IsACallSniff.php index 62e90a9..06ac05c 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/IsACallSniff.php @@ -20,12 +20,12 @@ */ use PHP_CodeSniffer_File as PhpcsFile; -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Detect and migrate instantiations of old legacy classnames using "makeInstance". */ -class Typo3Update_Sniffs_LegacyClassnames_IsACallSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_IsACallSniff extends AbstractClassnameChecker { use \Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; @@ -69,20 +69,6 @@ class Typo3Update_Sniffs_LegacyClassnames_IsACallSniff extends AbstractClassname } $classname = $tokens[$classnamePosition]['content']; - $this->originalTokenContent = $tokens[$classnamePosition]['content']; - $this->addFixableError($phpcsFile, $classnamePosition, $classname); - } - - /** - * As token contains more then just class name, we have to build new content ourself. - * - * @param string $newClassname - * @param string $originalClassname - * @param PhpCsFile $phpcsFile - * @return string - */ - protected function getTokenForReplacement($newClassname, $originalClassname, PhpCsFile $phpcsFile) - { - return $this->getTokenReplacementForString($newClassname); + $this->processFeatures($phpcsFile, $classnamePosition, $classname); } } diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff.php similarity index 93% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff.php index 8e97c45..1c18232 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff.php @@ -20,13 +20,13 @@ */ use PHP_CodeSniffer_File as PhpCsFile; -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; -use Typo3Update\Sniffs\Options; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; +use Typo3Update\Options; /** * Detect missing namespaces for class definitions. */ -class Typo3Update_Sniffs_LegacyClassnames_MissingNamespaceSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_MissingNamespaceSniff extends AbstractClassnameChecker { /** * Returns the token types that this sniff is interested in. @@ -66,7 +66,8 @@ class Typo3Update_Sniffs_LegacyClassnames_MissingNamespaceSniff extends Abstract } $classname = $tokens[$classnamePosition]['content']; - $this->addFixableError($phpcsFile, $classnamePosition, $classname); + // TODO: Migrate class, use custom feature as some parts are different! + // $this->addFixableError($phpcsFile, $classnamePosition, $classname); } /** diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff.php similarity index 64% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff.php index 14efb72..80a9818 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff.php @@ -20,15 +20,20 @@ */ use PHP_CodeSniffer_File as PhpCsFile; -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use PHP_CodeSniffer_Sniff as PhpCsSniff; +use Typo3Update\FeaturesSupport; /** - * Migrate PHP Doc comments. + * Handle PHP Doc comments. * * E.g. annotations like @param or @return, see $allowedTags. + * + * Will do nothing itself, but call features. */ -class Typo3Update_Sniffs_LegacyClassnames_DocCommentSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_PhpDocCommentSniff implements PhpCsSniff { + use FeaturesSupport; + /** * The configured tags will be processed. * @var array @@ -42,9 +47,7 @@ class Typo3Update_Sniffs_LegacyClassnames_DocCommentSniff extends AbstractClassn */ public function register() { - return [ - T_DOC_COMMENT_TAG, - ]; + return [T_DOC_COMMENT_TAG]; } /** @@ -68,32 +71,8 @@ class Typo3Update_Sniffs_LegacyClassnames_DocCommentSniff extends AbstractClassn } $classnames = explode('|', explode(' ', $tokens[$classnamePosition]['content'])[0]); - $this->originalTokenContent = $tokens[$classnamePosition]['content']; foreach ($classnames as $classname) { - $this->addFixableError($phpcsFile, $classnamePosition, $classname); + $this->processFeatures($phpcsFile, $classnamePosition, $classname); } } - - /** - * As token contains more then just class name, we have to build new content ourself. - * - * @param string $newClassname - * @param string $originalClassname - * @param PhpCsFile $phpcsFile - * @return string - */ - protected function getTokenForReplacement($newClassname, $originalClassname, PhpCsFile $phpcsFile) - { - $token = explode(' ', $this->originalTokenContent); - - $classNames = explode('|', $token[0]); - foreach ($classNames as $position => $classname) { - if ($classname === $originalClassname) { - $classNames[$position] = $newClassname; - } - } - $token[0] = implode('|', $classNames); - - return implode(' ', $token); - } } diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/StaticCallSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff.php similarity index 89% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/StaticCallSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff.php index 1be8982..7e99447 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/StaticCallSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff.php @@ -19,12 +19,12 @@ * 02110-1301, USA. */ -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Detect and migrate static calls to old legacy classnames. */ -class Typo3Update_Sniffs_LegacyClassnames_StaticCallSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_StaticCallSniff extends AbstractClassnameChecker { /** * Define whether the T_STRING default behaviour should be checked before diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintCatchExceptionSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php similarity index 86% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintCatchExceptionSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php index 876aec8..1313616 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintCatchExceptionSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php @@ -19,12 +19,12 @@ * 02110-1301, USA. */ -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Migrate Typehints in catch statements. */ -class Typo3Update_Sniffs_LegacyClassnames_TypehintCatchExceptionSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_TypehintCatchExceptionSniff extends AbstractClassnameChecker { /** * Returns the token types that this sniff is interested in. diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php similarity index 89% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php index 3901309..224554c 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php @@ -20,12 +20,12 @@ */ use PHP_CodeSniffer_File as PhpCsFile; -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Migrate Typehints in function / method definitions. */ -class Typo3Update_Sniffs_LegacyClassnames_TypehintSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_TypehintSniff extends AbstractClassnameChecker { /** * Returns the token types that this sniff is interested in. @@ -58,7 +58,7 @@ class Typo3Update_Sniffs_LegacyClassnames_TypehintSniff extends AbstractClassnam if ($position === false) { continue; } - $this->addFixableError($phpcsFile, $position, $parameter['type_hint']); + $this->processFeatures($phpcsFile, $position, $parameter['type_hint']); } } } diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php similarity index 60% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff.php rename to src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php index bed18bc..60e49ff 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php @@ -20,14 +20,14 @@ */ use PHP_CodeSniffer_File as PhpCsFile; -use Typo3Update\Sniffs\LegacyClassnames\AbstractClassnameChecker; +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_LegacyClassnames_UseSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_UseSniff extends AbstractClassnameChecker { /** * Returns the token types that this sniff is interested in. @@ -38,23 +38,4 @@ class Typo3Update_Sniffs_LegacyClassnames_UseSniff extends AbstractClassnameChec { return [T_USE]; } - - /** - * Overwrite to remove prefix. - * - * @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 = true - ) { - return parent::replaceLegacyClassname($phpcsFile, $classnamePosition, $classname, $forceEmptyPrefix); - } } diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff.php b/src/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff.php similarity index 96% rename from src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff.php rename to src/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff.php index 7df07fc..057f197 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff.php +++ b/src/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff.php @@ -22,12 +22,12 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Sniff as PhpCsSniff; use PHP_CodeSniffer_Tokens as Tokens; -use Typo3Update\Sniffs\Options; +use Typo3Update\Options; /** * Detect whether vendor is missing for plugins and modules registrations and configurations. */ -class Typo3Update_Sniffs_LegacyClassnames_MissingVendorForPluginsAndModulesSniff implements PhpCsSniff +class Typo3Update_Sniffs_LegacyClassname_MissingVendorForPluginsAndModulesSniff implements PhpCsSniff { use \Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; diff --git a/src/Standards/Typo3Update/Sniffs/Removed/AbstractGenericUsage.php b/src/Standards/Typo3Update/Sniffs/Removed/AbstractGenericUsage.php index 13697f0..53f28a5 100644 --- a/src/Standards/Typo3Update/Sniffs/Removed/AbstractGenericUsage.php +++ b/src/Standards/Typo3Update/Sniffs/Removed/AbstractGenericUsage.php @@ -24,7 +24,7 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Sniff as PhpCsSniff; use PHP_CodeSniffer_Tokens as Tokens; use Symfony\Component\Yaml\Yaml; -use Typo3Update\Sniffs\Options; +use Typo3Update\Options; /** * Contains common functionality for removed code like constants or functions. diff --git a/src/Standards/Typo3Update/Sniffs/Removed/GenericConstantUsageSniff.php b/src/Standards/Typo3Update/Sniffs/Removed/GenericConstantUsageSniff.php index e99a226..1ee46b1 100644 --- a/src/Standards/Typo3Update/Sniffs/Removed/GenericConstantUsageSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Removed/GenericConstantUsageSniff.php @@ -21,7 +21,7 @@ use PHP_CodeSniffer_File as PhpCsFile; use Typo3Update\Sniffs\Removed\AbstractGenericUsage; -use Typo3Update\Sniffs\Options; +use Typo3Update\Options; /** * Sniff that handles all calls to removed constants. diff --git a/src/Standards/Typo3Update/Sniffs/Removed/GenericFunctionCallSniff.php b/src/Standards/Typo3Update/Sniffs/Removed/GenericFunctionCallSniff.php index 7f8b730..4124eb2 100644 --- a/src/Standards/Typo3Update/Sniffs/Removed/GenericFunctionCallSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Removed/GenericFunctionCallSniff.php @@ -22,7 +22,7 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Tokens as Tokens; use Typo3Update\Sniffs\Removed\AbstractGenericUsage; -use Typo3Update\Sniffs\Options; +use Typo3Update\Options; /** * Sniff that handles all calls to removed functions. diff --git a/src/Standards/Typo3Update/ruleset.xml b/src/Standards/Typo3Update/ruleset.xml index 260cadb..2cc04d2 100644 --- a/src/Standards/Typo3Update/ruleset.xml +++ b/src/Standards/Typo3Update/ruleset.xml @@ -2,18 +2,18 @@ Provides sniffs and fixes for TYPO3 Updates. - + - + - + Legacy class definitions are not allowed; found "%s". Wrap your class inside a namespace. diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.json similarity index 82% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.json index 9b17ce4..e441162 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.json @@ -9,7 +9,7 @@ "line": 22, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Configuration_Configurationmanager\", use \"TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.Inheritance.legacyClassname", + "source": "Typo3Update.Classname.Inheritance.legacyClassname", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 22, "message": "Legacy classes are not allowed; found \"t3lib_Singleton\", use \"TYPO3\\CMS\\Core\\SingletonInterface\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.Inheritance.legacyClassname", + "source": "Typo3Update.Classname.Inheritance.legacyClassname", "type": "ERROR" }, { @@ -27,7 +27,7 @@ "line": 22, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Core_BootstrapInterface\", use \"TYPO3\\CMS\\Extbase\\Core\\BootstrapInterface\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.Inheritance.legacyClassname", + "source": "Typo3Update.Classname.Inheritance.legacyClassname", "type": "ERROR" }, { @@ -36,7 +36,7 @@ "line": 27, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Configuration_Configurationmanager\", use \"TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.Inheritance.legacyClassname", + "source": "Typo3Update.Classname.Inheritance.legacyClassname", "type": "ERROR" }, { @@ -45,7 +45,7 @@ "line": 28, "message": "Legacy classes are not allowed; found \"t3lib_Singleton\", use \"TYPO3\\CMS\\Core\\SingletonInterface\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.Inheritance.legacyClassname", + "source": "Typo3Update.Classname.Inheritance.legacyClassname", "type": "ERROR" }, { @@ -54,7 +54,7 @@ "line": 29, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Core_BootstrapInterface\", use \"TYPO3\\CMS\\Extbase\\Core\\BootstrapInterface\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.Inheritance.legacyClassname", + "source": "Typo3Update.Classname.Inheritance.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.json similarity index 83% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.json index b1c0d31..2a6f3ab 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.json @@ -9,7 +9,7 @@ "line": 26, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InlineComment.legacyClassname", + "source": "Typo3Update.Classname.InlineComment.legacyClassname", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 29, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InlineComment.legacyClassname", + "source": "Typo3Update.Classname.InlineComment.legacyClassname", "type": "ERROR" }, { @@ -27,7 +27,7 @@ "line": 32, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InlineComment.legacyClassname", + "source": "Typo3Update.Classname.InlineComment.legacyClassname", "type": "ERROR" }, { @@ -36,7 +36,7 @@ "line": 35, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InlineComment.legacyClassname", + "source": "Typo3Update.Classname.InlineComment.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.json similarity index 87% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.json index 33aca48..2cb2586 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.json @@ -9,7 +9,7 @@ "line": 22, "message": "Legacy classes are not allowed; found \"t3lib_Singleton\", use \"TYPO3\\CMS\\Core\\SingletonInterface\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.Instanceof.legacyClassname", + "source": "Typo3Update.Classname.Instanceof.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.json similarity index 85% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.json index d7f166c..b0f764e 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.json @@ -9,7 +9,7 @@ "line": 22, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithMakeInstance.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithMakeInstance.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.json similarity index 81% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.json index 0183bc5..d06ec76 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.json @@ -9,7 +9,7 @@ "line": 22, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithNew.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithNew.legacyClassname", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 23, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithNew.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithNew.legacyClassname", "type": "ERROR" }, { @@ -27,7 +27,7 @@ "line": 24, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithNew.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithNew.legacyClassname", "type": "ERROR" }, { @@ -36,7 +36,7 @@ "line": 27, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithNew.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithNew.legacyClassname", "type": "ERROR" }, { @@ -45,7 +45,7 @@ "line": 28, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithNew.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithNew.legacyClassname", "type": "ERROR" }, { @@ -54,7 +54,7 @@ "line": 29, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithNew.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithNew.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.json similarity index 80% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.json index 2ebb599..273b495 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.json @@ -9,7 +9,7 @@ "line": 24, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithObjectManager.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithObjectManager.legacyClassname", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 25, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithObjectManager.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithObjectManager.legacyClassname", "type": "ERROR" }, { @@ -27,7 +27,7 @@ "line": 31, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithObjectManager.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithObjectManager.legacyClassname", "type": "ERROR" }, { @@ -36,7 +36,7 @@ "line": 33, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.InstantiationWithObjectManager.legacyClassname", + "source": "Typo3Update.Classname.InstantiationWithObjectManager.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json similarity index 84% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json index d754658..6ec4608 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json @@ -9,7 +9,7 @@ "line": 26, "message": "Legacy classes are not allowed; found \"t3lib_Singleton\", use \"TYPO3\\CMS\\Core\\SingletonInterface\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.IsACall.legacyClassname", + "source": "Typo3Update.Classname.IsACall.legacyClassname", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 29, "message": "Legacy classes are not allowed; found \"t3lib_Singleton\", use \"TYPO3\\CMS\\Core\\SingletonInterface\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.IsACall.legacyClassname", + "source": "Typo3Update.Classname.IsACall.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/Arguments.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/Arguments.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/Arguments.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/Arguments.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/customVendor/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/customVendor/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/defaultVendor/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.json similarity index 86% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/defaultVendor/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.json index a720806..3126302 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/defaultVendor/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.json @@ -9,7 +9,7 @@ "line": 24, "message": "Legacy class definitions are not allowed; found \"Tx_ExtName_Controller_Frontendcontroller\". Wrap your class inside a namespace.", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingNamespace.legacyClassname", + "source": "Typo3Update.Classname.MissingNamespace.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/customVendor/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/customVendor/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/defaultVendor/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/defaultVendor/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/defaultVendor/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/defaultVendor/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/customVendor/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/defaultVendor/Expected.json similarity index 86% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/customVendor/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/defaultVendor/Expected.json index a720806..3126302 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/customVendor/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/defaultVendor/Expected.json @@ -9,7 +9,7 @@ "line": 24, "message": "Legacy class definitions are not allowed; found \"Tx_ExtName_Controller_Frontendcontroller\". Wrap your class inside a namespace.", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingNamespace.legacyClassname", + "source": "Typo3Update.Classname.MissingNamespace.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/defaultVendor/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/defaultVendor/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/defaultVendor/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/defaultVendor/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.diff similarity index 89% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.diff index f6d97a5..807e03e 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/InputFileForIssues.php +++ PHP_CodeSniffer @@ -22,19 +22,19 @@ class InputFileForIssues diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.json similarity index 83% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.json index 6df46f0..dc72038 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.json @@ -9,7 +9,7 @@ "line": 25, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Domain_Repository_CategoryRepository\", use \"TYPO3\\CMS\\Extbase\\Domain\\Repository\\CategoryRepository\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.DocComment.legacyClassname", + "source": "Typo3Update.Classname.PhpDocComment.legacyClassname", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 31, "message": "Legacy classes are not allowed; found \"t3lib_div\", use \"TYPO3\\CMS\\Core\\Utility\\GeneralUtility\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.DocComment.legacyClassname", + "source": "Typo3Update.Classname.PhpDocComment.legacyClassname", "type": "ERROR" }, { @@ -27,7 +27,7 @@ "line": 33, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Configuration_Configurationmanager\", use \"TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.DocComment.legacyClassname", + "source": "Typo3Update.Classname.PhpDocComment.legacyClassname", "type": "ERROR" }, { @@ -36,7 +36,7 @@ "line": 37, "message": "Legacy classes are not allowed; found \"t3lib_div\", use \"TYPO3\\CMS\\Core\\Utility\\GeneralUtility\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.DocComment.legacyClassname", + "source": "Typo3Update.Classname.PhpDocComment.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/StaticCallSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/StaticCallSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/StaticCallSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.json similarity index 82% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/StaticCallSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.json index f2e2a54..124198b 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/StaticCallSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.json @@ -9,7 +9,7 @@ "line": 22, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Utility_Extension\", use \"TYPO3\\CMS\\Extbase\\Utility\\ExtensionUtility\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.StaticCall.legacyClassname", + "source": "Typo3Update.Classname.StaticCall.legacyClassname", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 27, "message": "Legacy classes are not allowed; found \"t3lib_div\", use \"TYPO3\\CMS\\Core\\Utility\\GeneralUtility\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.StaticCall.legacyClassname", + "source": "Typo3Update.Classname.StaticCall.legacyClassname", "type": "ERROR" }, { @@ -27,7 +27,7 @@ "line": 27, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.StaticCall.legacyClassname", + "source": "Typo3Update.Classname.StaticCall.legacyClassname", "type": "ERROR" }, { @@ -36,7 +36,7 @@ "line": 28, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.StaticCall.legacyClassname", + "source": "Typo3Update.Classname.StaticCall.legacyClassname", "type": "ERROR" }, { @@ -45,7 +45,7 @@ "line": 30, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Command_HelpCommandController\", use \"TYPO3\\CMS\\Extbase\\Command\\HelpCommandController\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.StaticCall.legacyClassname", + "source": "Typo3Update.Classname.StaticCall.legacyClassname", "type": "ERROR" }, { @@ -54,7 +54,7 @@ "line": 31, "message": "Legacy classes are not allowed; found \"t3lib_Singleton\", use \"TYPO3\\CMS\\Core\\SingletonInterface\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.StaticCall.legacyClassname", + "source": "Typo3Update.Classname.StaticCall.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/StaticCallSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/StaticCallSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintCatchExceptionSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintCatchExceptionSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintCatchExceptionSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/Expected.json similarity index 82% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintCatchExceptionSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/Expected.json index ae6d240..59701dd 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintCatchExceptionSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/Expected.json @@ -9,7 +9,7 @@ "line": 24, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Exception\", use \"TYPO3\\CMS\\Extbase\\Exception\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.TypeHintCatchException.legacyClassname", + "source": "Typo3Update.Classname.TypeHintCatchException.legacyClassname", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 30, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Exception\", use \"TYPO3\\CMS\\Extbase\\Exception\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.TypeHintCatchException.legacyClassname", + "source": "Typo3Update.Classname.TypeHintCatchException.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintCatchExceptionSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintCatchExceptionSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.json similarity index 83% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.json index 9b45649..9fde95c 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.json @@ -9,7 +9,7 @@ "line": 28, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Domain_Model_Backenduser\", use \"TYPO3\\CMS\\Extbase\\Domain\\Model\\BackendUser\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.TypeHint.legacyClassname", + "source": "Typo3Update.Classname.TypeHint.legacyClassname", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 31, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Domain_Model_Backenduser\", use \"TYPO3\\CMS\\Extbase\\Domain\\Model\\BackendUser\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.TypeHint.legacyClassname", + "source": "Typo3Update.Classname.TypeHint.legacyClassname", "type": "ERROR" }, { @@ -27,7 +27,7 @@ "line": 43, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Domain_Model_Backenduser\", use \"TYPO3\\CMS\\Extbase\\Domain\\Model\\BackendUser\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.TypeHint.legacyClassname", + "source": "Typo3Update.Classname.TypeHint.legacyClassname", "type": "ERROR" }, { @@ -36,7 +36,7 @@ "line": 46, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Domain_Model_Backenduser\", use \"TYPO3\\CMS\\Extbase\\Domain\\Model\\BackendUser\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.TypeHint.legacyClassname", + "source": "Typo3Update.Classname.TypeHint.legacyClassname", "type": "ERROR" }, { @@ -45,7 +45,7 @@ "line": 56, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Domain_Model_Backenduser\", use \"TYPO3\\CMS\\Extbase\\Domain\\Model\\BackendUser\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.TypeHint.legacyClassname", + "source": "Typo3Update.Classname.TypeHint.legacyClassname", "type": "ERROR" }, { @@ -54,7 +54,7 @@ "line": 59, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Domain_Model_Backenduser\", use \"TYPO3\\CMS\\Extbase\\Domain\\Model\\BackendUser\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.TypeHint.legacyClassname", + "source": "Typo3Update.Classname.TypeHint.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.json similarity index 86% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.json index 6b30360..63816bd 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.json @@ -9,7 +9,7 @@ "line": 22, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Domain_Model_Backenduser\", use \"TYPO3\\CMS\\Extbase\\Domain\\Model\\BackendUser\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.Use.legacyClassname", + "source": "Typo3Update.Classname.Use.legacyClassname", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 23, "message": "Legacy classes are not allowed; found \"Tx_Extbase_Domain_Model_Backenduser\", use \"TYPO3\\CMS\\Extbase\\Domain\\Model\\BackendUser\" instead", "severity": 5, - "source": "Typo3Update.LegacyClassnames.Use.legacyClassname", + "source": "Typo3Update.Classname.Use.legacyClassname", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/Arguments.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/Arguments.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/Arguments.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/Arguments.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.json similarity index 79% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.json index c46162f..e2b6a38 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.json @@ -9,7 +9,7 @@ "line": 23, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"MyCustomVendor.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 31, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"MyCustomVendor.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" }, { @@ -27,7 +27,7 @@ "line": 39, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"MyCustomVendor.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" }, { @@ -36,7 +36,7 @@ "line": 45, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"MyCustomVendor.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" }, { @@ -45,7 +45,7 @@ "line": 51, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"MyCustomVendor.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" }, { @@ -54,7 +54,7 @@ "line": 61, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"MyCustomVendor.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/customVendor/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/customVendor/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.diff similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.diff diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.json similarity index 79% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.json rename to tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.json index 8f4511c..c05e3c9 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.json @@ -9,7 +9,7 @@ "line": 23, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"YourCompany.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" }, { @@ -18,7 +18,7 @@ "line": 31, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"YourCompany.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" }, { @@ -27,7 +27,7 @@ "line": 39, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"YourCompany.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" }, { @@ -36,7 +36,7 @@ "line": 45, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"YourCompany.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" }, { @@ -45,7 +45,7 @@ "line": 51, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"YourCompany.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" }, { @@ -54,7 +54,7 @@ "line": 61, "message": "No vendor is given, that will break TYPO3 handling for namespaced classes. Add vendor before Extensionkey like: \"YourCompany.\" . $_EXTKEY", "severity": 5, - "source": "Typo3Update.LegacyClassnames.MissingVendorForPluginsAndModules.missingVendor", + "source": "Typo3Update.LegacyClassname.MissingVendorForPluginsAndModules.missingVendor", "type": "ERROR" } ], diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/defaultVendor/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/InputFileForIssues.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/defaultVendor/InputFileForIssues.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/InputFileForIssues.php From cc0be4a5b42641811caf76b75df8c88391cc60b3 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 13:03:36 +0200 Subject: [PATCH 02/24] WIP: Move features to own namespace * Have all feature related classes in a single namespace. Relates: #72 --- src/Standards/Typo3Update/{ => Feature}/FeatureInterface.php | 2 +- src/Standards/Typo3Update/{ => Feature}/Features.php | 3 ++- src/Standards/Typo3Update/{ => Feature}/FeaturesSupport.php | 3 +-- src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php | 2 -- .../Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php | 2 +- .../Typo3Update/Sniffs/Classname/PhpDocCommentSniff.php | 2 +- 6 files changed, 6 insertions(+), 8 deletions(-) rename src/Standards/Typo3Update/{ => Feature}/FeatureInterface.php (97%) rename src/Standards/Typo3Update/{ => Feature}/Features.php (97%) rename src/Standards/Typo3Update/{ => Feature}/FeaturesSupport.php (96%) diff --git a/src/Standards/Typo3Update/FeatureInterface.php b/src/Standards/Typo3Update/Feature/FeatureInterface.php similarity index 97% rename from src/Standards/Typo3Update/FeatureInterface.php rename to src/Standards/Typo3Update/Feature/FeatureInterface.php index ed73e55..36d63c7 100644 --- a/src/Standards/Typo3Update/FeatureInterface.php +++ b/src/Standards/Typo3Update/Feature/FeatureInterface.php @@ -1,5 +1,5 @@ diff --git a/src/Standards/Typo3Update/Features.php b/src/Standards/Typo3Update/Feature/Features.php similarity index 97% rename from src/Standards/Typo3Update/Features.php rename to src/Standards/Typo3Update/Feature/Features.php index 1927ffc..996f012 100644 --- a/src/Standards/Typo3Update/Features.php +++ b/src/Standards/Typo3Update/Feature/Features.php @@ -1,5 +1,5 @@ @@ -21,6 +21,7 @@ namespace Typo3Update; */ use PHP_CodeSniffer_Sniff as PhpCsSniff; +use Typo3Update\Options; /** * diff --git a/src/Standards/Typo3Update/FeaturesSupport.php b/src/Standards/Typo3Update/Feature/FeaturesSupport.php similarity index 96% rename from src/Standards/Typo3Update/FeaturesSupport.php rename to src/Standards/Typo3Update/Feature/FeaturesSupport.php index 183f017..fa71785 100644 --- a/src/Standards/Typo3Update/FeaturesSupport.php +++ b/src/Standards/Typo3Update/Feature/FeaturesSupport.php @@ -1,5 +1,5 @@ @@ -21,7 +21,6 @@ namespace Typo3Update; */ use PHP_CodeSniffer_File as PhpCsFile; -use Typo3Update\Features; /** * Provides "feature" support for sniff. diff --git a/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php index 70b5cf5..a052abf 100644 --- a/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php +++ b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php @@ -23,8 +23,6 @@ namespace Typo3Update\Feature; use PHP_CodeSniffer as PhpCs; use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Sniff as PhpCsSniff; -use Typo3Update\FeatureInterface; -use Typo3Update\Feature\LegacyClassnameMapping; /** * diff --git a/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php b/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php index 7bc96b2..dbc60b2 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php @@ -22,7 +22,7 @@ namespace Typo3Update\Sniffs\Classname; use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Sniff as PhpCsSniff; -use Typo3Update\FeaturesSupport; +use Typo3Update\Feature\FeaturesSupport; /** * Provide common uses for all sniffs, regarding class name checks. diff --git a/src/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff.php index 80a9818..d1f7f78 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff.php @@ -21,7 +21,7 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Sniff as PhpCsSniff; -use Typo3Update\FeaturesSupport; +use Typo3Update\Feature\FeaturesSupport; /** * Handle PHP Doc comments. From 2b1a1a0f1995ce43947c8926ee65621e480d39e4 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 13:05:48 +0200 Subject: [PATCH 03/24] WIP: Fix broken MissingVendorForPluginsAndModulesSniff tests Relates: #72 --- .../customVendor/Expected.diff | 2 +- .../defaultVendor/Expected.diff | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.diff index 22d4fa8..9fcdb32 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/customVendor/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/customVendor/InputFileForIssues.php +++ PHP_CodeSniffer @@ -20,7 +20,7 @@ */ diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.diff index 2faa023..a8fa872 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingVendorForPluginsAndModulesSniff/defaultVendor/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingVendorForPluginsAndModulesSniff/defaultVendor/InputFileForIssues.php +++ PHP_CodeSniffer @@ -20,7 +20,7 @@ */ From 94df1f2ad13a541497120cab594443da2ae05362 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 13:16:58 +0200 Subject: [PATCH 04/24] 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. From c4c8faacd2b30ad8f8305cefdda4bfe6e472850b Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 13:25:48 +0200 Subject: [PATCH 05/24] WIP: Fix TypeHintSniff * Make TypeHintSniff tests pass again. * Fix typo in class name preventing new feature mechanism from matching. Relates: #72 --- src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php | 2 +- .../Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php index 224554c..7d08f16 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php @@ -25,7 +25,7 @@ use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Migrate Typehints in function / method definitions. */ -class Typo3Update_Sniffs_Classname_TypehintSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_TypeHintSniff extends AbstractClassnameChecker { /** * Returns the token types that this sniff is interested in. diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff index bceab5a..54ec8ea 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/InputFileForIssues.php +++ PHP_CodeSniffer @@ -25,10 +25,10 @@ function something(\TYPO3\CMS\Extbase\Domain\Model\BackendUser $user) From 0c6bb133a1538f37e660dbd6e8d80d2d9291d3cb Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 13:28:09 +0200 Subject: [PATCH 06/24] TASK: Make some tests pass again * All tests where only file name in diff was wrong are working again. Relates: #72 --- .../Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.diff | 2 +- .../Sniffs/Classname/InlineCommentSniff/Expected.diff | 2 +- .../Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff | 2 +- .../Classname/InstantiationWithMakeInstanceSniff/Expected.diff | 2 +- .../Sniffs/Classname/InstantiationWithNewSniff/Expected.diff | 2 +- .../Classname/InstantiationWithObjectManagerSniff/Expected.diff | 2 +- .../Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff | 2 +- .../Classname/MissingNamespaceSniff/customVendor/Expected.diff | 2 +- .../Classname/MissingNamespaceSniff/defaultVendor/Expected.diff | 2 +- .../Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.diff | 2 +- .../Sniffs/Classname/TypeHintCatchExceptionSniff/Expected.diff | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.diff index 410f7f9..fc75d37 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InheritanceSniff/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/InputFileForIssues.php +++ PHP_CodeSniffer @@ -19,14 +19,14 @@ * 02110-1301, USA. diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.diff index 6674872..5f59195 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InlineCommentSniff/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/InputFileForIssues.php +++ PHP_CodeSniffer @@ -23,16 +23,16 @@ { diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff index 9a5a9e1..49e34a3 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstanceofSniff/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/InputFileForIssues.php +++ PHP_CodeSniffer @@ -19,6 +19,6 @@ * 02110-1301, USA. diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.diff index 46b2b0c..41f28ef 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithMakeInstanceSniff/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/InputFileForIssues.php +++ PHP_CodeSniffer @@ -19,6 +19,6 @@ * 02110-1301, USA. diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.diff index 7fe1f38..3e4f8b5 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithNewSniff/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/InputFileForIssues.php +++ PHP_CodeSniffer @@ -19,13 +19,13 @@ * 02110-1301, USA. diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.diff index 03ae814..873ee97 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/InstantiationWithObjectManagerSniff/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/InputFileForIssues.php +++ PHP_CodeSniffer @@ -21,13 +21,13 @@ diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff index 64f197e..8e2e341 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/IsACallSniff/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php +++ PHP_CodeSniffer @@ -23,9 +23,9 @@ if (is_a($a, t3lib_Singleton::class)) { diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.diff index bba47b8..fa266ab 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/MissingNamespaceSniff/customVendor/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/InputFileForIssues.php +++ PHP_CodeSniffer @@ -1,4 +1,5 @@ Date: Tue, 25 Apr 2017 13:33:56 +0200 Subject: [PATCH 07/24] TASK: Make TypeHintCatchExceptionSniff work again * Fix wrong class name, to allow features to match. Relates: #72 --- .../Sniffs/Classname/TypeHintCatchExceptionSniff.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php index 1313616..2242e6b 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php @@ -24,7 +24,7 @@ use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; /** * Migrate Typehints in catch statements. */ -class Typo3Update_Sniffs_Classname_TypehintCatchExceptionSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_Classname_TypeHintCatchExceptionSniff extends AbstractClassnameChecker { /** * Returns the token types that this sniff is interested in. From 8572740fd181cbbfdc069f60fe306e9bd6e7dc9a Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 13:41:36 +0200 Subject: [PATCH 08/24] TASK: Shorten test output * Remove unnecessary information to shorten output. * This should make it easier to get the actual issue. --- tests/SniffsTest.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/SniffsTest.php b/tests/SniffsTest.php index 2560f1a..4ed294b 100644 --- a/tests/SniffsTest.php +++ b/tests/SniffsTest.php @@ -137,8 +137,7 @@ class SniffsTest extends TestCase $this->getExpectedJsonOutput($folder), $this->getOutput($internalArguments)['output'], 'Checking Sniff "' . $this->getSniffByFolder($folder) . '"' - . ' did not produce expected output for input file ' - . $internalArguments['inputFile'] + . ' did not produce expected output,' . ' called: ' . $this->getPhpcsCall($internalArguments) ); From d3b612790ce26e5f49ee7c668b2166510ab707a4 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 13:45:46 +0200 Subject: [PATCH 09/24] TASK: Make inline replacements work again * As sometimes not the whole token should be replaces, but only the classname within the token, we replace them always this way. * Before the refactoring, that was done in the concrete sniffs. * Affected are e.g. php doc comments. Relates: #72 --- .../Feature/LegacyClassnameFeature.php | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php index 72edd35..c5d27f5 100644 --- a/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php +++ b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php @@ -194,26 +194,14 @@ class LegacyClassnameFeature implements FeatureInterface $phpcsFile->fixer->replaceToken( $classnamePosition, - $this->getTokenForReplacement($prefix . $this->getNewClassname($classname), $classname, $phpcsFile) + str_replace( + $classname, + $prefix . $this->getNewClassname($classname), + $phpcsFile->getTokens()[$classnamePosition]['content'] + ) ); } - /** - * String to use for replacing / fixing the token. - * Default is class name itself, can be overwritten in sniff for special behaviour. - * - * @param string $newClassname - * @param string $originalClassname - * @param PhpCsFile $phpcsFile - * @return string - * - * @SuppressWarnings(PHPMD.UnusedFormalParameter) We need to match the signature. - */ - protected function getTokenForReplacement($newClassname, $originalClassname, PhpCsFile $phpcsFile) - { - return $newClassname; - } - /** * Use this inside your getTokenForReplacement if $classname is inside a string. * Strings will be converted to single quotes. From efd5d9114faa6d7e2d99aaab68b95dd16eab4e19 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 14:11:40 +0200 Subject: [PATCH 10/24] TASK: Migrate MissingNamespaceSniff * Make MissingNamespaceSniff work again. * Move to old namespace as it's a custom sniff, not a general one. * Do not use new feature here, implement logic internal. * Remove message from ruleset, use it directly. Relates: #72 --- .../Features/LegacyClassnames.yaml | 2 +- .../MissingNamespaceSniff.php | 60 +++++++++---------- src/Standards/Typo3Update/ruleset.xml | 4 -- .../MissingNamespaceSniff/Arguments.php | 0 .../customVendor/Expected.diff | 2 +- .../customVendor/Expected.json | 2 +- .../customVendor/InputFileForIssues.php | 0 .../defaultVendor/Expected.diff | 2 +- .../defaultVendor/Expected.json | 2 +- .../defaultVendor/InputFileForIssues.php | 0 10 files changed, 33 insertions(+), 41 deletions(-) rename src/Standards/Typo3Update/Sniffs/{Classname => LegacyClassname}/MissingNamespaceSniff.php (81%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{Classname => LegacyClassname}/MissingNamespaceSniff/Arguments.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{Classname => LegacyClassname}/MissingNamespaceSniff/customVendor/Expected.diff (77%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{Classname => LegacyClassname}/MissingNamespaceSniff/customVendor/Expected.json (86%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{Classname => LegacyClassname}/MissingNamespaceSniff/customVendor/InputFileForIssues.php (100%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{Classname => LegacyClassname}/MissingNamespaceSniff/defaultVendor/Expected.diff (76%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{Classname => LegacyClassname}/MissingNamespaceSniff/defaultVendor/Expected.json (86%) rename tests/Fixtures/Standards/Typo3Update/Sniffs/{Classname => LegacyClassname}/MissingNamespaceSniff/defaultVendor/InputFileForIssues.php (100%) diff --git a/src/Standards/Typo3Update/Configuration/Features/LegacyClassnames.yaml b/src/Standards/Typo3Update/Configuration/Features/LegacyClassnames.yaml index c510db2..44e6556 100644 --- a/src/Standards/Typo3Update/Configuration/Features/LegacyClassnames.yaml +++ b/src/Standards/Typo3Update/Configuration/Features/LegacyClassnames.yaml @@ -6,10 +6,10 @@ Typo3Update\Feature\LegacyClassnameFeature: - Typo3Update_Sniffs_Classname_InstantiationWithNewSniff - Typo3Update_Sniffs_Classname_InstantiationWithObjectManagerSniff - Typo3Update_Sniffs_Classname_IsACallSniff - - Typo3Update_Sniffs_Classname_MissingNamespaceSniff - Typo3Update_Sniffs_Classname_MissingVendorForPluginsAndModulesSniff - Typo3Update_Sniffs_Classname_PhpDocCommentSniff - Typo3Update_Sniffs_Classname_StaticCallSniff - Typo3Update_Sniffs_Classname_TypeHintCatchExceptionSniff - Typo3Update_Sniffs_Classname_TypeHintSniff - Typo3Update_Sniffs_Classname_UseSniff + - Typo3Update_Sniffs_LegacyClassname_MissingNamespaceSniff diff --git a/src/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff.php b/src/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff.php similarity index 81% rename from src/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff.php rename to src/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff.php index 1c18232..9296d88 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff.php +++ b/src/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff.php @@ -20,13 +20,14 @@ */ use PHP_CodeSniffer_File as PhpCsFile; -use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; +use PHP_CodeSniffer_Sniff as PhpCsSniff; +use Typo3Update\Feature\LegacyClassnameMapping; use Typo3Update\Options; /** * Detect missing namespaces for class definitions. */ -class Typo3Update_Sniffs_Classname_MissingNamespaceSniff extends AbstractClassnameChecker +class Typo3Update_Sniffs_LegacyClassname_MissingNamespaceSniff implements PhpCsSniff { /** * Returns the token types that this sniff is interested in. @@ -66,28 +67,16 @@ class Typo3Update_Sniffs_Classname_MissingNamespaceSniff extends AbstractClassna } $classname = $tokens[$classnamePosition]['content']; - // TODO: Migrate class, use custom feature as some parts are different! - // $this->addFixableError($phpcsFile, $classnamePosition, $classname); - } - - /** - * Overwrite as we don't look up the classname, but check whether the style is legacy. - * - * @param string $classname - * @return bool - */ - protected function isLegacyClassname($classname) - { - return strpos($classname, 'Tx_') === 0; - } - - /** - * @param string $classname - * @return string - */ - protected function getNewClassname($classname) - { - return substr($classname, strrpos($classname, '_') + 1); + $fix = $phpcsFile->addFixableError( + 'Legacy class definitions are not allowed; found "%s".' + . ' Wrap your class inside a namespace.', + $classnamePosition, + 'legacyClassname', + [$classname] + ); + if ($fix === true) { + $this->replaceLegacyClassname($phpcsFile, $classnamePosition, $classname); + } } /** @@ -95,18 +84,12 @@ class Typo3Update_Sniffs_Classname_MissingNamespaceSniff extends AbstractClassna * @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 = true + $classname ) { - parent::replaceLegacyClassname($phpcsFile, $classnamePosition, $classname, $forceEmptyPrefix); - $tokens = $phpcsFile->getTokens(); $lineEndings = PhpCsFile::detectLineEndings($phpcsFile->getFilename()); $suffix = $lineEndings; @@ -115,16 +98,29 @@ class Typo3Update_Sniffs_Classname_MissingNamespaceSniff extends AbstractClassna $suffix .= $lineEndings; } + $phpcsFile->fixer->replaceToken( + $classnamePosition, + substr($classname, strrpos($classname, '_') + 1) + ); $phpcsFile->fixer->replaceToken( $this->getNamespacePosition($phpcsFile), 'getNamespaceDefinition($classname) . $suffix ); - $this->addLegacyClassname( + LegacyClassnameMapping::getInstance()->addLegacyClassname( $classname, $this->getNamespace($classname) . '\\' . $this->getNewClassname($classname) ); } + /** + * @param string $classname + * @return string + */ + protected function getNewClassname($classname) + { + return substr($classname, strrpos($classname, '_') + 1); + } + /** * @param PhpCsFile $phpcsFile * @return int|false diff --git a/src/Standards/Typo3Update/ruleset.xml b/src/Standards/Typo3Update/ruleset.xml index 2cc04d2..f9e1580 100644 --- a/src/Standards/Typo3Update/ruleset.xml +++ b/src/Standards/Typo3Update/ruleset.xml @@ -12,8 +12,4 @@ - - - Legacy class definitions are not allowed; found "%s". Wrap your class inside a namespace. - diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/Arguments.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/Arguments.php similarity index 100% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/Arguments.php rename to tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/Arguments.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/customVendor/Expected.diff similarity index 77% rename from tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.diff rename to tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/customVendor/Expected.diff index fa266ab..9f60b88 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/customVendor/Expected.diff @@ -1,4 +1,4 @@ ---- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/MissingNamespaceSniff/customVendor/InputFileForIssues.php +--- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/customVendor/InputFileForIssues.php +++ PHP_CodeSniffer @@ -1,4 +1,5 @@ Date: Tue, 25 Apr 2017 14:16:59 +0200 Subject: [PATCH 11/24] TASK: Streamline test output on error --- tests/SniffsTest.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/SniffsTest.php b/tests/SniffsTest.php index 4ed294b..f7e5b16 100644 --- a/tests/SniffsTest.php +++ b/tests/SniffsTest.php @@ -147,8 +147,7 @@ class SniffsTest extends TestCase $this->getExpectedDiffOutput($folder), $this->getOutput($internalArguments)['output'], 'Fixing Sniff "' . $this->getSniffByFolder($folder) . '"' - . ' did not produce expected diff for input file ' - . $internalArguments['inputFile'] + . ' did not produce expected diff,' . ' called: ' . $this->getPhpcsCall($internalArguments) ); } catch (FileNotFoundException $e) { From 14c82e4a10453e1308b9509cffa17bc8059d16a8 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 14:23:49 +0200 Subject: [PATCH 12/24] TASK: Migrate IsACallSniff * Add further tests with quotes. * Handle prefix in strings. * Remove old originalTokenContent which is no longer in use, as we use str_replace, introduced in earlier commit. Relates: #72 --- .../Feature/LegacyClassnameFeature.php | 58 +++++++------------ .../Classname/IsACallSniff/Expected.diff | 10 +++- .../Classname/IsACallSniff/Expected.json | 24 +++++++- .../IsACallSniff/InputFileForIssues.php | 6 ++ 4 files changed, 57 insertions(+), 41 deletions(-) diff --git a/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php index c5d27f5..269650c 100644 --- a/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php +++ b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php @@ -49,15 +49,6 @@ class LegacyClassnameFeature implements FeatureInterface */ protected $sniff; - /** - * Used by some sniffs to keep original token for replacement. - * - * E.g. when Token itself is a whole inline comment, and we just want to replace the classname within. - * - * @var string - */ - protected $originalTokenContent = ''; - public function __construct(PhpCsSniff $sniff) { $this->sniff = $sniff; @@ -188,40 +179,22 @@ class LegacyClassnameFeature implements FeatureInterface $classname ) { $prefix = '\\'; - if ($this->forceEmptyPrefix() || $phpcsFile->getTokens()[$classnamePosition -1]['code'] === T_NS_SEPARATOR) { + if ($this->useEmptyPrefix($phpcsFile, $classnamePosition)) { $prefix = ''; } - $phpcsFile->fixer->replaceToken( - $classnamePosition, - str_replace( - $classname, - $prefix . $this->getNewClassname($classname), - $phpcsFile->getTokens()[$classnamePosition]['content'] - ) + $newClassname = str_replace( + $classname, + $prefix . $this->getNewClassname($classname), + $phpcsFile->getTokens()[$classnamePosition]['content'] ); - } - /** - * Use this inside your getTokenForReplacement if $classname is inside a string. - * Strings will be converted to single quotes. - * - * @param string $classname - * @return string - */ - protected function getTokenReplacementForString($classname) - { - $stringSign = $this->originalTokenContent[0]; - $token = explode($stringSign, $this->originalTokenContent); - $token[1] = $classname; - - // Migrate double quote to single quote. - // This way no escaping of backslashes in class names is necessary. - if ($stringSign === '"') { - $stringSign = "'"; + // Handle double quotes, with special escaping. + if ($newClassname[0] === '"') { + $newClassname = '"\\\\' . str_replace('\\', '\\\\', ltrim(substr($newClassname, 1), '\\')); } - return implode($stringSign, $token); + $phpcsFile->fixer->replaceToken($classnamePosition, $newClassname); } /** @@ -229,11 +202,22 @@ class LegacyClassnameFeature implements FeatureInterface * * @return bool */ - protected function forceEmptyPrefix() + protected function useEmptyPrefix(PhpCsFile $phpcsFile, $classnamePosition) { + // Use statements don't start with T_NS_SEPARATOR. if (get_class($this->sniff) === \Typo3Update_Sniffs_Classname_UseSniff::class) { return true; } + // If T_NS_SEPARATOR is already present before, don't add again. + if ($phpcsFile->getTokens()[$classnamePosition -1]['code'] === T_NS_SEPARATOR) { + return true; + } + // If inside string starting with T_NS_SEPARATOR don't add again. + if (isset($phpcsFile->getTokens()[$classnamePosition]['content'][1]) + && $phpcsFile->getTokens()[$classnamePosition]['content'][1] === '\\' + ) { + return true; + } return false; } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff index 8e2e341..d099979 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff @@ -1,6 +1,6 @@ --- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php +++ PHP_CodeSniffer -@@ -23,9 +23,9 @@ +@@ -23,15 +23,15 @@ if (is_a($a, t3lib_Singleton::class)) { // do something } @@ -12,3 +12,11 @@ +if (is_a($a, '\TYPO3\CMS\Core\SingletonInterface')) { // do something } +-if (is_a($a, "t3lib_Singleton")) { ++if (is_a($a, "\\TYPO3\\CMS\\Core\\SingletonInterface")) { + // do something + } +-if (is_a($a, "\\t3lib_Singleton")) { ++if (is_a($a, "\\TYPO3\\CMS\\Core\\SingletonInterface")) { + // do something + } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json index 6ec4608..6795e14 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json @@ -1,7 +1,7 @@ { "files": { "InputFileForIssues.php": { - "errors": 2, + "errors": 4, "messages": [ { "column": 14, @@ -20,14 +20,32 @@ "severity": 5, "source": "Typo3Update.Classname.IsACall.legacyClassname", "type": "ERROR" + }, + { + "column": 14, + "fixable": true, + "line": 32, + "message": "Legacy classes are not allowed; found \"t3lib_Singleton\", use \"TYPO3\\CMS\\Core\\SingletonInterface\" instead", + "severity": 5, + "source": "Typo3Update.Classname.IsACall.legacyClassname", + "type": "ERROR" + }, + { + "column": 14, + "fixable": true, + "line": 35, + "message": "Legacy classes are not allowed; found \"t3lib_Singleton\", use \"TYPO3\\CMS\\Core\\SingletonInterface\" instead", + "severity": 5, + "source": "Typo3Update.Classname.IsACall.legacyClassname", + "type": "ERROR" } ], "warnings": 0 } }, "totals": { - "errors": 2, - "fixable": 2, + "errors": 4, + "fixable": 4, "warnings": 0 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php index 4265076..53a8a7b 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php @@ -29,3 +29,9 @@ if (is_a($a, 't3lib_Singleton')) { if (is_a($a, '\t3lib_Singleton')) { // do something } +if (is_a($a, "t3lib_Singleton")) { + // do something +} +if (is_a($a, "\\t3lib_Singleton")) { + // do something +} From 21cf62b94934af51e6e00522e3e9ee7d64de03ef Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 15:09:32 +0200 Subject: [PATCH 13/24] TASK: migrate InheritanceSniff Relates: #72 --- .../Typo3Update/Sniffs/Classname/InheritanceSniff.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php index aa5f134..d9096f1 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php @@ -79,11 +79,6 @@ class Typo3Update_Sniffs_Classname_InheritanceSniff extends AbstractClassnameChe } foreach ($interfaces as $interface) { - // TODO: Migrate - if (! $this->isLegacyClassname($interface)) { - continue; - } - $position = $phpcsFile->findNext(T_STRING, $stackPtr, null, false, $interface); if ($position === false) { continue; From 2cc21fdafaae0d6071132d7577140eafb8d89811 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 15:20:35 +0200 Subject: [PATCH 14/24] TASK: Cleanup code * Remove unnecessary documentation. * Remove unused code. * Add missing documentation. Relates: #72 --- .../Typo3Update/Feature/FeatureInterface.php | 2 +- .../Typo3Update/Feature/Features.php | 5 +++- .../Typo3Update/Feature/FeaturesSupport.php | 15 +++++++++- .../Feature/LegacyClassnameFeature.php | 16 ++--------- .../Classname/AbstractClassnameChecker.php | 3 ++ .../Sniffs/Classname/InheritanceSniff.php | 8 +----- .../Sniffs/Classname/InlineCommentSniff.php | 28 +------------------ .../Sniffs/Classname/InstanceofSniff.php | 7 +---- .../InstantiationWithMakeInstanceSniff.php | 16 ----------- .../Classname/InstantiationWithNewSniff.php | 3 -- .../InstantiationWithObjectManagerSniff.php | 3 -- .../Sniffs/Classname/IsACallSniff.php | 3 -- .../Sniffs/Classname/StaticCallSniff.php | 3 -- .../Classname/TypeHintCatchExceptionSniff.php | 3 -- .../Sniffs/Classname/TypeHintSniff.php | 3 -- 15 files changed, 27 insertions(+), 91 deletions(-) diff --git a/src/Standards/Typo3Update/Feature/FeatureInterface.php b/src/Standards/Typo3Update/Feature/FeatureInterface.php index 36d63c7..39de10c 100644 --- a/src/Standards/Typo3Update/Feature/FeatureInterface.php +++ b/src/Standards/Typo3Update/Feature/FeatureInterface.php @@ -23,7 +23,7 @@ namespace Typo3Update\Feature; use PHP_CodeSniffer_File as PhpCsFile; /** - * + * See "Features" in documentation. */ interface FeatureInterface { diff --git a/src/Standards/Typo3Update/Feature/Features.php b/src/Standards/Typo3Update/Feature/Features.php index 996f012..ac6ee42 100644 --- a/src/Standards/Typo3Update/Feature/Features.php +++ b/src/Standards/Typo3Update/Feature/Features.php @@ -24,13 +24,16 @@ use PHP_CodeSniffer_Sniff as PhpCsSniff; use Typo3Update\Options; /** - * + * Contains all configured features for a single sniff. */ class Features implements \Iterator { protected $index = 0; protected $features = []; + /** + * @param PhpCsSniff $sniff The sniff to collect features for. + */ public function __construct(PhpCsSniff $sniff) { foreach (Options::getFeaturesConfiguration() as $featureName => $sniffs) { diff --git a/src/Standards/Typo3Update/Feature/FeaturesSupport.php b/src/Standards/Typo3Update/Feature/FeaturesSupport.php index fa71785..2f84bc7 100644 --- a/src/Standards/Typo3Update/Feature/FeaturesSupport.php +++ b/src/Standards/Typo3Update/Feature/FeaturesSupport.php @@ -23,7 +23,7 @@ namespace Typo3Update\Feature; use PHP_CodeSniffer_File as PhpCsFile; /** - * Provides "feature" support for sniff. + * Provides "feature" support for sniffs. */ trait FeaturesSupport { @@ -37,6 +37,13 @@ trait FeaturesSupport $this->features = new Features($this); } + /** + * Processes all features for the sniff. + * + * @param PhpCsFile $phpcsFile + * @param int $stackPtr + * @param string $content + */ public function processFeatures(PhpCsFile $phpcsFile, $stackPtr, $content) { foreach ($this->features as $featureClassName) { @@ -45,6 +52,12 @@ trait FeaturesSupport } } + /** + * Create a new instance of the given feature. + * + * @param string $featureClassname + * @return FeatureInterface + */ protected function createFeature($featureClassname) { return new $featureClassname($this); diff --git a/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php index 269650c..4612e6d 100644 --- a/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php +++ b/src/Standards/Typo3Update/Feature/LegacyClassnameFeature.php @@ -25,7 +25,9 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Sniff as PhpCsSniff; /** + * This feature will add fixable errors for old legacy classnames. * + * Can be attached to sniffs returning classnames. */ class LegacyClassnameFeature implements FeatureInterface { @@ -131,20 +133,6 @@ class LegacyClassnameFeature implements FeatureInterface return $this->legacyMapping->getNewClassname($classname); } - /** - * Use to add new mappings found during parsing. - * E.g. in MissingNamespaceSniff old class definitions are fixed and a new mapping exists afterwards. - * - * @param string $legacyClassname - * @param string $newClassname - * - * @return void - */ - protected function addLegacyClassname($legacyClassname, $newClassname) - { - $this->legacyMapping->addLegacyClassname($legacyClassname, $newClassname); - } - /** * Add an warning if given $classname is maybe legacy. * diff --git a/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php b/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php index dbc60b2..e405fdc 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php @@ -26,6 +26,9 @@ use Typo3Update\Feature\FeaturesSupport; /** * Provide common uses for all sniffs, regarding class name checks. + * + * Will do nothing but calling configured features, allowing new extending + * sniffs to find further class names. */ abstract class AbstractClassnameChecker implements PhpCsSniff { diff --git a/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php index d9096f1..2ce6d36 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php @@ -22,9 +22,6 @@ use PHP_CodeSniffer_File as PhpCsFile; use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Detect and migrate extend and implement of old legacy classnames. - */ class Typo3Update_Sniffs_Classname_InheritanceSniff extends AbstractClassnameChecker { /** @@ -34,10 +31,7 @@ class Typo3Update_Sniffs_Classname_InheritanceSniff extends AbstractClassnameChe */ public function register() { - return [ - T_EXTENDS, - T_IMPLEMENTS, - ]; + return [T_EXTENDS, T_IMPLEMENTS]; } /** diff --git a/src/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff.php index 7f1b58c..676dad9 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff.php @@ -22,9 +22,6 @@ use PHP_CodeSniffer_File as PhpCsFile; use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Migrate PHP inline comments, e.g. for IDEs. - */ class Typo3Update_Sniffs_Classname_InlineCommentSniff extends AbstractClassnameChecker { /** @@ -34,9 +31,7 @@ class Typo3Update_Sniffs_Classname_InlineCommentSniff extends AbstractClassnameC */ public function register() { - return [ - T_COMMENT, - ]; + return [T_COMMENT]; } /** @@ -77,25 +72,4 @@ class Typo3Update_Sniffs_Classname_InlineCommentSniff extends AbstractClassnameC return 3; } - - /** - * As token contains more then just class name, we have to build new content ourself. - * - * @param string $newClassname - * @param string $originalClassname - * @param PhpCsFile $phpcsFile - * @return string - */ - protected function getTokenForReplacement($newClassname, $originalClassname, PhpCsFile $phpcsFile) - { - $token = preg_split('/\s+/', $this->originalTokenContent); - $token[$this->getClassnamePosition($token)] = $newClassname; - - // Keep line ending, removed by preg_split - if ($token[0] === '//') { - $token[count($token)] = $phpcsFile->eolChar; - } - - return implode(' ', $token); - } } diff --git a/src/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff.php index 07fd90a..b6a4640 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff.php @@ -21,9 +21,6 @@ use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Detect and migrate instanceof checks of old legacy classnames. - */ class Typo3Update_Sniffs_Classname_InstanceofSniff extends AbstractClassnameChecker { /** @@ -33,8 +30,6 @@ class Typo3Update_Sniffs_Classname_InstanceofSniff extends AbstractClassnameChec */ public function register() { - return [ - T_INSTANCEOF, - ]; + return [T_INSTANCEOF]; } } diff --git a/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php index ee71469..070162a 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php @@ -23,9 +23,6 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Tokens as Tokens; use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Detect and migrate instantiations of old legacy classnames using "makeInstance". - */ class Typo3Update_Sniffs_Classname_InstantiationWithMakeInstanceSniff extends AbstractClassnameChecker { use \Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; @@ -69,17 +66,4 @@ class Typo3Update_Sniffs_Classname_InstantiationWithMakeInstanceSniff extends Ab $this->originalTokenContent = $tokens[$classnamePosition]['content']; $this->processFeatures($phpcsFile, $classnamePosition, $classname); } - - /** - * As token contains more then just class name, we have to build new content ourself. - * - * @param string $newClassname - * @param string $originalClassname - * @param PhpCsFile $phpcsFile - * @return string - */ - protected function getTokenForReplacement($newClassname, $originalClassname, PhpCsFile $phpcsFile) - { - return $this->getTokenReplacementForString($newClassname); - } } diff --git a/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff.php index be836f5..37313c7 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff.php @@ -21,9 +21,6 @@ use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Detect and migrate old legacy classnames instantiations using phps "new". - */ class Typo3Update_Sniffs_Classname_InstantiationWithNewSniff extends AbstractClassnameChecker { /** diff --git a/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff.php index 14afa1e..7843243 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff.php @@ -23,9 +23,6 @@ use PHP_CodeSniffer_File as PhpCsFile; use PHP_CodeSniffer_Tokens as Tokens; use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Detect and migrate old legacy classname instantiations using objectmanager create and get. - */ class Typo3Update_Sniffs_Classname_InstantiationWithObjectManagerSniff extends AbstractClassnameChecker { use \Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; diff --git a/src/Standards/Typo3Update/Sniffs/Classname/IsACallSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/IsACallSniff.php index 06ac05c..7888d01 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/IsACallSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/IsACallSniff.php @@ -22,9 +22,6 @@ use PHP_CodeSniffer_File as PhpcsFile; use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Detect and migrate instantiations of old legacy classnames using "makeInstance". - */ class Typo3Update_Sniffs_Classname_IsACallSniff extends AbstractClassnameChecker { use \Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; diff --git a/src/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff.php index 7e99447..ded2b6d 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff.php @@ -21,9 +21,6 @@ use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Detect and migrate static calls to old legacy classnames. - */ class Typo3Update_Sniffs_Classname_StaticCallSniff extends AbstractClassnameChecker { /** diff --git a/src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php index 2242e6b..231b676 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff.php @@ -21,9 +21,6 @@ use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Migrate Typehints in catch statements. - */ class Typo3Update_Sniffs_Classname_TypeHintCatchExceptionSniff extends AbstractClassnameChecker { /** diff --git a/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php index 7d08f16..05f49c1 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php @@ -22,9 +22,6 @@ use PHP_CodeSniffer_File as PhpCsFile; use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; -/** - * Migrate Typehints in function / method definitions. - */ class Typo3Update_Sniffs_Classname_TypeHintSniff extends AbstractClassnameChecker { /** From 22d50486cf51bf8cda82eedc2d9cc2925b36be2c Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 15:35:24 +0200 Subject: [PATCH 15/24] TASK: Remove unused intersphinx * As long as we don't make use of intersphinx disable it to speed up rendering of documentation. --- Documentation/source/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/source/conf.py b/Documentation/source/conf.py index 406a886..0e40853 100644 --- a/Documentation/source/conf.py +++ b/Documentation/source/conf.py @@ -29,7 +29,7 @@ import os # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.intersphinx', + # 'sphinx.ext.intersphinx', 'sphinx.ext.todo', ] @@ -310,4 +310,4 @@ texinfo_documents = [ # Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'https://docs.python.org/': None} +# intersphinx_mapping = {'https://docs.python.org/': None} From 28329844b880f31a5dc81ebb8552c48d34ba75b5 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 15:36:20 +0200 Subject: [PATCH 16/24] TASK: Update docs * To keep naming in sync with code, to make examples work. --- Documentation/source/configuration.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/source/configuration.rst b/Documentation/source/configuration.rst index 6209816..49a00ba 100644 --- a/Documentation/source/configuration.rst +++ b/Documentation/source/configuration.rst @@ -28,13 +28,13 @@ Configures which extension names are legacy. Used to provide further checks and possible legacy code. All class usages starting with ``Tx_`` where ExtensionName is defined in this array, will produce a warning, until the class is already found to be deprecaed. -Can and have to be configured for each sniff, e.g. ``Instanceof`` and ``DocComment``. +Can and have to be configured for each sniff, e.g. ``Instanceof`` and ``PhpDocComment``. Example: .. code:: xml - + @@ -46,7 +46,7 @@ Example: allowedTags ----------- -Only used inside Sniff ``Typo3Update.LegacyClassnames.DocComment``. +Only used inside Sniff ``Typo3Update.Classname.PhpDocComment``. Configures which tags are checked for legacy class names. @@ -57,7 +57,7 @@ Example: .. code:: xml - + From 5428b3805fd3b8ce50ca44e76565ca0d64e1d765 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 15:36:47 +0200 Subject: [PATCH 17/24] TASK: Document new feature in docs --- Documentation/source/configuration.rst | 21 +++++++++++++++++++++ Documentation/source/extending.rst | 18 ++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/Documentation/source/configuration.rst b/Documentation/source/configuration.rst index 49a00ba..94c1d55 100644 --- a/Documentation/source/configuration.rst +++ b/Documentation/source/configuration.rst @@ -156,3 +156,24 @@ Example: .. code:: bash --runtime-set removedConstantConfigFiles "/Some/Absolute/Path/*.yaml" + +.. _configuration-features: + +features +-------- + +Configure where to look for configuration files defining the feature mappings. Default is +``Configuration/Features/*.yaml`` inside the standard itself. Globing is used, so placeholders like +``*`` are possible, see https://secure.php.net/manual/en/function.glob.php + +Using :file:`ruleset.xml`: + +.. code:: xml + + + +Example: + +.. code:: bash + + --runtime-set features "/Some/Absolute/Path/*.yaml" diff --git a/Documentation/source/extending.rst b/Documentation/source/extending.rst index 05748bb..8ae8d32 100644 --- a/Documentation/source/extending.rst +++ b/Documentation/source/extending.rst @@ -24,6 +24,24 @@ The following resources might be helpful during working with ``phpcs``: - :file:`CodeSniffer/File.php` +.. _extending-features: + +Features +-------- + +Sniffs do not always add errors or warnings in our standard, instead for more flexibility, we use +them to find specific "tokens", e.g. class names. We then attach so called *Features* to sniffs to +work on that token. + +E.g. we deliver the Feature ``LegacyClassnameFeature`` which will check whether a given class name +is legacy and should be replaced. As class names may occur in many places like type hints or php doc +blocks, the sniffs will detect the class names and the feature will work on them. + +Features can be attached to the sniffs. A feature has to implement the ``FeatureInterface`` and will +work on tokens found by sniffs. + +To attach a Feature to Sniffs, provide a yaml-configuration, see :ref:`configuration-features`. + .. _extending-tests: Tests From add747d0bed5e3aa1ed7f625656b415a74c4d9d7 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 15:37:01 +0200 Subject: [PATCH 18/24] TASK: Fix type of headline in docs --- Documentation/source/extending.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/source/extending.rst b/Documentation/source/extending.rst index 8ae8d32..cf899ba 100644 --- a/Documentation/source/extending.rst +++ b/Documentation/source/extending.rst @@ -58,7 +58,7 @@ has to exist: :file:`tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname .. _extending-tests-single: Single test per sniff ---------------------- +^^^^^^^^^^^^^^^^^^^^^ Inside of the folder at least a file :file:`InputFileForIssues.php` has to exist, containing PHP code to use for the test. Also a file :file:`Expected.json` has to exist, with the json result of @@ -72,7 +72,7 @@ If your sniff also implements fixable errors or warnings, you can further provid .. _extending-tests-multiple: Multiple tests per sniff ------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^ Also it's possible to provide multiple tests for a single sniff, e.g. with different cli arguments like options for the sniff. In that case you have to place a :file:`Arguments.php` in the folder. @@ -99,7 +99,7 @@ Also you can provide further cli arguments on a key -> value base. Where ``runti as it contains a sub array to provide multiple runtime sets. How sniff tests are implemented -------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ We just find all folders below :file:`tests/Fixtures/Standards/Typo3Update/Sniffs` ending with ``Sniff`` and check the structure. They are provided to the test itself through a dataprovider in From 27997c8445ec681e185d02be0c921192efed05bc Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 15:37:16 +0200 Subject: [PATCH 19/24] TASK: Link to configuration in docs. --- Documentation/source/features.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/source/features.rst b/Documentation/source/features.rst index a042484..e055e92 100644 --- a/Documentation/source/features.rst +++ b/Documentation/source/features.rst @@ -98,10 +98,10 @@ Also we check for the following deprecated calls: Check for usage of *removed functions* in general. The functions are configured via yaml files. The location of them is configurable, default is inside the standard itself, and we try to deliver all -information. For configuration options see ``removedFunctionConfigFiles``. +information. For configuration options see :ref:`configuration-removedFunctionConfigFiles`. Check for usage of *removed constants*. The constants are configured in same way as removed -functions. For configuration options see ``removedConstantConfigFiles``. +functions. For configuration options see :ref:`configuration-removedConstantConfigFiles`. Further checks From 7f7a7aa38d335a632abd66b5496ad8709e1bcfa7 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 16:35:54 +0200 Subject: [PATCH 20/24] TASK: Add missing docs --- src/Standards/Typo3Update/Feature/Features.php | 9 +++++++++ src/Standards/Typo3Update/Options.php | 5 +++++ .../MissingNamespaceSniff/nothingTodo/Expected.diff | 0 3 files changed, 14 insertions(+) create mode 100644 tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/Expected.diff diff --git a/src/Standards/Typo3Update/Feature/Features.php b/src/Standards/Typo3Update/Feature/Features.php index ac6ee42..386b99c 100644 --- a/src/Standards/Typo3Update/Feature/Features.php +++ b/src/Standards/Typo3Update/Feature/Features.php @@ -28,7 +28,16 @@ use Typo3Update\Options; */ class Features implements \Iterator { + /** + * Internal array position for \Iterator implementation. + * @var int + */ protected $index = 0; + + /** + * Internal array + * @var array + */ protected $features = []; /** diff --git a/src/Standards/Typo3Update/Options.php b/src/Standards/Typo3Update/Options.php index 6aba777..c5f8a9d 100644 --- a/src/Standards/Typo3Update/Options.php +++ b/src/Standards/Typo3Update/Options.php @@ -100,6 +100,11 @@ class Options return $option; } + /** + * Get the configured features. + * + * @return array + */ public static function getFeaturesConfiguration() { $option = []; diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/Expected.diff new file mode 100644 index 0000000..e69de29 From 370015e7c057afb306978b0f95a2ff685d2b1600 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 16:36:12 +0200 Subject: [PATCH 21/24] TASK: Refactor code * Reduce indentation. * Provide internal API to add new feature with necessary checks. --- .../Typo3Update/Feature/Features.php | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/Standards/Typo3Update/Feature/Features.php b/src/Standards/Typo3Update/Feature/Features.php index 386b99c..4db9e97 100644 --- a/src/Standards/Typo3Update/Feature/Features.php +++ b/src/Standards/Typo3Update/Feature/Features.php @@ -47,17 +47,29 @@ class Features implements \Iterator { foreach (Options::getFeaturesConfiguration() as $featureName => $sniffs) { if (in_array(get_class($sniff), $sniffs)) { - if (!class_implements($featureName, FeatureInterface::class)) { - throw new \Exception( - 'Configured Feature "' . $featureName . '" does not implement "' . FeatureInterface::class . '".', - 1493115488 - ); - } - $this->features[] = $featureName; + $this->addFeature($featureName); } } } + /** + * Add the given feature. + * + * @param string $featureName + * @return void + */ + protected function addFeature($featureName) + { + if (!class_implements($featureName, FeatureInterface::class)) { + throw new \Exception( + 'Configured Feature "' . $featureName . '" does not implement "' . FeatureInterface::class . '".', + 1493115488 + ); + } + + $this->features[] = $featureName; + } + // implement Iterator interface: public function current() { From e4f26abe71bb6d692e92ab17fe71bf07b3a1501e Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 25 Apr 2017 16:36:41 +0200 Subject: [PATCH 22/24] TASK: Add test case * Also test that we don't modify working parts --- .../MissingNamespaceSniff/Arguments.php | 1 + .../nothingTodo/Expected.json | 14 ++++++++++ .../nothingTodo/InputFileForIssues.php | 28 +++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/Expected.json create mode 100644 tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/InputFileForIssues.php diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/Arguments.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/Arguments.php index de034c3..1cba12b 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/Arguments.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/Arguments.php @@ -20,6 +20,7 @@ */ return [ + 'nothingTodo' => [], 'defaultVendor' => [], 'customVendor' => [ 'runtime-set' => [ diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/Expected.json new file mode 100644 index 0000000..b703ca7 --- /dev/null +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/Expected.json @@ -0,0 +1,14 @@ +{ + "files": { + "InputFileForIssues.php": { + "errors": 0, + "messages": [], + "warnings": 0 + } + }, + "totals": { + "errors": 0, + "fixable": 0, + "warnings": 0 + } +} diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/InputFileForIssues.php new file mode 100644 index 0000000..8f90a27 --- /dev/null +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassname/MissingNamespaceSniff/nothingTodo/InputFileForIssues.php @@ -0,0 +1,28 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +use Tx_Extbase_Mvc_Controller_ActionController; + +class Frontendcontroller extends Tx_Extbase_Mvc_Controller_ActionController +{ +} From cecfe983e06d5ee39fe30e19cfdbc5f7a4a71020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88rtgen?= Date: Thu, 27 Apr 2017 10:17:05 +0200 Subject: [PATCH 23/24] TASK: Simplfy feature support trait --- src/Standards/Typo3Update/Feature/FeaturesSupport.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Standards/Typo3Update/Feature/FeaturesSupport.php b/src/Standards/Typo3Update/Feature/FeaturesSupport.php index 2f84bc7..26975c5 100644 --- a/src/Standards/Typo3Update/Feature/FeaturesSupport.php +++ b/src/Standards/Typo3Update/Feature/FeaturesSupport.php @@ -28,13 +28,11 @@ use PHP_CodeSniffer_File as PhpCsFile; trait FeaturesSupport { /** - * @var Features + * @return Features */ - protected $features; - - public function __construct() + protected function getFeatures() { - $this->features = new Features($this); + return new Features($this); } /** @@ -46,7 +44,7 @@ trait FeaturesSupport */ public function processFeatures(PhpCsFile $phpcsFile, $stackPtr, $content) { - foreach ($this->features as $featureClassName) { + foreach ($this->getFeatures() as $featureClassName) { $feature = $this->createFeature($featureClassName); $feature->process($phpcsFile, $stackPtr, $content); } From 7398caa099da59fd0ef43ed3b8316e1b5decaca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hu=CC=88rtgen?= Date: Thu, 27 Apr 2017 10:23:02 +0200 Subject: [PATCH 24/24] =?UTF-8?q?TASK:=20Simplfy=20=E2=80=9Cfeatures"=20it?= =?UTF-8?q?erator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Standards/Typo3Update/Feature/Features.php | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/Standards/Typo3Update/Feature/Features.php b/src/Standards/Typo3Update/Feature/Features.php index 4db9e97..befea8f 100644 --- a/src/Standards/Typo3Update/Feature/Features.php +++ b/src/Standards/Typo3Update/Feature/Features.php @@ -28,12 +28,6 @@ use Typo3Update\Options; */ class Features implements \Iterator { - /** - * Internal array position for \Iterator implementation. - * @var int - */ - protected $index = 0; - /** * Internal array * @var array @@ -73,22 +67,22 @@ class Features implements \Iterator // implement Iterator interface: public function current() { - return $this->features[$this->index]; + return current($this->features); } public function key() { - return $this->index; + return key($this->features); } public function next() { - ++$this->index; + next($this->features); } public function rewind() { - $this->index = 0; + reset($this->features); } public function valid() { - return isset($this->features[$this->index]); + return current($this->features) !== false; } }