From d1a2271e6ebe9c7b577130a61a0c7c5ecc82430d Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 7 Mar 2017 16:22:37 +0100 Subject: [PATCH 1/2] FIX: Adjust variable name and type * As the property only contains the content, and content is a string, we adjust the code accordingly. --- .../Sniffs/LegacyClassnames/DocCommentSniff.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff.php b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff.php index 01c9b52..f2c1792 100644 --- a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff.php +++ b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff.php @@ -35,10 +35,10 @@ class Typo3Update_Sniffs_LegacyClassnames_DocCommentSniff implements PHP_CodeSni protected $allowedTags = ['@param', '@return', '@var']; /** - * Original token for reuse accross methods. - * @var array + * Original token content for reuse accross methods. + * @var string */ - protected $originalToken = []; + protected $originalTokenContent = ''; /** * Returns the token types that this sniff is interested in. @@ -73,20 +73,19 @@ class Typo3Update_Sniffs_LegacyClassnames_DocCommentSniff implements PHP_CodeSni } $classname = explode(' ', $tokens[$classnamePosition]['content'])[0]; - $this->originalToken = $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 $classname * @return string */ public function getTokenForReplacement($classname) { - $token = explode(' ', $this->originalToken); + $token = explode(' ', $this->originalTokenContent); $token[0] = $classname; return implode(' ', $token); From e88e177440428b36b0c044305e4302252d808136 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 7 Mar 2017 16:24:17 +0100 Subject: [PATCH 2/2] FEATURE: Migrate legacy class names in TypeHints * Check function / method definitions and their type hints. Resolves: #5 --- .../Sniffs/LegacyClassnames/TypeHintSniff.php | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff.php diff --git a/src/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff.php b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff.php new file mode 100644 index 0000000..7e1bb56 --- /dev/null +++ b/src/Standards/Typo3Update/Sniffs/LegacyClassnames/TypeHintSniff.php @@ -0,0 +1,65 @@ + + * + * 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_TypehintSniff 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_FUNCTION]; + } + + /** + * 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) + { + $params = $phpcsFile->getMethodParameters($stackPtr); + foreach ($params as $parameter) { + if ($parameter['type_hint'] === '') { + continue; + } + + $position = $phpcsFile->findPrevious(T_STRING, $parameter['token'], $stackPtr, false, null, true); + if ($position === false) { + continue; + } + $this->addFixableError($phpcsFile, $position, $parameter['type_hint']); + } + } +}