diff --git a/Documentation/source/configuration.rst b/Documentation/source/configuration.rst index 2454def..45a1314 100644 --- a/Documentation/source/configuration.rst +++ b/Documentation/source/configuration.rst @@ -233,6 +233,28 @@ Using ``runtime-set``: --runtime-set removedClassConfigFiles "/Some/Absolute/Path/*.yaml" +.. _configuration-removedExtensionConfigFiles: + +removedExtensionConfigFiles +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Configure where to look for configuration files defining the removed extensions. Default is +``Configuration/Removed/Extension/*.yaml`` inside the standard itself. We already try to deliver as +much as possible. Globing is used, so placeholders like ``*`` are possible, see +https://secure.php.net/manual/en/function.glob.php + +Using :file:`ruleset.xml`: + +.. code:: xml + + + +Using ``runtime-set``: + +.. code:: bash + + --runtime-set removedExtensionConfigFiles "/Some/Absolute/Path/*.yaml" + .. _configuration-removedGlobalConfigFiles: removedGlobalConfigFiles diff --git a/Documentation/source/features.rst b/Documentation/source/features.rst index 5cfe617..29c6994 100644 --- a/Documentation/source/features.rst +++ b/Documentation/source/features.rst @@ -109,6 +109,9 @@ functions. For configuration options see :ref:`configuration-removedClassConfigF Check for usage of *removed PHP globals*. The globals are configured in same way as removed functions. For configuration options see :ref:`configuration-removedGlobalConfigFiles`. +Check for usage of *removed TYPO3 extension*. For configuration options see +:ref:`configuration-removedExtensionConfigFiles`. + Check for usage of *removed signals*. The signals are configured in same way as removed functions. For configuration options see :ref:`configuration-removedSignalConfigFiles`. diff --git a/src/Standards/Typo3Update/Configuration/Features/RemovedExtension.yaml b/src/Standards/Typo3Update/Configuration/Features/RemovedExtension.yaml new file mode 100644 index 0000000..20d6ee5 --- /dev/null +++ b/src/Standards/Typo3Update/Configuration/Features/RemovedExtension.yaml @@ -0,0 +1,14 @@ +Typo3Update\Feature\RemovedExtensionFeature: + - 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_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/Configuration/Removed/Extension/7.0.yaml b/src/Standards/Typo3Update/Configuration/Removed/Extension/7.0.yaml new file mode 100644 index 0000000..1f1e3fe --- /dev/null +++ b/src/Standards/Typo3Update/Configuration/Removed/Extension/7.0.yaml @@ -0,0 +1,6 @@ +# Breaking changes in 7.0: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Index.html#breaking-changes +'7.0': + perm: + replacement: 'The logic is moved into EXT:beuser' + docsUrl: 'https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html' + diff --git a/src/Standards/Typo3Update/Feature/FeaturesSupport.php b/src/Standards/Typo3Update/Feature/FeaturesSupport.php index 26975c5..5eb06ec 100644 --- a/src/Standards/Typo3Update/Feature/FeaturesSupport.php +++ b/src/Standards/Typo3Update/Feature/FeaturesSupport.php @@ -21,12 +21,15 @@ namespace Typo3Update\Feature; */ use PHP_CodeSniffer_File as PhpCsFile; +use Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; /** * Provides "feature" support for sniffs. */ trait FeaturesSupport { + use ExtendedPhpCsSupportTrait; + /** * @return Features */ @@ -44,6 +47,8 @@ trait FeaturesSupport */ public function processFeatures(PhpCsFile $phpcsFile, $stackPtr, $content) { + $content = $this->getStringContent($content); + foreach ($this->getFeatures() as $featureClassName) { $feature = $this->createFeature($featureClassName); $feature->process($phpcsFile, $stackPtr, $content); diff --git a/src/Standards/Typo3Update/Feature/RemovedExtensionFeature.php b/src/Standards/Typo3Update/Feature/RemovedExtensionFeature.php new file mode 100644 index 0000000..38d2e91 --- /dev/null +++ b/src/Standards/Typo3Update/Feature/RemovedExtensionFeature.php @@ -0,0 +1,82 @@ + + * + * 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\Options; + +class RemovedExtensionFeature extends AbstractYamlRemovedUsage +{ + public function process(PhpCsFile $phpcsFile, $classnamePosition, $classname) + { + $extname = $this->getExtnameFromClassname($classname); + if ($extname === '' || $this->configured->isRemoved($extname) === false) { + return; + } + + $this->addWarning( + $phpcsFile, + $classnamePosition, + $this->configured->getRemoved($extname) + ); + } + + protected function getExtnameFromClassname($classname) + { + $classname = ltrim($classname, '\\'); + $classnameParts = array_filter(preg_split('/\\\\|_/', $classname)); + $classnameParts = array_values($classnameParts); // To reset key numbers of array. + $extname = ''; + + if (count($classnameParts) <= 2) { + return ''; + } + + $extname = $classnameParts[1]; + if (stripos($classname, 'TYPO3\CMS') === 0) { + $extname = $classnameParts[2]; + } + + return strtolower($extname); + } + + protected function prepareStructure(array $typo3Versions) + { + $newStructure = []; + foreach ($typo3Versions as $typo3Version => $removals) { + foreach ($removals as $removed => $config) { + $config['name'] = $removed; + $config['identifier'] = 'RemovedExtension.' . str_replace('\\', '_', ltrim($removed, '\\')); + $config['versionRemoved'] = $typo3Version; + $config['oldUsage'] = $removed; + + $newStructure[$removed] = $config; + } + } + + return $newStructure; + } + + protected function getRemovedConfigFiles() + { + return Options::getRemovedExtensionConfigFiles(); + } +} diff --git a/src/Standards/Typo3Update/Options.php b/src/Standards/Typo3Update/Options.php index 05df9c1..2c73606 100644 --- a/src/Standards/Typo3Update/Options.php +++ b/src/Standards/Typo3Update/Options.php @@ -56,6 +56,17 @@ class Options ); } + /** + * @return array + */ + public static function getRemovedExtensionConfigFiles() + { + return static::getOptionFileNames( + 'removedExtensionConfigFiles', + __DIR__ . '/Configuration/Removed/Extension/*.yaml' + ); + } + /** * Returns an array of absolute file names containing removed function configurations. * diff --git a/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php b/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php index e405fdc..3ca906b 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/AbstractClassnameChecker.php @@ -62,19 +62,75 @@ abstract class AbstractClassnameChecker implements PhpCsSniff */ 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) { + try { + if ($this->shouldLookBefore()) { + list($classnamePosition, $classname) = $this->getBefore($phpcsFile, $stackPtr); + } else { + list($classnamePosition, $classname) = $this->getAfter($phpcsFile, $stackPtr); + } + } catch (\UnexpectedValueException $e) { return; } - $classname = $tokens[$classnamePosition]['content']; $this->processFeatures($phpcsFile, $classnamePosition, $classname); } + + /** + * Get position and classname before current stack pointer. + * + * @param PhpCsFile $phpcsFile + * @param int $stackPtr The position in the stack where + * + * @return array + */ + protected function getBefore(PhpCsFile $phpcsFile, $stackPtr) + { + $possibleStart = $phpcsFile->findPrevious([ + T_STRING, T_NS_SEPARATOR, + ], $stackPtr - 1, null, true, null, true); + if ($possibleStart === false) { + throw new \UnexpectedValueException('Could not find start of classname.', 1494319966); + } + + $classnamePosition = $phpcsFile->findNext(T_STRING, $possibleStart); + if ($classnamePosition === false) { + throw new \UnexpectedValueException('Could not find start of classname.', 1494319966); + } + + $end = $phpcsFile->findNext([ + T_STRING, T_NS_SEPARATOR + ], $classnamePosition + 1, $stackPtr + 1, true, null, true); + if ($end === false) { + throw new \UnexpectedValueException('Could not find end of classname.', 1494319651); + } + + $classname = $phpcsFile->getTokensAsString($classnamePosition, $end - $classnamePosition); + + return [$classnamePosition, $classname]; + } + + /** + * Get position and classname after current stack pointer. + * + * @param PhpCsFile $phpcsFile + * @param int $stackPtr The position in the stack where + * + * @return array + */ + protected function getAfter(PhpCsFile $phpcsFile, $stackPtr) + { + $classnamePosition = $phpcsFile->findNext(T_STRING, $stackPtr); + if ($classnamePosition === false) { + throw new \UnexpectedValueException('Could not find start of classname.', 1494319665); + } + + $end = $phpcsFile->findNext([T_STRING, T_NS_SEPARATOR], $classnamePosition, null, true, null, true); + if ($end === false) { + throw new \UnexpectedValueException('Could not find end of classname.', 1494319651); + } + + $classname = $phpcsFile->getTokensAsString($classnamePosition, $end - $classnamePosition); + + return [$classnamePosition, $classname]; + } } diff --git a/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php index 2ce6d36..ffcf0ad 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff.php @@ -72,11 +72,19 @@ class Typo3Update_Sniffs_Classname_InheritanceSniff extends AbstractClassnameChe return; } + $lastPosition = $phpcsFile->findNext(T_OPEN_CURLY_BRACKET, $stackPtr); + foreach ($interfaces as $interface) { - $position = $phpcsFile->findNext(T_STRING, $stackPtr, null, false, $interface); - if ($position === false) { - continue; - } + $interface = trim($interface, '\\'); + $position = $stackPtr; + + do { + try { + list($position, $classname) = $this->getAfter($phpcsFile, $position + 1); + } catch (\UnexpectedValueException $e) { + continue 2; + } + } while ($classname !== $interface && $position <= $lastPosition); $this->processFeatures($phpcsFile, $position, $interface); } diff --git a/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php index 070162a..04c9a89 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff.php @@ -34,7 +34,7 @@ class Typo3Update_Sniffs_Classname_InstantiationWithMakeInstanceSniff extends Ab */ public function register() { - return Tokens::$functionNameTokens; + return [T_STRING]; } /** @@ -57,13 +57,12 @@ class Typo3Update_Sniffs_Classname_InstantiationWithMakeInstanceSniff extends Ab return; } - $classnamePosition = $phpcsFile->findNext(T_CONSTANT_ENCAPSED_STRING, $stackPtr); + $classnamePosition = $phpcsFile->findNext(T_CONSTANT_ENCAPSED_STRING, $stackPtr, null, false, null, true); if ($classnamePosition === false) { return; } $classname = $tokens[$classnamePosition]['content']; - $this->originalTokenContent = $tokens[$classnamePosition]['content']; $this->processFeatures($phpcsFile, $classnamePosition, $classname); } } diff --git a/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php index 05f49c1..0aa738c 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff.php @@ -51,10 +51,18 @@ class Typo3Update_Sniffs_Classname_TypeHintSniff extends AbstractClassnameChecke continue; } - $position = $phpcsFile->findPrevious(T_STRING, $parameter['token'], $stackPtr, false, null, true); + $position = $phpcsFile->findPrevious([ + T_OPEN_PARENTHESIS, T_COMMA + ], $parameter['token'] - 2, $stackPtr, false, null, true); if ($position === false) { continue; } + + $position = $phpcsFile->findNext(T_STRING, $position); + if ($position === false) { + continue; + } + $this->processFeatures($phpcsFile, $position, $parameter['type_hint']); } } diff --git a/src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php b/src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php index 67c00e6..a58a54d 100644 --- a/src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Classname/UseSniff.php @@ -19,7 +19,6 @@ * 02110-1301, USA. */ -use PHP_CodeSniffer_File as PhpCsFile; use Typo3Update\Sniffs\Classname\AbstractClassnameChecker; class Typo3Update_Sniffs_Classname_UseSniff extends AbstractClassnameChecker diff --git a/src/Standards/Typo3Update/Sniffs/Removed/ExtensionSniff.php b/src/Standards/Typo3Update/Sniffs/Removed/ExtensionSniff.php new file mode 100644 index 0000000..16d829e --- /dev/null +++ b/src/Standards/Typo3Update/Sniffs/Removed/ExtensionSniff.php @@ -0,0 +1,62 @@ + + * + * 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\Options; +use Typo3Update\Sniffs\ExtendedPhpCsSupportTrait; +use Typo3Update\Sniffs\Removed\AbstractGenericUsage; + +class Typo3Update_Sniffs_Removed_ExtensionSniff extends AbstractGenericUsage +{ + use ExtendedPhpCsSupportTrait; + + /** + * @var array + */ + public $methodsToCheck = ['isLoaded', 'extPath', 'extRelPath', 'getCN', 'getExtensionVersion']; + + public function register() + { + return [T_STRING]; + } + + protected function getRemovedConfigFiles() + { + return Options::getRemovedExtensionConfigFiles(); + } + + protected function findRemoved(PhpCsFile $phpcsFile, $stackPtr) + { + $token = $phpcsFile->getTokens()[$stackPtr]; + if (!$this->isFunctionCall($phpcsFile, $stackPtr) + || !in_array($token['content'], $this->methodsToCheck) + ) { + return []; + } + + $arguments = $this->getFunctionCallParameters($phpcsFile, $stackPtr); + if ($this->configured->isRemoved($arguments[0])) { + return [$this->configured->getRemoved($arguments[0])]; + } + + return []; + } +} diff --git a/src/Standards/Typo3Update/Sniffs/Removed/TypoScriptConstantSniff.php b/src/Standards/Typo3Update/Sniffs/Removed/TypoScriptConstantSniff.php index c396d32..3a71618 100644 --- a/src/Standards/Typo3Update/Sniffs/Removed/TypoScriptConstantSniff.php +++ b/src/Standards/Typo3Update/Sniffs/Removed/TypoScriptConstantSniff.php @@ -42,23 +42,6 @@ class Typo3Update_Sniffs_Removed_TypoScriptConstantSniff extends AbstractGeneric ]; } - protected function prepareStructure(array $typo3Versions) - { - $newStructure = []; - - foreach ($typo3Versions as $typo3Version => $removals) { - foreach ($removals as $removed => $config) { - $config['name'] = $removed; - $config['identifier'] = $removed; - $config['oldUsage'] = $removed; - $config['versionRemoved'] = $typo3Version; - $newStructure[$removed] = $config; - } - } - - return $newStructure; - } - protected function findRemoved(PhpCsFile $phpcsFile, $stackPtr) { $removed = []; diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.json index e441162..a4d63d5 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/Expected.json @@ -56,14 +56,41 @@ "severity": 5, "source": "Typo3Update.Classname.Inheritance.legacyClassname", "type": "ERROR" + }, + { + "column": 35, + "fixable": false, + "line": 34, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.Inheritance.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 6, + "fixable": false, + "line": 35, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.Inheritance.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 5, + "fixable": false, + "line": 36, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.Inheritance.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 3 } }, "totals": { "errors": 6, "fixable": 6, - "warnings": 0 + "warnings": 3 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/InputFileForIssues.php index ee8fd0f..4eeafb3 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InheritanceSniff/InputFileForIssues.php @@ -30,3 +30,10 @@ class InputFileForIssues extends Tx_Extbase_Configuration_Configurationmanager i { } + +class InputFileForIssues extends \TYPO3\CMS\Perm\Controller\PermissionAjaxController implements + \TYPO3\CMS\Perm\Controller\PermissionAjaxController, + TYPO3\CMS\Perm\Controller\PermissionModuleController +{ + +} diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.diff index 5f59195..57d888b 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.diff @@ -19,5 +19,5 @@ - // @var Tx_Extbase_Command_HelpCommandController $variable + // @var \TYPO3\CMS\Extbase\Command\HelpCommandController $variable $variable; - } - } + + /* @var $variable TYPO3\CMS\Perm\Controller\PermissionAjaxController */ diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.json index 2a6f3ab..580e6d2 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/Expected.json @@ -38,14 +38,50 @@ "severity": 5, "source": "Typo3Update.Classname.InlineComment.legacyClassname", "type": "ERROR" + }, + { + "column": 9, + "fixable": false, + "line": 38, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.InlineComment.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 9, + "fixable": false, + "line": 41, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.InlineComment.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 9, + "fixable": false, + "line": 44, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.InlineComment.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 9, + "fixable": false, + "line": 47, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.InlineComment.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 4 } }, "totals": { "errors": 4, "fixable": 4, - "warnings": 0 + "warnings": 4 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/InputFileForIssues.php index eedd2f8..47ffde1 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InlineCommentSniff/InputFileForIssues.php @@ -34,5 +34,17 @@ class InputFileForIssues // @var Tx_Extbase_Command_HelpCommandController $variable $variable; + + /* @var $variable TYPO3\CMS\Perm\Controller\PermissionAjaxController */ + $variable; + + // @var $variable \TYPO3\CMS\Perm\Controller\PermissionAjaxController + $variable; + + /* @var \TYPO3\CMS\Perm\Controller\PermissionAjaxController $variable */ + $variable; + + // @var TYPO3\CMS\Perm\Controller\PermissionAjaxController $variable + $variable; } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff index 49e34a3..43118c8 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.diff @@ -1,6 +1,6 @@ --- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/InputFileForIssues.php +++ PHP_CodeSniffer -@@ -19,6 +19,6 @@ +@@ -19,7 +19,7 @@ * 02110-1301, USA. */ @@ -8,3 +8,4 @@ +if ($a instanceof \TYPO3\CMS\Core\SingletonInterface) { // do something } + if ($a instanceof \TYPO3\CMS\Perm\Controller\PermissionAjaxController) { diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.json index 2cb2586..53b774e 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/Expected.json @@ -11,14 +11,32 @@ "severity": 5, "source": "Typo3Update.Classname.Instanceof.legacyClassname", "type": "ERROR" + }, + { + "column": 20, + "fixable": false, + "line": 25, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.Instanceof.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 19, + "fixable": false, + "line": 28, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.Instanceof.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 2 } }, "totals": { "errors": 1, "fixable": 1, - "warnings": 0 + "warnings": 2 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/InputFileForIssues.php index 8fe907f..96f6a76 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstanceofSniff/InputFileForIssues.php @@ -22,3 +22,9 @@ if ($a instanceof t3lib_Singleton) { // do something } +if ($a instanceof \TYPO3\CMS\Perm\Controller\PermissionAjaxController) { + // do something +} +if ($a instanceof TYPO3\CMS\Perm\Controller\PermissionAjaxController) { + // do something +} diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.json index b0f764e..505d5ee 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/Expected.json @@ -11,14 +11,23 @@ "severity": 5, "source": "Typo3Update.Classname.InstantiationWithMakeInstance.legacyClassname", "type": "ERROR" + }, + { + "column": 25, + "fixable": false, + "line": 27, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.InstantiationWithMakeInstance.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 1 } }, "totals": { "errors": 1, "fixable": 1, - "warnings": 0 + "warnings": 1 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/InputFileForIssues.php index ccc9a0c..85f095c 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithMakeInstanceSniff/InputFileForIssues.php @@ -23,3 +23,5 @@ t3lib_div::makeInstance('Tx_Extbase_Command_HelpCommandController'); t3lib_div::makeInstance(\TYPO3\CMS\Core\Resource\Service\IndexerService::class); // Not handled by this sniff, but StaticCallSniff, as this uses double colon. t3lib_div::makeInstance(Tx_Extbase_Command_HelpCommandController::class); + +t3lib_div::makeInstance('TYPO3\CMS\Perm\Controller\PermissionAjaxController'); diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.diff index 3e4f8b5..4c9871f 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.diff @@ -1,6 +1,6 @@ --- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/InputFileForIssues.php +++ PHP_CodeSniffer -@@ -19,13 +19,13 @@ +@@ -19,14 +19,14 @@ * 02110-1301, USA. */ @@ -20,3 +20,4 @@ +(new \TYPO3\CMS\Extbase\Command\HelpCommandController) ->doSomething() ; + diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.json index d06ec76..8be441e 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/Expected.json @@ -56,14 +56,32 @@ "severity": 5, "source": "Typo3Update.Classname.InstantiationWithNew.legacyClassname", "type": "ERROR" + }, + { + "column": 5, + "fixable": false, + "line": 33, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.InstantiationWithNew.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 7, + "fixable": false, + "line": 34, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.InstantiationWithNew.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 2 } }, "totals": { "errors": 6, "fixable": 6, - "warnings": 0 + "warnings": 2 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/InputFileForIssues.php index 1f58640..9304a3e 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithNewSniff/InputFileForIssues.php @@ -29,3 +29,8 @@ new Tx_Extbase_Command_HelpCommandController; (new Tx_Extbase_Command_HelpCommandController) ->doSomething() ; + +new TYPO3\CMS\Perm\Controller\PermissionAjaxController; +(new \TYPO3\CMS\Perm\Controller\PermissionAjaxController) + ->doSomething() + ; diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.diff index 873ee97..56def1d 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.diff @@ -1,6 +1,6 @@ --- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/InputFileForIssues.php +++ PHP_CodeSniffer -@@ -21,13 +21,13 @@ +@@ -21,16 +21,16 @@ // Not handled by this sniff, but StaticCallSniff, as this uses double colon. $this->objectManager->get(\Tx_Extbase_Command_HelpCommandController::class); @@ -18,3 +18,6 @@ \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\ObjectManager) - ->get('Tx_Extbase_Command_HelpCommandController'); + ->get('\TYPO3\CMS\Extbase\Command\HelpCommandController'); + + \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\ObjectManager) + ->get('\TYPO3\CMS\Perm\Controller\PermissionAjaxController'); diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.json index 273b495..58fa8c8 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/Expected.json @@ -38,14 +38,32 @@ "severity": 5, "source": "Typo3Update.Classname.InstantiationWithObjectManager.legacyClassname", "type": "ERROR" + }, + { + "column": 11, + "fixable": false, + "line": 36, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.InstantiationWithObjectManager.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 27, + "fixable": false, + "line": 37, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.InstantiationWithObjectManager.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 2 } }, "totals": { "errors": 4, "fixable": 4, - "warnings": 0 + "warnings": 2 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/InputFileForIssues.php index 75d9d58..12a81fc 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/InstantiationWithObjectManagerSniff/InputFileForIssues.php @@ -31,3 +31,7 @@ $this->objectManager->get('Tx_Extbase_Command_HelpCommandController'); ->get('\Tx_Extbase_Command_HelpCommandController'); \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\ObjectManager) ->get('Tx_Extbase_Command_HelpCommandController'); + +\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\ObjectManager) + ->get('\TYPO3\CMS\Perm\Controller\PermissionAjaxController'); +$this->objectManager->get('TYPO3\CMS\Perm\Controller\PermissionAjaxController'); diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.diff index d099979..30d8556 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,15 +23,15 @@ +@@ -23,16 +23,16 @@ if (is_a($a, t3lib_Singleton::class)) { // do something } @@ -20,3 +20,4 @@ +if (is_a($a, "\\TYPO3\\CMS\\Core\\SingletonInterface")) { // do something } + if (is_a($a, "\\TYPO3\CMS\Perm\Controller\PermissionAjaxController")) { diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json index 6795e14..4120a2d 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/Expected.json @@ -38,14 +38,23 @@ "severity": 5, "source": "Typo3Update.Classname.IsACall.legacyClassname", "type": "ERROR" + }, + { + "column": 14, + "fixable": false, + "line": 38, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.IsACall.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 1 } }, "totals": { "errors": 4, "fixable": 4, - "warnings": 0 + "warnings": 1 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php index 53a8a7b..cdcf3ba 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/IsACallSniff/InputFileForIssues.php @@ -35,3 +35,6 @@ if (is_a($a, "t3lib_Singleton")) { if (is_a($a, "\\t3lib_Singleton")) { // do something } +if (is_a($a, "\\TYPO3\CMS\Perm\Controller\PermissionAjaxController")) { + // do something +} diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.diff index 2efed23..4dad959 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.diff @@ -1,6 +1,6 @@ --- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/InputFileForIssues.php +++ PHP_CodeSniffer -@@ -22,26 +22,26 @@ +@@ -22,27 +22,27 @@ class InputFileForIssues { /** @@ -22,6 +22,7 @@ - * @param t3lib_div + * @param \TYPO3\CMS\Core\Utility\GeneralUtility * @param \TYPO3\CMS\Backend\Template\MediumDocumentTemplate + * @param \TYPO3\CMS\Perm\Controller\PermissionAjaxController * - * @return Tx_Extbase_Configuration_Configurationmanager + * @return \TYPO3\CMS\Extbase\Configuration\ConfigurationManager diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.json index d06c907..d0d3321 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/Expected.json @@ -49,19 +49,19 @@ "type": "WARNING" }, { - "column": 16, - "fixable": true, - "line": 40, - "message": "Legacy classes are not allowed; found \"Tx_Extbase_Configuration_Configurationmanager\", use \"TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager\" instead", + "column": 15, + "fixable": false, + "line": 39, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", "severity": 5, - "source": "Typo3Update.Classname.PhpDocComment.legacyClassname", - "type": "ERROR" + "source": "Typo3Update.Classname.PhpDocComment.RemovedExtension.perm", + "type": "WARNING" }, { - "column": 18, + "column": 16, "fixable": true, - "line": 44, - "message": "Legacy classes are not allowed; found \"t3lib_div\", use \"TYPO3\\CMS\\Core\\Utility\\GeneralUtility\" instead", + "line": 41, + "message": "Legacy classes are not allowed; found \"Tx_Extbase_Configuration_Configurationmanager\", use \"TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager\" instead", "severity": 5, "source": "Typo3Update.Classname.PhpDocComment.legacyClassname", "type": "ERROR" @@ -74,14 +74,23 @@ "severity": 5, "source": "Typo3Update.Classname.PhpDocComment.legacyClassname", "type": "ERROR" + }, + { + "column": 18, + "fixable": true, + "line": 46, + "message": "Legacy classes are not allowed; found \"t3lib_div\", use \"TYPO3\\CMS\\Core\\Utility\\GeneralUtility\" instead", + "severity": 5, + "source": "Typo3Update.Classname.PhpDocComment.legacyClassname", + "type": "ERROR" } ], - "warnings": 1 + "warnings": 2 } }, "totals": { "errors": 7, "fixable": 7, - "warnings": 1 + "warnings": 2 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/InputFileForIssues.php index 6146222..a702689 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/PhpDocCommentSniff/InputFileForIssues.php @@ -36,6 +36,7 @@ class InputFileForIssues /** * @param t3lib_div * @param \TYPO3\CMS\Backend\Template\MediumDocumentTemplate + * @param \TYPO3\CMS\Perm\Controller\PermissionAjaxController * * @return Tx_Extbase_Configuration_Configurationmanager */ diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.diff index 24c7315..0260e0b 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.diff @@ -1,6 +1,6 @@ --- tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/InputFileForIssues.php +++ PHP_CodeSniffer -@@ -19,13 +19,13 @@ +@@ -19,16 +19,16 @@ * 02110-1301, USA. */ @@ -19,3 +19,6 @@ -is_a($a, t3lib_Singleton::class); + ->get(\TYPO3\CMS\Extbase\Command\HelpCommandController::class); +is_a($a, \TYPO3\CMS\Core\SingletonInterface::class); + + \TYPO3\CMS\Perm\Controller\PermissionAjaxController::configurePlugin( + $_EXTKEY, diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.json index 124198b..e9ade00 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/Expected.json @@ -56,14 +56,32 @@ "severity": 5, "source": "Typo3Update.Classname.StaticCall.legacyClassname", "type": "ERROR" + }, + { + "column": 2, + "fixable": false, + "line": 33, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.StaticCall.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 28, + "fixable": false, + "line": 38, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.StaticCall.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 2 } }, "totals": { "errors": 6, "fixable": 6, - "warnings": 0 + "warnings": 2 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/InputFileForIssues.php index df4f280..c3e89b6 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/StaticCallSniff/InputFileForIssues.php @@ -29,3 +29,10 @@ $this->objectManager->get(\Tx_Extbase_Command_HelpCommandController::class); \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\ObjectManager) ->get(\Tx_Extbase_Command_HelpCommandController::class); is_a($a, t3lib_Singleton::class); + +\TYPO3\CMS\Perm\Controller\PermissionAjaxController::configurePlugin( + $_EXTKEY, + 'name', + ['Controller' => 'action'] +); +$this->objectManager->get(\TYPO3\CMS\Perm\Controller\PermissionAjaxController::class); diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/Expected.json index 59701dd..5748bcc 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/Expected.json @@ -20,14 +20,23 @@ "severity": 5, "source": "Typo3Update.Classname.TypeHintCatchException.legacyClassname", "type": "ERROR" + }, + { + "column": 11, + "fixable": false, + "line": 48, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.TypeHintCatchException.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 1 } }, "totals": { "errors": 2, "fixable": 2, - "warnings": 0 + "warnings": 1 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/InputFileForIssues.php index 0ea392d..28e47f6 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintCatchExceptionSniff/InputFileForIssues.php @@ -42,3 +42,9 @@ try { } catch (TYPO3\CMS\Extbase\Exception $e) { // else } + +try { + // something +} catch (\TYPO3\CMS\Perm\Controller\PermissionAjaxController $e) { + // else +} diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff index 54ec8ea..7ccb526 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.diff @@ -38,4 +38,4 @@ + public function something(\TYPO3\CMS\Extbase\Domain\Model\BackendUser $user) { } - } + diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.json index 9fde95c..f0d2559 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/Expected.json @@ -56,14 +56,41 @@ "severity": 5, "source": "Typo3Update.Classname.TypeHint.legacyClassname", "type": "ERROR" + }, + { + "column": 31, + "fixable": false, + "line": 63, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.TypeHint.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 96, + "fixable": false, + "line": 63, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.TypeHint.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 31, + "fixable": false, + "line": 66, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.TypeHint.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 3 } }, "totals": { "errors": 6, "fixable": 6, - "warnings": 0 + "warnings": 3 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/InputFileForIssues.php index 8200349..7f88ddd 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/TypeHintSniff/InputFileForIssues.php @@ -59,4 +59,11 @@ class SomeClass public function something(Tx_Extbase_Domain_Model_Backenduser $user) { } + + public function something(TYPO3\CMS\Perm\Controller\PermissionAjaxController $controller, \Tx_Perm_Controller_PermissionAjaxController $controller) + { + } + public function something(Tx_Perm_Controller_PermissionAjaxController $controller) + { + } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.diff b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.diff index ff0098d..0783031 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.diff +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.diff @@ -10,4 +10,4 @@ +use TYPO3\CMS\Extbase\Domain\Model\BackendUser; use TYPO3\CMS\Extbase\Mvc\Cli\Command; use \TYPO3\CMS\Extbase\Mvc\Cli\Command; - + use TYPO3\CMS\Perm\Controller\PermissionAjaxController; diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.json index 63816bd..7df8978 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.json +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/Expected.json @@ -20,14 +20,41 @@ "severity": 5, "source": "Typo3Update.Classname.Use.legacyClassname", "type": "ERROR" + }, + { + "column": 5, + "fixable": false, + "line": 26, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.Use.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 6, + "fixable": false, + "line": 27, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.Use.RemovedExtension.perm", + "type": "WARNING" + }, + { + "column": 5, + "fixable": false, + "line": 28, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Classname.Use.RemovedExtension.perm", + "type": "WARNING" } ], - "warnings": 0 + "warnings": 3 } }, "totals": { "errors": 2, "fixable": 2, - "warnings": 0 + "warnings": 3 } } diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/InputFileForIssues.php index 7dbcfd4..972b2db 100644 --- a/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/InputFileForIssues.php +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Classname/UseSniff/InputFileForIssues.php @@ -23,4 +23,6 @@ use \Tx_Extbase_Domain_Model_Backenduser; use Tx_Extbase_Domain_Model_Backenduser; use TYPO3\CMS\Extbase\Mvc\Cli\Command; use \TYPO3\CMS\Extbase\Mvc\Cli\Command; - +use TYPO3\CMS\Perm\Controller\PermissionAjaxController; +use \Tx_Perm_Controller_PermissionAjaxController; +use Tx_Perm_Controller_PermissionAjaxController; diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Removed/ExtensionSniff/Expected.json b/tests/Fixtures/Standards/Typo3Update/Sniffs/Removed/ExtensionSniff/Expected.json new file mode 100644 index 0000000..a2cc1d7 --- /dev/null +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Removed/ExtensionSniff/Expected.json @@ -0,0 +1,33 @@ +{ + "files": { + "InputFileForIssues.php": { + "errors": 0, + "messages": [ + { + "column": 53, + "fixable": false, + "line": 22, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Removed.Extension.perm", + "type": "WARNING" + }, + { + "column": 53, + "fixable": false, + "line": 23, + "message": "Calls to removed code are not allowed; found perm. Removed in 7.0. The logic is moved into EXT:beuser. See: https://docs.typo3.org/typo3cms/extensions/core/7.6/Changelog/7.0/Breaking-62339-MoveExtPermIntoExtBeuser.html", + "severity": 5, + "source": "Typo3Update.Removed.Extension.perm", + "type": "WARNING" + } + ], + "warnings": 2 + } + }, + "totals": { + "errors": 0, + "fixable": 0, + "warnings": 2 + } +} diff --git a/tests/Fixtures/Standards/Typo3Update/Sniffs/Removed/ExtensionSniff/InputFileForIssues.php b/tests/Fixtures/Standards/Typo3Update/Sniffs/Removed/ExtensionSniff/InputFileForIssues.php new file mode 100644 index 0000000..c9039ad --- /dev/null +++ b/tests/Fixtures/Standards/Typo3Update/Sniffs/Removed/ExtensionSniff/InputFileForIssues.php @@ -0,0 +1,23 @@ + + * + * 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. + */ + +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('perm'); +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('perm'); diff --git a/tests/Sniffs/Removed/ExtensionSniffTest.php b/tests/Sniffs/Removed/ExtensionSniffTest.php new file mode 100644 index 0000000..d563ca0 --- /dev/null +++ b/tests/Sniffs/Removed/ExtensionSniffTest.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 Typo3Update\Tests\SniffsTest; + +class ExtensionSniffTest extends SniffsTest +{ +}