From 38651f315e2b6133613dede9fbc939dd5d83140b Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Thu, 16 Mar 2017 15:13:33 +0100 Subject: [PATCH] FEATURE: Migrate use statements Resolves: #16 --- Readme.rst | 2 + .../Sniffs/LegacyClassnames/UseSniff.php | 61 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff.php diff --git a/Readme.rst b/Readme.rst index 4aba35d..ec4791d 100644 --- a/Readme.rst +++ b/Readme.rst @@ -65,6 +65,8 @@ new ones like ``\TYPO3\Extbase\...``. This is done for: separately. Only Classnames in Strings are supported, no ``::class``. +- ``use`` statements. + Also we check for the following deprecated calls: - Check for ``create`` on ``ObjectManager``, which is "stupid" just all ``create`` calls are marked diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff.php b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff.php new file mode 100644 index 0000000..cdce679 --- /dev/null +++ b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/UseSniff.php @@ -0,0 +1,61 @@ + + * + * 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_Tokens as Tokens; + +/** + * Migrate Typehints in function / method definitions. + */ +class Typo3Update_Sniffs_LegacyClassnames_UseSniff implements PHP_CodeSniffer_Sniff +{ + use \Typo3Update\Sniffs\LegacyClassnames\ClassnameCheckerTrait; + + /** + * Returns the token types that this sniff is interested in. + * + * @return array + */ + public function register() + { + return [T_USE]; + } + + /** + * Processes the tokens that this sniff is interested in. + * + * @param PHP_CodeSniffer_File $phpcsFile The file where the token was found. + * @param int $stackPtr The position in the stack where + * the token was found. + * + * @return void + */ + public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) + { + $tokens = $phpcsFile->getTokens(); + $classnamePosition = $phpcsFile->findNext(T_STRING, $stackPtr); + if ($classnamePosition === false) { + return; + } + $classname = $tokens[$classnamePosition]['content']; + + $this->addFixableError($phpcsFile, $classnamePosition, $classname); + } +}