Merge branch 'feature/44-add-checks-for-deprecated-removed-extensions' into 'develop'

FEATURE: Add checks for deprecated/removed extensions

Closes #44

See merge request !70
This commit is contained in:
Daniel Siepmann 2017-05-18 08:41:09 +02:00
commit 0d8ca01ae3
50 changed files with 719 additions and 80 deletions

View file

@ -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
<config name="removedExtensionConfigFiles" value="/Some/Absolute/Path/*.yaml"/>
Using ``runtime-set``:
.. code:: bash
--runtime-set removedExtensionConfigFiles "/Some/Absolute/Path/*.yaml"
.. _configuration-removedGlobalConfigFiles:
removedGlobalConfigFiles

View file

@ -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`.

View file

@ -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

View file

@ -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'

View file

@ -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);

View file

@ -0,0 +1,82 @@
<?php
namespace Typo3Update\Feature;
/*
* Copyright (C) 2017 Daniel Siepmann <coding@daniel-siepmann.de>
*
* 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();
}
}

View file

@ -56,6 +56,17 @@ class Options
);
}
/**
* @return array<string>
*/
public static function getRemovedExtensionConfigFiles()
{
return static::getOptionFileNames(
'removedExtensionConfigFiles',
__DIR__ . '/Configuration/Removed/Extension/*.yaml'
);
}
/**
* Returns an array of absolute file names containing removed function configurations.
*

View file

@ -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];
}
}

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -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']);
}
}

View file

@ -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

View file

@ -0,0 +1,62 @@
<?php
/*
* Copyright (C) 2017 Daniel Siepmann <coding@daniel-siepmann.de>
*
* 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 [];
}
}

View file

@ -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 = [];

View file

@ -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
}
}

View file

@ -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
{
}

View file

@ -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 */

View file

@ -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
}
}

View file

@ -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;
}
}

View file

@ -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) {

View file

@ -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
}
}

View file

@ -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
}

View file

@ -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
}
}

View file

@ -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');

View file

@ -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()
;

View file

@ -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
}
}

View file

@ -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()
;

View file

@ -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');

View file

@ -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
}
}

View file

@ -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');

View file

@ -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")) {

View file

@ -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
}
}

View file

@ -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
}

View file

@ -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

View file

@ -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
}
}

View file

@ -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
*/

View file

@ -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,

View file

@ -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
}
}

View file

@ -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);

View file

@ -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
}
}

View file

@ -42,3 +42,9 @@ try {
} catch (TYPO3\CMS\Extbase\Exception $e) {
// else
}
try {
// something
} catch (\TYPO3\CMS\Perm\Controller\PermissionAjaxController $e) {
// else
}

View file

@ -38,4 +38,4 @@
+ public function something(\TYPO3\CMS\Extbase\Domain\Model\BackendUser $user)
{
}
}

View file

@ -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
}
}

View file

@ -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)
{
}
}

View file

@ -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;

View file

@ -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
}
}

View file

@ -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;

View file

@ -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
}
}

View file

@ -0,0 +1,23 @@
<?php
/*
* Copyright (C) 2017 Daniel Siepmann <coding@daniel-siepmann.de>
*
* 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');

View file

@ -0,0 +1,28 @@
<?php
namespace Typo3Update\Tests\Sniffs\Removed;