From 1bd89ac238d6a718744daec62d8a546a02eb2b19 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 10:56:28 +0200 Subject: [PATCH 01/11] AC-1549: Create codes for each type of returned error / warning --- Magento2/Sniffs/Legacy/AbstractBlockSniff.php | 12 +- Magento2/Sniffs/Legacy/DiConfigSniff.php | 10 +- Magento2/Sniffs/Legacy/EmailTemplateSniff.php | 7 +- .../Sniffs/Legacy/InstallUpgradeSniff.php | 21 ++- Magento2/Sniffs/Legacy/LayoutSniff.php | 7 +- .../Legacy/ObsoleteConfigNodesSniff.php | 177 ++++++++++++++---- .../Sniffs/Legacy/ObsoleteConnectionSniff.php | 20 +- .../Sniffs/Legacy/ObsoleteResponseSniff.php | 20 +- Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php | 17 +- .../Sniffs/Legacy/RestrictedCodeSniff.php | 3 +- Magento2/Sniffs/Legacy/WidgetXMLSniff.php | 7 +- .../Legacy/_files/restricted_classes.php | 5 + .../NamingConvention/ReservedWordsSniff.php | 42 ++++- 13 files changed, 267 insertions(+), 81 deletions(-) diff --git a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php index de9884d2..705db1b0 100644 --- a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php +++ b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php @@ -15,12 +15,8 @@ class AbstractBlockSniff implements Sniff private const CHILD_HTML_METHOD = 'getChildHtml'; private const CHILD_CHILD_HTML_METHOD = 'getChildChildHtml'; - /** - * Error violation code. - * - * @var string - */ - protected $errorCode = 'FoundCountOfParametersIncorrect'; + private const ERROR_CODE_THIRD_PARAMETER = 'ThirdParameterNotNeeded'; + private const ERROR_CODE_FOURTH_PARAMETER = 'FourthParameterNotNeeded'; /** * @inheritdoc @@ -52,14 +48,14 @@ public function process(File $phpcsFile, $stackPtr) $phpcsFile->addError( '3rd parameter is not needed anymore for getChildHtml()', $stackPtr, - $this->errorCode + self::ERROR_CODE_THIRD_PARAMETER ); } if ($content === self::CHILD_CHILD_HTML_METHOD && $paramsCount >= 4) { $phpcsFile->addError( '4th parameter is not needed anymore for getChildChildHtml()', $stackPtr, - $this->errorCode + self::ERROR_CODE_FOURTH_PARAMETER ); } } diff --git a/Magento2/Sniffs/Legacy/DiConfigSniff.php b/Magento2/Sniffs/Legacy/DiConfigSniff.php index 954c32e0..89c0025d 100644 --- a/Magento2/Sniffs/Legacy/DiConfigSniff.php +++ b/Magento2/Sniffs/Legacy/DiConfigSniff.php @@ -11,7 +11,13 @@ class DiConfigSniff implements Sniff { - private const WARNING_CODE = 'FoundObsoleteAttribute'; + private $obsoleteDiNodesWarningCodes = [ + ' 'FoundObsoleteParamNode', + ' 'FoundObsoleteInstanceNode', + ' 'FoundObsoleteArrayNode', + ' 'FoundObsoleteValueNode', + ]; /** * @var string[] Associative array containing the obsolete nodes and the message to display when they are found. @@ -46,7 +52,7 @@ public function process(File $phpcsFile, $stackPtr) $phpcsFile->addWarning( $message, $stackPtr, - self::WARNING_CODE + $this->obsoleteDiNodesWarningCodes[$element] ); } } diff --git a/Magento2/Sniffs/Legacy/EmailTemplateSniff.php b/Magento2/Sniffs/Legacy/EmailTemplateSniff.php index 17ebbf08..1cff51fe 100644 --- a/Magento2/Sniffs/Legacy/EmailTemplateSniff.php +++ b/Magento2/Sniffs/Legacy/EmailTemplateSniff.php @@ -19,7 +19,10 @@ class EmailTemplateSniff implements Sniff '/\{\{escapehtml.*?\}\}/i' => 'Directive {{escapehtml}} is obsolete. Use {{var}} instead.', ]; - private const ERROR_CODE = 'FoundObsoleteEmailDirective'; + private $errorCodes = [ + '/\{\{htmlescape.*?\}\}/i' => 'FoundObsoleteHtmlescapeDirective', + '/\{\{escapehtml.*?\}\}/i' => 'FoundObsoleteEscapehtmlDirective' + ]; /** * @inheritdoc @@ -42,7 +45,7 @@ public function process(File $phpcsFile, $stackPtr) $phpcsFile->addError( $errorMessage, $stackPtr, - self::ERROR_CODE + $this->errorCodes[$directiveRegex] ); } } diff --git a/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php b/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php index c7df570c..aad0e56b 100644 --- a/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php +++ b/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php @@ -13,7 +13,7 @@ class InstallUpgradeSniff implements Sniff { - private const ERROR_CODE = 'obsoleteScript'; + private const ERROR_CODE = 'invalidDirectory'; /** * @var string[] @@ -30,13 +30,28 @@ class InstallUpgradeSniff implements Sniff . 'Please use declarative schema approach in module\'s etc/db_schema.xml file', 'UpgradeSchema' => 'UpgradeSchema scripts are obsolete. ' . 'Please use declarative schema approach in module\'s etc/db_schema.xml file', - 'UpgradeData' => 'UpgradeSchema scripts are obsolete. ' + 'UpgradeData' => 'UpgradeData scripts are obsolete. ' . 'Please use data patches approach in module\'s Setup/Patch/Data dir', 'data-upgrade-' => 'Upgrade scripts are obsolete. ' . 'Please use data patches approach in module\'s Setup/Patch/Data dir', 'recurring' => 'Recurring scripts are obsolete. Please create class Recurring in module\'s Setup folder', ]; + /** + * @var string[] + */ + private $wrongPrefixesErrorCodes = [ + 'install-' => 'obsoleteInstallScript', + 'InstallSchema' => 'obsoleteInstallSchemaScript', + 'InstallData' => 'obsoleteInstallDataScript', + 'data-install-' => 'obsoleteDataInstallScript', + 'upgrade-' => 'obsoleteUpgradeScript', + 'UpgradeSchema' => 'obsoleteUpgradeSchemaScript', + 'UpgradeData' => 'obsoleteUpgradeDataScript', + 'data-upgrade-' => 'obsoleteDataUpgradeScript', + 'recurring' => 'obsoleteRecurringScript', + ]; + /** * @inheritdoc */ @@ -60,7 +75,7 @@ public function process(File $phpcsFile, $stackPtr) foreach ($this->wrongPrefixes as $prefix => $errorMessage) { if (strpos($fileInfo->getFilename(), $prefix) === 0) { - $phpcsFile->addError($errorMessage, 0, self::ERROR_CODE); + $phpcsFile->addError($errorMessage, 0, $this->wrongPrefixesErrorCodes[$prefix]); } } diff --git a/Magento2/Sniffs/Legacy/LayoutSniff.php b/Magento2/Sniffs/Legacy/LayoutSniff.php index 3a2c2044..78b67b21 100644 --- a/Magento2/Sniffs/Legacy/LayoutSniff.php +++ b/Magento2/Sniffs/Legacy/LayoutSniff.php @@ -19,8 +19,9 @@ class LayoutSniff implements Sniff { private const ERROR_CODE_XML = 'WrongXML'; private const ERROR_CODE_NOT_ALLOWED = 'NotAllowed'; - private const ERROR_CODE_OBSOLETE = 'Obsolete'; + private const ERROR_CODE_OBSOLETE_BLOCK = 'ObsoleteBlock'; private const ERROR_CODE_OBSOLETE_CLASS = 'ObsoleteClass'; + private const ERROR_CODE_OBSOLETE_TOHTML_ATTRIBUTE = 'ObsoleteToHtmlAttribute'; private const ERROR_CODE_METHOD_NOT_ALLOWED = 'MethodNotAllowed'; private const ERROR_CODE_HELPER_ATTRIBUTE_CHARACTER_NOT_ALLOWED = 'CharacterNotAllowedInAttribute'; private const ERROR_CODE_HELPER_ATTRIBUTE_CHARACTER_EXPECTED = 'CharacterExpectedInAttribute'; @@ -254,7 +255,7 @@ private function testObsoleteReferences(SimpleXMLElement $layout, File $phpcsFil $phpcsFile->addError( 'The block being referenced is removed.', dom_import_simplexml($reference)->getLineNo()-1, - self::ERROR_CODE_OBSOLETE + self::ERROR_CODE_OBSOLETE_BLOCK ); } } @@ -317,7 +318,7 @@ private function testOutputAttribute(SimpleXMLElement $layout, File $phpcsFile): $phpcsFile->addError( 'output="toHtml" is obsolete. Use output="1"', dom_import_simplexml($elements[0])->getLineNo()-1, - self::ERROR_CODE_OBSOLETE + self::ERROR_CODE_OBSOLETE_TOHTML_ATTRIBUTE ); }; } diff --git a/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php b/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php index efc5fae7..9738d080 100644 --- a/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php +++ b/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php @@ -14,7 +14,104 @@ class ObsoleteConfigNodesSniff implements Sniff { private const ERROR_MESSAGE_CONFIG = "Nodes identified by XPath '%s' are obsolete. %s"; - private const ERROR_CODE_CONFIG = 'ObsoleteNodeInConfig'; + private const ERROR_CODE_CONFIG = 'WrongXML'; + private $obsoleteNodesErrorCodes = [ + '/config/global/fieldsets' => 'obsoleteNodeGlobalFieldsets', + '/config/global/cache/betatypes' => 'obsoleteNodeBetatypes', + '/config/admin/fieldsets' => 'obsoleteNodeAdminFieldsets', + '/config/general/locale' => 'obsoleteNodeGeneralLocale', + '/config/global/can_use_base_url' => 'obsoleteNodeGlobalCanUseBaseURL', + '/config/global/locale/allow/codes' => 'obsoleteNodeAllowCodes', + '/config/global/locale/allow/currencies' => 'obsoleteNodeAllowCurrencies', + '/config/global/mime/types' => 'obsoleteNodeMimeTypes', + '/config/global/models/*/deprecatedNode' => 'obsoleteNodeDeprecatedNode', + '/config/global/models/*/entities/*/table' => 'obsoleteNodeEntitiesTable', + '/config/global/models/*/class' => 'obsoleteNodeModelsClass', + '/config/global/helpers/*/class' => 'obsoleteNodeHelpersClass', + '/config/global/blocks/*/class' => 'obsoleteNodeBlocksClass', + '/config/global/models/*/resourceModel' => 'obsoleteNodeResourceModel', + '/config/global/page/layouts' => 'obsoleteNodePageLayouts', + '/config/global/cms/layouts' => 'obsoleteNodeCmsLayouts', + '/config/global/payment/cc/types/*/validator' => 'obsoleteNodeTypesValidator', + '/config/global/payment' => 'obsoleteNodeGlobalPayment', + '/config/adminhtml/menu' => 'obsoleteNodeAdminhtmlMenu', + '/config/adminhtml/acl' => 'obsoleteNodeAdminhtmlAcl', + '/config/adminhtml/global_search' => 'obsoleteNodeAdminhtmlGlobalSearch', + '/config/*[self::global|self::adminhtml|self::frontend]/di' => 'obsoleteNodeDi', + '/config/*[self::global|self::adminhtml|self::frontend]/events' => 'obsoleteNodeEvents', + '/config/*[self::global|self::adminhtml|self::frontend]/routers' => 'obsoleteNodeRouters', + '/config/global/importexport' => 'obsoleteNodeGlobalImportExport', + '/config/global/catalog/product/type' => 'obsoleteNodeProductType', + '/config/global/catalog/product/options' => 'obsoleteNodeProductOptions', + '/config/global/catalog/product/media/image_types' => 'obsoleteNodeMediaImageTypes', + '/config/global/eav_attributes' => 'obsoleteNodeEavAttributes', + '/config/global/index' => 'obsoleteNodeGlobalIndex', + '/config/global/catalogrule' => 'obsoleteNodeGlobalCatalogRule', + '/config/global/salesrule' => 'obsoleteNodeGlobalSalesRule', + '/config/global/session' => 'obsoleteNodeGlobalSession', + '/config/global/ignore_user_agents' => 'obsoleteNodeGlobalIgnoreUserAgents', + '/config/global/request' => 'obsoleteNodeGlobalRequest', + '/config/global/secure_url' => 'obsoleteNodeGlobalSecureUrl', + '/config/global/dev' => 'obsoleteNodeGlobalDev', + '/config/global/webapi' => 'obsoleteNodeGlobalWebapi', + '/config/global/cms' => 'obsoleteNodeGlobalCms', + '/config/global/widget' => 'obsoleteNodeGlobalWidget', + '/config/global/catalog/product/flat/max_index_count' => 'obsoleteNodeFlatMaxIndexCount', + '/config/global/catalog/product/flat/attribute_groups' => 'obsoleteNodeFlatAttributeGroups', + '/config/global/catalog/product/flat/add_filterable_attributes' => 'obsoleteNodeFlatAddIterableAttributes', + '/config/global/catalog/product/flat/add_child_data' => 'obsoleteNodeFlatAddChildData', + '/config/global/catalog/content/template_filter' => 'obsoleteNodeContentTemplateFilter', + '/config/frontend/catalog/per_page_values/list' => 'obsoleteNodePerPageValuesList', + '/config/frontend/catalog/per_page_values/grid' => 'obsoleteNodePerPageValuesGrid', + '/config/global/catalog/product/design' => 'obsoleteNodeProductDesign', + '/config/global/catalog/product/attributes' => 'obsoleteNodeProductAttributes', + '/config/global/eav_frontendclasses' => 'obsoleteNodeGlobalEavFrontendClasses', + '/config/global/resources' => 'obsoleteNodeGlobalResources', + '/config/global/resource' => 'obsoleteNodeGlobalResource', + '/config/*/events/core_block_abstract_to_html_after' => 'obsoleteNodeEventsCoreBlockAbstract', + '/config/*/events/catalog_controller_product_delete' => 'obsoleteNodeEventsCatalogController', + '/config//observers/*/args' => 'obsoleteNodeObserversArgs', + '/config/default/design/theme' => 'obsoleteNodeDesignTheme', + '/config/global/theme' => 'obsoleteNodeGlobalTheme', + '/config/default/web/*/base_js_url' => 'obsoleteNodeWebBaseJsUrl', + '/config/default/web/*/base_skin_url' => 'obsoleteNodeWebBaseSkinUrl', + '/config/default/web/*/base_cache_url' => 'obsoleteNodeWebBaseCacheUrl', + '/config/global/cache/types/*/tags' => 'obsoleteNodeTypesTags', + '/config/global/disable_local_modules' => 'obsoleteNodeGlobalDisableLocalModules', + '/config/global/newsletter/template_filter' => 'obsoleteNodeNewsletterTemplateFilter', + '/config/*/layout' => 'obsoleteNodeConfigLayout', + '/config/frontend/product/collection/attributes' => 'obsoleteNodeProductCollectionAttributes', + '/config/frontend/category/collection/attributes' => 'obsoleteNodeCategoryCollectionAttributes', + '/config/global/sales/quote/item/product_attributes' => 'obsoleteNodeQuoteItemProductAttributes', + '/config/global/wishlist/item/product_attributes' => 'obsoleteNodeWishlistItemProductAttributes', + '/config/global/catalog/product/flat/attribute_nodes' => 'obsoleteNodeFlatAttributeNodes', + '/config/global/customer/address/formats' => 'obsoleteNodeCustomerAddressFormats', + '/config/global/pdf' => 'obsoleteNodeGlobalPdf', + '/config/install' => 'obsoleteNodeConfigInstall', + '/config/install/design' => 'obsoleteNodeConfigInstallDesign', + '/config/adminhtml/design' => 'obsoleteNodeConfigAdminhtmlDesign', + '/config/frontend/design' => 'obsoleteNodeConfigFrontendDesign', + '/config/crontab' => 'obsoleteNodeConfigCrontab', + '/config/global/areas' => 'obsoleteNodeGlobalAreas', + '/config/vde' => 'obsoleteNodeConfigVde', + '/config/global/ignoredModules' => 'obsoleteNodeGlobalIgnoredModules', + '/config/global/helpers' => 'obsoleteNodeGlobalHelpers', + '/config/global/external_cache' => 'obsoleteNodeGlobalExternalCache', + '/config/global/currency/import/services' => 'obsoleteNodeCurrencyImportServices', + '/config/global/template' => 'obsoleteNodeGlobalTemplate', + '/config/default/general/file/sitemap_generate_valid_paths' => 'obsoleteNodeFileSitemap', + '/config/dev/css/minify_adapter' => 'obsoleteNodeCssMinify', + '/config/dev/js/minify_adapter' => 'obsoleteNodeJsMinify', + '/config/global/full_page_cache' => 'obsoleteNodeGlobalFullPageCache', + '/config/adminhtml/enterprise/admingws' => 'obsoleteNodeEnterpriseAdmingws', + '/config/adminhtml/enterprise/websiterestriction' => 'obsoleteNodeEnterpriseWebsiteRestriction', + '/config/global/enterprise_cms' => 'obsoleteNodeGlobalEnterpriseCms', + '/config/global/enterprise/banner' => 'obsoleteNodeGlobalEnterpriseBanner', + '/config/global/enterprise/giftcardaccount' => 'obsoleteNodeGlobalEnterpriseGiftCardAccount', + '/config/global/skip_process_modules_updates' => 'obsoleteNodeGlobalSkipProcess', + '/config/system/page_cache' => 'obsoleteNodeSystemPageCache', + '/config/system/cms/content/versioning' => 'obsoleteNodeContentVersioning', + ]; /** * @inheritdoc @@ -63,7 +160,7 @@ public function process(File $phpcsFile, $stackPtr) $suggestion ), dom_import_simplexml($match)->getLineNo()-1, - self::ERROR_CODE_CONFIG + $this->obsoleteNodesErrorCodes[$xpath] ); } } @@ -95,15 +192,15 @@ private function getObsoleteNodes(): array '/config/global/cache/betatypes' => '', '/config/admin/fieldsets' => '', '/config/general/locale' => - 'This configuration moved to Di configuration of \Magento\Framework\Locale\ConfigInterface', + 'This configuration moved to DI configuration of \Magento\Framework\Locale\ConfigInterface', '/config/global/can_use_base_url' => - 'This configuration moved to Di configuration of \Magento\Backend\App\Action\Context class', + 'This configuration moved to DI configuration of \Magento\Backend\App\Action\Context class', '/config/global/locale/allow/codes' => - 'This configuration moved to Di configuration of \Magento\Framework\Locale\ConfigInterface', + 'This configuration moved to DI configuration of \Magento\Framework\Locale\ConfigInterface', '/config/global/locale/allow/currencies' => - 'This configuration moved to Di configuration of \Magento\Framework\Locale\ConfigInterface', + 'This configuration moved to DI configuration of \Magento\Framework\Locale\ConfigInterface', '/config/global/mime/types' => - 'This configuration moved to Di configuration for \Magento\Downloadable\Helper\File class', + 'This configuration moved to DI configuration for \Magento\Downloadable\Helper\File class', '/config/global/models/*/deprecatedNode' => '', '/config/global/models/*/entities/*/table' => '', '/config/global/models/*/class' => '', @@ -118,68 +215,68 @@ private function getObsoleteNodes(): array '/config/adminhtml/menu' => 'Move them to adminhtml.xml.', '/config/adminhtml/acl' => 'Move them to adminhtml.xml.', '/config/adminhtml/global_search' => - 'This configuration moved to Di configuration of \Magento\Backend\Controller\Index', + 'This configuration moved to DI configuration of \Magento\Backend\Controller\Index', '/config/*[self::global|self::adminhtml|self::frontend]/di' => 'This configuration moved to di.xml file', '/config/*[self::global|self::adminhtml|self::frontend]/events' => 'This configuration moved to events.xml file', '/config/*[self::global|self::adminhtml|self::frontend]/routers' => 'Routes configuration moved to routes.xml file,' . - 'routers list can be set through Di configuration of \Magento\Framework\App\RouterList model', + 'routers list can be set through DI configuration of \Magento\Framework\App\RouterList model', '/config/global/importexport' => 'This configuration moved to import.xml and export.xml files', '/config/global/catalog/product/type' => 'This configuration moved to product_types.xml file', '/config/global/catalog/product/options' => 'This configuration moved to product_options.xml file', - '/config/global/catalog/product/media/image_types' => 'This configuration moved to Di configuration of ' . + '/config/global/catalog/product/media/image_types' => 'This configuration moved to DI configuration of ' . '\Magento\Backend\Block\Catalog\Product\Frontend\Product\Watermark', '/config/global/eav_attributes' => 'This configuration moved to eav_attributes.xml file', '/config/global/index' => 'This configuration moved to indexers.xml file', '/config/global/catalogrule' => - 'This configuration moved to Di configuration of \Magento\CatalogRule\Model\Rule', + 'This configuration moved to DI configuration of \Magento\CatalogRule\Model\Rule', '/config/global/salesrule' => - 'This configuration moved to Di configuration of \Magento\SalesRule\Helper\Coupon', + 'This configuration moved to DI configuration of \Magento\SalesRule\Helper\Coupon', '/config/global/session' => - 'This configuration moved to Di configuration of \Magento\Framework\Session\Validator', + 'This configuration moved to DI configuration of \Magento\Framework\Session\Validator', '/config/global/ignore_user_agents' => - 'This configuration moved to Di configuration of \Magento\Log\Model\Visitor', + 'This configuration moved to DI configuration of \Magento\Log\Model\Visitor', '/config/global/request' => - 'This configuration moved to Di configuration of \Magento\Framework\App\RequestInterface', + 'This configuration moved to DI configuration of \Magento\Framework\App\RequestInterface', '/config/global/secure_url' => - 'This configuration moved to Di configuration of \Magento\Framework\Url\SecurityInfo', + 'This configuration moved to DI configuration of \Magento\Framework\Url\SecurityInfo', '/config/global/dev' => - 'This configuration moved to Di configuration of \Magento\Framework\App\Action\Context', + 'This configuration moved to DI configuration of \Magento\Framework\App\Action\Context', '/config/global/webapi' => - 'This configuration moved to Di configuration of '. + 'This configuration moved to DI configuration of '. ' \Magento\Webapi\Controller\Request\Rest\Interpreter\Factory' . ' and \Magento\Webapi\Controller\Response\Rest\Renderer\Factory', '/config/global/cms' => - 'This configuration moved to Di configuration of \Magento\Cms\Model\Wysiwyg\Images\Storage' . + 'This configuration moved to DI configuration of \Magento\Cms\Model\Wysiwyg\Images\Storage' . ' and \Magento\Cms\Model\Wysiwyg\Config', '/config/global/widget' => - 'This configuration moved to Di configuration of \Magento\Cms\Model\Template\FilterProvider', + 'This configuration moved to DI configuration of \Magento\Cms\Model\Template\FilterProvider', '/config/global/catalog/product/flat/max_index_count' => - 'This configuration moved to Di configuration of '. + 'This configuration moved to DI configuration of '. '\Magento\Catalog\Model\ResourceModel\Product\Flat\Indexer', '/config/global/catalog/product/flat/attribute_groups' => - 'This configuration moved to Di configuration of '. + 'This configuration moved to DI configuration of '. '\Magento\Catalog\Model\ResourceModel\Product\Flat\Indexer', '/config/global/catalog/product/flat/add_filterable_attributes' => - 'This configuration moved to Di configuration of \Magento\Catalog\Helper\Product\Flat\Indexer', + 'This configuration moved to DI configuration of \Magento\Catalog\Helper\Product\Flat\Indexer', '/config/global/catalog/product/flat/add_child_data' => - 'This configuration moved to Di configuration of \Magento\Catalog\Helper\Product\Flat\Indexer', + 'This configuration moved to DI configuration of \Magento\Catalog\Helper\Product\Flat\Indexer', '/config/global/catalog/content/template_filter' => - 'This configuration moved to Di configuration of \Magento\Catalog\Helper\Data', + 'This configuration moved to DI configuration of \Magento\Catalog\Helper\Data', '/config/frontend/catalog/per_page_values/list' => - 'This configuration moved to Di configuration of \Magento\Catalog\Model\Config\Source\ListPerPage', + 'This configuration moved to DI configuration of \Magento\Catalog\Model\Config\Source\ListPerPage', '/config/frontend/catalog/per_page_values/grid' => - 'This configuration moved to Di configuration of \Magento\Catalog\Model\Config\Source\GridPerPage', - '/config/global/catalog/product/design' => 'This configuration moved to Di configuration of' . + 'This configuration moved to DI configuration of \Magento\Catalog\Model\Config\Source\GridPerPage', + '/config/global/catalog/product/design' => 'This configuration moved to DI configuration of' . ' \Magento\Catalog\Model\Entity\Product\Attribute\Design\Option\Container', '/config/global/catalog/product/attributes' => 'This configuration moved catalog_attributes.xml', '/config/global/eav_frontendclasses' => 'This configuration was removed. ' . 'Please pluginize \Magento\Eav\Helper\Data::getFrontendClasses to extend frontend classes list', '/config/global/resources' => - 'This configuration moved to Di configuration of \Magento\Framework\App\ResourceConnection', + 'This configuration moved to DI configuration of \Magento\Framework\App\ResourceConnection', '/config/global/resource' => - 'This configuration moved to Di configuration of \Magento\Framework\App\ResourceConnection', + 'This configuration moved to DI configuration of \Magento\Framework\App\ResourceConnection', '/config/*/events/core_block_abstract_to_html_after' => 'Event has been replaced with "core_layout_render_element"', '/config/*/events/catalog_controller_product_delete' => '', @@ -211,27 +308,29 @@ private function getObsoleteNodes(): array '/config/frontend/design' => 'Configurations moved to DI file settings', '/config/crontab' => 'All cron configurations moved to crontab.xml', '/config/global/areas' => 'Configurations moved to DI file settings', - '/config/vde' => 'Was moved to di', - '/config/global/ignoredModules' => 'Was replaced using di', - '/config/global/helpers' => 'Was replaced using di', - '/config/global/external_cache' => 'Was replaced using di', + '/config/vde' => 'Was moved to DI', + '/config/global/ignoredModules' => 'Was replaced using DI', + '/config/global/helpers' => 'Was replaced using DI', + '/config/global/external_cache' => 'Was replaced using DI', '/config/global/currency/import/services' => 'Configurations moved to DI file settings', '/config/global/template' => 'Use /config/template of email_templates.xml', '/config/default/general/file/sitemap_generate_valid_paths' => '/config/default/sitemap/file/valid_paths', - '/config/dev/css/minify_adapter' => 'Was replaced using di', - '/config/dev/js/minify_adapter' => 'Was replaced using di', + '/config/dev/css/minify_adapter' => 'Was replaced using DI', + '/config/dev/js/minify_adapter' => 'Was replaced using DI', '/config/global/full_page_cache' => '/config/global/cache_advanced/full_page', '/config/adminhtml/enterprise/admingws' => 'This configuration moved to admingws.xml file', '/config/adminhtml/enterprise/websiterestriction' => 'This configuration moved to websiterestrictions.xml file', '/config/global/enterprise_cms' => 'This configuration moved to menu_hierarchy.xml file', '/config/global/enterprise/banner' => - 'This configuration moved to Di configuration of \Magento\Banner\Model\Config', + 'This configuration moved to DI configuration of \Magento\Banner\Model\Config', '/config/global/enterprise/giftcardaccount' => - 'This configuration moved to Di configuration of \Magento\GiftCardAccountModelPool', - '/config/global/skip_process_modules_updates' => 'Was replaced using di', + 'This configuration moved to DI configuration of \Magento\GiftCardAccountModelPool', + '/config/global/skip_process_modules_updates' => 'Was replaced using DI', '/config/system/page_cache' => 'Module is eliminated. Use PageCache module instead', '/config/system/cms/content/versioning' => 'Functionality is eliminated', ]; } + + } diff --git a/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php b/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php index a1425cab..a3372ff3 100644 --- a/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php +++ b/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php @@ -18,14 +18,14 @@ class ObsoleteConnectionSniff implements Sniff * @var string[] */ private $obsoleteMethods = [ - '_getReadConnection', - '_getWriteConnection', - '_getReadAdapter', - '_getWriteAdapter', - 'getReadConnection', - 'getWriteConnection', - 'getReadAdapter', - 'getWriteAdapter', + '_getReadConnection' => 'FoundObsoleteMethod_getReadConnection', + '_getWriteConnection' => 'FoundObsoleteMethod_getWriteConnection', + '_getReadAdapter' => 'FoundObsoleteMethod_getReadAdapter', + '_getWriteAdapter' => 'FoundObsoleteMethod_getWriteAdapter', + 'getReadConnection' => 'FoundObsoleteMethodGetReadConnection', + 'getWriteConnection' => 'FoundObsoleteMethodGetWriteConnection', + 'getReadAdapter' => 'FoundObsoleteMethodGetReadAdapter', + 'getWriteAdapter' => 'FoundObsoleteMethodGetWriteAdapter', ]; /** @@ -58,12 +58,12 @@ private function validateObsoleteMethod(File $phpcsFile, int $stackPtr) $tokens = $phpcsFile->getTokens(); $stringPos = $phpcsFile->findNext(T_STRING, $stackPtr + 1); - foreach ($this->obsoleteMethods as $method) { + foreach ($this->obsoleteMethods as $method => $errorCode) { if ($tokens[$stringPos]['content'] === $method) { $phpcsFile->addWarning( sprintf("Contains obsolete method: %s. Please use getConnection method instead.", $method), $stackPtr, - self::ERROR_CODE_METHOD + $errorCode ); } } diff --git a/Magento2/Sniffs/Legacy/ObsoleteResponseSniff.php b/Magento2/Sniffs/Legacy/ObsoleteResponseSniff.php index 725a8b15..9dadee00 100644 --- a/Magento2/Sniffs/Legacy/ObsoleteResponseSniff.php +++ b/Magento2/Sniffs/Legacy/ObsoleteResponseSniff.php @@ -12,8 +12,6 @@ class ObsoleteResponseSniff implements Sniff { - private const WARNING_CODE_METHOD = 'FoundObsoleteResponseMethod'; - /** * @var string[] */ @@ -29,6 +27,22 @@ class ObsoleteResponseSniff implements Sniff '_addJs' => 'Please use \Magento\Backend\Model\View\Result\Page::addJs instead.', '_moveBlockToContainer' => 'Please use \Magento\Backend\Model\View\Result\Page::moveBlockToContainer instead.', ]; + + /** + * @var string[] + */ + private $obsoleteResponseWarningCodes = [ + 'loadLayout' => 'loadLayoutResponseMethodFound', + 'renderLayout' => 'renderLayoutResponseMethodFound', + '_redirect' => 'redirectResponseMethodFound', + '_forward' => 'forwardResponseMethodFound', + '_setActiveMenu' => 'setActiveMenuResponseMethodFound', + '_addBreadcrumb' => 'addBreadcrumbResponseMethodFound', + '_addContent' => 'addContentResponseMethodFound', + '_addLeft' => 'addLeftResponseMethodFound', + '_addJs' => 'addJsResponseMethodFound', + '_moveBlockToContainer' => 'moveBlockToContainerResponseMethodFound', + ]; /** * @inheritdoc @@ -54,7 +68,7 @@ public function process(File $phpcsFile, $stackPtr) $phpcsFile->addWarning( sprintf('%s method is deprecated. %s', $method, $errorMessage), $stackPtr, - self::WARNING_CODE_METHOD + $this->obsoleteResponseWarningCodes[$method] ); } } diff --git a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php index 67d74575..cd9ef45e 100644 --- a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php +++ b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php @@ -13,6 +13,15 @@ class PhtmlTemplateSniff implements Sniff { private const WARNING_CODE = 'PhtmlTemplateObsolete'; + private const WARNING_CODE_TEXT_JAVASCRIPT = 'TextJavascriptTypeFound'; + private const WARNING_CODE_THIS_USAGE = 'ThisUsageObsolete'; + private const WARNING_CODE_PROTECTED_PRIVATE_BLOCK_ACCESS = 'ProtectedPrivateBlockAccess'; + + private const WARNING_CODES_OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES = [ + '/(["\'])jquery\/ui\1/' => 'JQueryUILibraryFound', + '/data-mage-init=(?:\'|")(?!\s*{\s*"[^"]+")/' => 'JSComponentInitInPHPFound', + '@x-magento-init.>(?!\s*+{\s*"[^"]+"\s*:\s*{\s*"[\w/-]+")@i' => 'JSComponentInitInPHPFound', + ]; private const OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES = [ '/(["\'])jquery\/ui\1/' => 'Please do not use "jquery/ui" library in templates. Use needed jquery ' . @@ -77,7 +86,7 @@ private function checkBlockVariable(File $phpcsFile, int $stackPtr, array $token 'Access to protected and private members of Block class is ' . 'obsolete in phtml templates. Use only public members.', $stringPos, - self::WARNING_CODE + self::WARNING_CODE_PROTECTED_PRIVATE_BLOCK_ACCESS ); } } @@ -101,7 +110,7 @@ private function checkThisVariable(File $phpcsFile, int $stackPtr, array $tokens 'Access to members and methods of Block class through $this is ' . 'obsolete in phtml templates. Use only $block instead of $this.', $stringPos, - self::WARNING_CODE + self::WARNING_CODE_THIS_USAGE ); } } @@ -120,7 +129,7 @@ private function checkHtml(File $phpcsFile, int $stackPtr): void $phpcsFile->addWarning( 'Please do not use "text/javascript" type attribute.', $stackPtr, - self::WARNING_CODE + self::WARNING_CODE_TEXT_JAVASCRIPT ); } } @@ -140,7 +149,7 @@ private function checkHtmlSpecificFiles(File $phpcsFile, int $stackPtr): void $phpcsFile->addWarning( $errorMessage, $stackPtr, - self::WARNING_CODE + self::WARNING_CODES_OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES[$obsoleteRegex] ); } } diff --git a/Magento2/Sniffs/Legacy/RestrictedCodeSniff.php b/Magento2/Sniffs/Legacy/RestrictedCodeSniff.php index 62ee2d4e..5b6c860c 100644 --- a/Magento2/Sniffs/Legacy/RestrictedCodeSniff.php +++ b/Magento2/Sniffs/Legacy/RestrictedCodeSniff.php @@ -16,7 +16,6 @@ class RestrictedCodeSniff implements Sniff { private const ERROR_MESSAGE = "Class '%s' is restricted in %s. Suggested replacement: %s"; - private const ERROR_CODE = "restrictedClass"; /** * List of fixtures that contain restricted classes and should not be tested @@ -76,7 +75,7 @@ public function process(File $phpcsFile, $stackPtr) $this->classes[$token]['replacement'] ), $stackPtr, - self::ERROR_CODE, + $this->classes[$token]['warning_code'], ); } } diff --git a/Magento2/Sniffs/Legacy/WidgetXMLSniff.php b/Magento2/Sniffs/Legacy/WidgetXMLSniff.php index efd62aee..aee84dc8 100644 --- a/Magento2/Sniffs/Legacy/WidgetXMLSniff.php +++ b/Magento2/Sniffs/Legacy/WidgetXMLSniff.php @@ -15,7 +15,8 @@ */ class WidgetXMLSniff implements Sniff { - private const ERROR_CODE_OBSOLETE = 'FoundObsoleteNode'; + private const ERROR_CODE_OBSOLETE_SUPPORTED_BLOCKS = 'FoundObsoleteNodeSupportedBlocks'; + private const ERROR_CODE_OBSOLETE_BLOCK_NAME = 'FoundObsoleteNodeBlockName'; private const ERROR_CODE_FACTORY = 'FoundFactory'; private const ERROR_CODE_XML = 'WrongXML'; @@ -66,7 +67,7 @@ public function process(File $phpcsFile, $stackPtr) $phpcsFile->addError( "Obsolete node: . To be replaced with ", dom_import_simplexml($element)->getLineNo() - 1, - self::ERROR_CODE_OBSOLETE + self::ERROR_CODE_OBSOLETE_SUPPORTED_BLOCKS ); } @@ -75,7 +76,7 @@ public function process(File $phpcsFile, $stackPtr) $phpcsFile->addError( "Obsolete node: . To be replaced with ", dom_import_simplexml($element)->getLineNo() - 1, - self::ERROR_CODE_OBSOLETE + self::ERROR_CODE_OBSOLETE_BLOCK_NAME ); } } diff --git a/Magento2/Sniffs/Legacy/_files/restricted_classes.php b/Magento2/Sniffs/Legacy/_files/restricted_classes.php index 1052b994..41d4c698 100644 --- a/Magento2/Sniffs/Legacy/_files/restricted_classes.php +++ b/Magento2/Sniffs/Legacy/_files/restricted_classes.php @@ -13,6 +13,7 @@ */ return [ 'Zend_Db_Select' => [ + 'warning_code' => 'ZendDbSelectIsRestricted', 'replacement' => '\Magento\Framework\DB\Select', 'exclude' => [ 'Magento/Framework/DB/Select.php', @@ -22,12 +23,14 @@ ] ], 'Zend_Db_Adapter_Pdo_Mysql' => [ + 'warning_code' => 'ZendDbAdapterPdoMysqlIsRestricted', 'replacement' => '\Magento\Framework\DB\Adapter\Pdo\Mysql', 'exclude' => [ 'Magento/Framework/DB/Adapter/Pdo/Mysql.php' ] ], 'Magento\Framework\Serialize\Serializer\Serialize' => [ + 'warning_code' => 'SerializerSerializeIsRestricted', 'replacement' => 'Magento\Framework\Serialize\SerializerInterface', 'exclude' => [ 'Magento/Framework/App/ObjectManager/ConfigLoader/Compiled.php', @@ -56,6 +59,7 @@ ] ], 'ArrayObject' => [ + 'warning_code' => 'ArrayObjectIsRestricted', 'replacement' => 'Custom class, extended from ArrayObject with overwritten serialize/unserialize methods', 'exclude' => [ 'Magento/Theme/Model/Indexer/Design/Config.php', @@ -78,6 +82,7 @@ ] ], 'Magento\Framework\View\Element\UiComponent\ArrayObjectFactory' => [ + 'warning_code' => 'ArrayObjectFactoryIsRestricted', 'replacement' => 'Factory that creates custom class, extended from ArrayObject with overwritten ' . 'serialize/unserialize methods', 'exclude' => [ diff --git a/Magento2/Sniffs/NamingConvention/ReservedWordsSniff.php b/Magento2/Sniffs/NamingConvention/ReservedWordsSniff.php index 23724a7c..19b80e41 100644 --- a/Magento2/Sniffs/NamingConvention/ReservedWordsSniff.php +++ b/Magento2/Sniffs/NamingConvention/ReservedWordsSniff.php @@ -36,6 +36,44 @@ class ReservedWordsSniff implements Sniff 'numeric' => '7', ]; + /** + * @var string[] + */ + private $classErrorCodes = [ + 'int' => 'IntForbiddenAsClassName', + 'float' => 'FloatForbiddenAsClassName', + 'bool' => 'boolForbiddenAsClassName', + 'string' => 'stringForbiddenAsClassName', + 'true' => 'trueForbiddenAsClassName', + 'false' => 'falseForbiddenAsClassName', + 'null' => 'nullForbiddenAsClassName', + 'void' => 'voidForbiddenAsClassName', + 'iterable' => 'iterableForbiddenAsClassName', + 'resource' => 'resourceForbiddenAsClassName', + 'object' => 'objectForbiddenAsClassName', + 'mixed' => 'mixedForbiddenAsClassName', + 'numeric' => 'numericForbiddenAsClassName', + ]; + + /** + * @var string[] + */ + private $namespaceErrorCodes = [ + 'int' => 'IntForbiddenAsNameSpace', + 'float' => 'FloatForbiddenAsNameSpace', + 'bool' => 'boolForbiddenAsNameSpace', + 'string' => 'stringForbiddenAsNameSpace', + 'true' => 'trueForbiddenAsNameSpace', + 'false' => 'falseForbiddenAsNameSpace', + 'null' => 'nullForbiddenAsNameSpace', + 'void' => 'voidForbiddenAsNameSpace', + 'iterable' => 'iterableForbiddenAsNameSpace', + 'resource' => 'resourceForbiddenAsNameSpace', + 'object' => 'objectForbiddenAsNameSpace', + 'mixed' => 'mixedForbiddenAsNameSpace', + 'numeric' => 'numericForbiddenAsNameSpace', + ]; + /** * @inheritdoc */ @@ -65,7 +103,7 @@ protected function validateNamespace(File $sourceFile, $stackPtr) $sourceFile->addError( 'Cannot use "%s" in namespace as it is reserved since PHP %s', $stackPtr, - 'Namespace', + $this->namespaceErrorCodes[strtolower($namespacePart)], [$namespacePart, $this->reservedWords[strtolower($namespacePart)]] ); } @@ -89,7 +127,7 @@ protected function validateClass(File $sourceFile, $stackPtr) $sourceFile->addError( 'Cannot use "%s" as class name as it is reserved since PHP %s', $stackPtr, - 'Class', + $this->classErrorCodes[strtolower($className)], [$className, $this->reservedWords[$className]] ); } From c147628c9524bd8f8e20c993aec62b61eb032962 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 11:46:03 +0200 Subject: [PATCH 02/11] AC-1549: Fixed static tests --- Magento2/Sniffs/Legacy/DiConfigSniff.php | 3 +++ Magento2/Sniffs/Legacy/EmailTemplateSniff.php | 3 +++ Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php | 6 ++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Magento2/Sniffs/Legacy/DiConfigSniff.php b/Magento2/Sniffs/Legacy/DiConfigSniff.php index 89c0025d..164a084c 100644 --- a/Magento2/Sniffs/Legacy/DiConfigSniff.php +++ b/Magento2/Sniffs/Legacy/DiConfigSniff.php @@ -11,6 +11,9 @@ class DiConfigSniff implements Sniff { + /** + * @var string[] + */ private $obsoleteDiNodesWarningCodes = [ ' 'FoundObsoleteParamNode', ' 'FoundObsoleteInstanceNode', diff --git a/Magento2/Sniffs/Legacy/EmailTemplateSniff.php b/Magento2/Sniffs/Legacy/EmailTemplateSniff.php index 1cff51fe..69cbc751 100644 --- a/Magento2/Sniffs/Legacy/EmailTemplateSniff.php +++ b/Magento2/Sniffs/Legacy/EmailTemplateSniff.php @@ -19,6 +19,9 @@ class EmailTemplateSniff implements Sniff '/\{\{escapehtml.*?\}\}/i' => 'Directive {{escapehtml}} is obsolete. Use {{var}} instead.', ]; + /** + * @var string[] + */ private $errorCodes = [ '/\{\{htmlescape.*?\}\}/i' => 'FoundObsoleteHtmlescapeDirective', '/\{\{escapehtml.*?\}\}/i' => 'FoundObsoleteEscapehtmlDirective' diff --git a/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php b/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php index 9738d080..effaf123 100644 --- a/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php +++ b/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php @@ -15,6 +15,10 @@ class ObsoleteConfigNodesSniff implements Sniff { private const ERROR_MESSAGE_CONFIG = "Nodes identified by XPath '%s' are obsolete. %s"; private const ERROR_CODE_CONFIG = 'WrongXML'; + + /** + * @var string[] + */ private $obsoleteNodesErrorCodes = [ '/config/global/fieldsets' => 'obsoleteNodeGlobalFieldsets', '/config/global/cache/betatypes' => 'obsoleteNodeBetatypes', @@ -331,6 +335,4 @@ private function getObsoleteNodes(): array '/config/system/cms/content/versioning' => 'Functionality is eliminated', ]; } - - } From 94a395a84265063ef3348f5d9fee124d114b3eb4 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 13:04:55 +0200 Subject: [PATCH 03/11] AC-1549: Added more codes and cleaned up unused messages --- Magento2/Sniffs/Legacy/InstallUpgradeSniff.php | 12 +++++++++--- Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php | 2 -- Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php | 1 - 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php b/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php index aad0e56b..e6c22cc4 100644 --- a/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php +++ b/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php @@ -13,8 +13,6 @@ class InstallUpgradeSniff implements Sniff { - private const ERROR_CODE = 'invalidDirectory'; - /** * @var string[] */ @@ -52,6 +50,14 @@ class InstallUpgradeSniff implements Sniff 'recurring' => 'obsoleteRecurringScript', ]; + /** + * @var string[] + */ + private $invalidDirectoriesErrorCodes = [ + 'data' => 'dataInvalidDirectory', + 'sql' => 'sqlInvalidDirectory' + ]; + /** * @inheritdoc */ @@ -88,7 +94,7 @@ public function process(File $phpcsFile, $stackPtr) . "- Create a data patch within module's Setup/Patch/Data folder for data upgrades.\n" . "- Use declarative schema approach in module's etc/db_schema.xml file for schema changes.", 0, - self::ERROR_CODE + $this->invalidDirectoriesErrorCodes[$folderName] ); } } diff --git a/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php b/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php index a3372ff3..c79844a5 100644 --- a/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php +++ b/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php @@ -12,8 +12,6 @@ class ObsoleteConnectionSniff implements Sniff { - private const ERROR_CODE_METHOD = 'FoundObsoleteMethod'; - /** * @var string[] */ diff --git a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php index cd9ef45e..e086adc5 100644 --- a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php +++ b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php @@ -12,7 +12,6 @@ class PhtmlTemplateSniff implements Sniff { - private const WARNING_CODE = 'PhtmlTemplateObsolete'; private const WARNING_CODE_TEXT_JAVASCRIPT = 'TextJavascriptTypeFound'; private const WARNING_CODE_THIS_USAGE = 'ThisUsageObsolete'; private const WARNING_CODE_PROTECTED_PRIVATE_BLOCK_ACCESS = 'ProtectedPrivateBlockAccess'; From f76f48f7d1750ff4b405b2ed8f0a8a3a20b9c5e9 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 14:54:46 +0200 Subject: [PATCH 04/11] Update Magento2/Sniffs/Legacy/InstallUpgradeSniff.php Co-authored-by: Sergii Ivashchenko --- Magento2/Sniffs/Legacy/InstallUpgradeSniff.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php b/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php index e6c22cc4..d1e0c787 100644 --- a/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php +++ b/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php @@ -39,7 +39,7 @@ class InstallUpgradeSniff implements Sniff * @var string[] */ private $wrongPrefixesErrorCodes = [ - 'install-' => 'obsoleteInstallScript', + 'install-' => 'ObsoleteInstallScript', 'InstallSchema' => 'obsoleteInstallSchemaScript', 'InstallData' => 'obsoleteInstallDataScript', 'data-install-' => 'obsoleteDataInstallScript', From 395320787697e254fb376a2b6207a92c2c113613 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 14:54:53 +0200 Subject: [PATCH 05/11] Update Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php Co-authored-by: Sergii Ivashchenko --- Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php index e086adc5..91de4672 100644 --- a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php +++ b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php @@ -18,7 +18,7 @@ class PhtmlTemplateSniff implements Sniff private const WARNING_CODES_OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES = [ '/(["\'])jquery\/ui\1/' => 'JQueryUILibraryFound', - '/data-mage-init=(?:\'|")(?!\s*{\s*"[^"]+")/' => 'JSComponentInitInPHPFound', + '/data-mage-init=(?:\'|")(?!\s*{\s*"[^"]+")/' => 'FoundDataMageInit', '@x-magento-init.>(?!\s*+{\s*"[^"]+"\s*:\s*{\s*"[\w/-]+")@i' => 'JSComponentInitInPHPFound', ]; From 28ce4efb524cbb9bfe35bd330f723d7692533cd5 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 14:54:58 +0200 Subject: [PATCH 06/11] Update Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php Co-authored-by: Sergii Ivashchenko --- Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php index 91de4672..bb58f641 100644 --- a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php +++ b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php @@ -19,7 +19,7 @@ class PhtmlTemplateSniff implements Sniff private const WARNING_CODES_OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES = [ '/(["\'])jquery\/ui\1/' => 'JQueryUILibraryFound', '/data-mage-init=(?:\'|")(?!\s*{\s*"[^"]+")/' => 'FoundDataMageInit', - '@x-magento-init.>(?!\s*+{\s*"[^"]+"\s*:\s*{\s*"[\w/-]+")@i' => 'JSComponentInitInPHPFound', + '@x-magento-init.>(?!\s*+{\s*"[^"]+"\s*:\s*{\s*"[\w/-]+")@i' => 'FoundXMagentoInit', ]; private const OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES = [ From d7c4374b4158c9f914b7f8685fa5e9d0bcd9c28d Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 14:55:03 +0200 Subject: [PATCH 07/11] Update Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php Co-authored-by: Sergii Ivashchenko --- Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php index bb58f641..dd4d06d1 100644 --- a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php +++ b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php @@ -17,7 +17,7 @@ class PhtmlTemplateSniff implements Sniff private const WARNING_CODE_PROTECTED_PRIVATE_BLOCK_ACCESS = 'ProtectedPrivateBlockAccess'; private const WARNING_CODES_OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES = [ - '/(["\'])jquery\/ui\1/' => 'JQueryUILibraryFound', + '/(["\'])jquery\/ui\1/' => 'FoundJQueryUI', '/data-mage-init=(?:\'|")(?!\s*{\s*"[^"]+")/' => 'FoundDataMageInit', '@x-magento-init.>(?!\s*+{\s*"[^"]+"\s*:\s*{\s*"[\w/-]+")@i' => 'FoundXMagentoInit', ]; From ee515c3e8acaf3b126f2afec57785e0ac973a96d Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 14:55:09 +0200 Subject: [PATCH 08/11] Update Magento2/Sniffs/Legacy/_files/restricted_classes.php Co-authored-by: Sergii Ivashchenko --- Magento2/Sniffs/Legacy/_files/restricted_classes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Magento2/Sniffs/Legacy/_files/restricted_classes.php b/Magento2/Sniffs/Legacy/_files/restricted_classes.php index 41d4c698..ed6d2540 100644 --- a/Magento2/Sniffs/Legacy/_files/restricted_classes.php +++ b/Magento2/Sniffs/Legacy/_files/restricted_classes.php @@ -13,7 +13,7 @@ */ return [ 'Zend_Db_Select' => [ - 'warning_code' => 'ZendDbSelectIsRestricted', + 'warning_code' => 'ZendDbSelect', 'replacement' => '\Magento\Framework\DB\Select', 'exclude' => [ 'Magento/Framework/DB/Select.php', From 2391b0db6d2940289752ce060d7d1f633df32d99 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 16:51:59 +0200 Subject: [PATCH 09/11] AC-1549: Made suggestions --- Magento2/Sniffs/Legacy/DiConfigSniff.php | 49 ++--- Magento2/Sniffs/Legacy/EmailTemplateSniff.php | 26 ++- .../Sniffs/Legacy/InstallUpgradeSniff.php | 93 +++++---- .../Legacy/ObsoleteConfigNodesSniff.php | 179 ++++-------------- .../Sniffs/Legacy/ObsoleteResponseSniff.php | 20 +- .../NamingConvention/InterfaceNameSniff.php | 6 +- .../NamingConvention/ReservedWordsSniff.php | 55 +----- ...utogeneratedClassNotInConstructorSniff.php | 2 +- .../Sniffs/PHP/LiteralNamespacesSniff.php | 10 +- 9 files changed, 156 insertions(+), 284 deletions(-) diff --git a/Magento2/Sniffs/Legacy/DiConfigSniff.php b/Magento2/Sniffs/Legacy/DiConfigSniff.php index 164a084c..7495dd44 100644 --- a/Magento2/Sniffs/Legacy/DiConfigSniff.php +++ b/Magento2/Sniffs/Legacy/DiConfigSniff.php @@ -11,26 +11,27 @@ class DiConfigSniff implements Sniff { - /** - * @var string[] - */ - private $obsoleteDiNodesWarningCodes = [ - ' 'FoundObsoleteParamNode', - ' 'FoundObsoleteInstanceNode', - ' 'FoundObsoleteArrayNode', - ' 'FoundObsoleteValueNode', - ]; - - /** - * @var string[] Associative array containing the obsolete nodes and the message to display when they are found. - */ - private $obsoleteDiNodes = [ - ' 'The node is obsolete. Instead, use the ', - ' 'The node is obsolete. Instead, use the ', - ' 'The node is obsolete. Instead, use the ', - ' node is obsolete. Instead, use the ', - ' 'The node is obsolete. Instead, provide the actual value as a text literal.' + private const OBSOLETE_NODES = [ + 'FoundObsoleteParamNode' => [ + 'pattern' => ' 'The node is obsolete. Instead, use the ' + ], + 'FoundObsoleteInstanceNode' => [ + 'pattern' => ' 'The node is obsolete. Instead, use the >' + ], + 'FoundObsoleteArrayNode' => [ + 'pattern' => ' 'The node is obsolete. Instead, use the ' + ], + 'FoundObsoleteItemNode' => [ + 'pattern' => ' 'The node is obsolete. Instead, use the ' + ], + 'FoundObsoleteValueNode' => [ + 'pattern' => ' 'The node is obsolete. Instead, provide the actual value as a text literal' + ], ]; /** @@ -50,12 +51,12 @@ public function process(File $phpcsFile, $stackPtr) { $lineContent = $phpcsFile->getTokensAsString($stackPtr, 1); - foreach ($this->obsoleteDiNodes as $element => $message) { - if (strpos($lineContent, $element) !== false) { + foreach (self::OBSOLETE_NODES as $code => $data) { + if (strpos($lineContent, $data['pattern']) !== false) { $phpcsFile->addWarning( - $message, + $data['message'], $stackPtr, - $this->obsoleteDiNodesWarningCodes[$element] + $code ); } } diff --git a/Magento2/Sniffs/Legacy/EmailTemplateSniff.php b/Magento2/Sniffs/Legacy/EmailTemplateSniff.php index 69cbc751..85d6b9a0 100644 --- a/Magento2/Sniffs/Legacy/EmailTemplateSniff.php +++ b/Magento2/Sniffs/Legacy/EmailTemplateSniff.php @@ -15,16 +15,14 @@ class EmailTemplateSniff implements Sniff { private const OBSOLETE_EMAIL_DIRECTIVES = [ - '/\{\{htmlescape.*?\}\}/i' => 'Directive {{htmlescape}} is obsolete. Use {{var}} instead.', - '/\{\{escapehtml.*?\}\}/i' => 'Directive {{escapehtml}} is obsolete. Use {{var}} instead.', - ]; - - /** - * @var string[] - */ - private $errorCodes = [ - '/\{\{htmlescape.*?\}\}/i' => 'FoundObsoleteHtmlescapeDirective', - '/\{\{escapehtml.*?\}\}/i' => 'FoundObsoleteEscapehtmlDirective' + 'FoundObsoleteHtmlescapeDirective' => [ + 'pattern' => '/\{\{htmlescape.*?\}\}/i', + 'message' => 'Directive {{htmlescape}} is obsolete. Use {{var}} instead.', + ], + 'FoundObsoleteEscapehtmlDirective' => [ + 'pattern' => '/\{\{escapehtml.*?\}\}/i', + 'message' => 'Directive {{escapehtml}} is obsolete. Use {{var}} instead.', + ], ]; /** @@ -43,12 +41,12 @@ public function register(): array public function process(File $phpcsFile, $stackPtr) { $content = $phpcsFile->getTokens()[$stackPtr]['content']; - foreach (self::OBSOLETE_EMAIL_DIRECTIVES as $directiveRegex => $errorMessage) { - if (preg_match($directiveRegex, $content)) { + foreach (self::OBSOLETE_EMAIL_DIRECTIVES as $code => $data) { + if (preg_match($data['pattern'], $content)) { $phpcsFile->addError( - $errorMessage, + $data['message'], $stackPtr, - $this->errorCodes[$directiveRegex] + $code ); } } diff --git a/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php b/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php index d1e0c787..09dbedfb 100644 --- a/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php +++ b/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php @@ -13,49 +13,58 @@ class InstallUpgradeSniff implements Sniff { - /** - * @var string[] - */ - private $wrongPrefixes = [ - 'install-' => 'Install scripts are obsolete. ' - . 'Please use declarative schema approach in module\'s etc/db_schema.xml file', - 'InstallSchema' => 'InstallSchema scripts are obsolete. ' - . 'Please use declarative schema approach in module\'s etc/db_schema.xml file', - 'InstallData' => 'InstallData scripts are obsolete. ' - . 'Please use data patches approach in module\'s Setup/Patch/Data dir', - 'data-install-' => 'Install scripts are obsolete. Please create class InstallData in module\'s Setup folder', - 'upgrade-' => 'Upgrade scripts are obsolete. ' - . 'Please use declarative schema approach in module\'s etc/db_schema.xml file', - 'UpgradeSchema' => 'UpgradeSchema scripts are obsolete. ' - . 'Please use declarative schema approach in module\'s etc/db_schema.xml file', - 'UpgradeData' => 'UpgradeData scripts are obsolete. ' - . 'Please use data patches approach in module\'s Setup/Patch/Data dir', - 'data-upgrade-' => 'Upgrade scripts are obsolete. ' - . 'Please use data patches approach in module\'s Setup/Patch/Data dir', - 'recurring' => 'Recurring scripts are obsolete. Please create class Recurring in module\'s Setup folder', - ]; - - /** - * @var string[] - */ - private $wrongPrefixesErrorCodes = [ - 'install-' => 'ObsoleteInstallScript', - 'InstallSchema' => 'obsoleteInstallSchemaScript', - 'InstallData' => 'obsoleteInstallDataScript', - 'data-install-' => 'obsoleteDataInstallScript', - 'upgrade-' => 'obsoleteUpgradeScript', - 'UpgradeSchema' => 'obsoleteUpgradeSchemaScript', - 'UpgradeData' => 'obsoleteUpgradeDataScript', - 'data-upgrade-' => 'obsoleteDataUpgradeScript', - 'recurring' => 'obsoleteRecurringScript', + private const WRONG_PREFIXES = [ + 'ObsoleteInstallScript' => [ + 'pattern' => 'install-', + 'message' => 'Install scripts are obsolete. ' + . 'Please use declarative schema approach in module\'s etc/db_schema.xml file', + ], + 'ObsoleteInstallSchemaScript' => [ + 'pattern' => 'InstallSchema', + 'message' => 'InstallSchema scripts are obsolete. ' + . 'Please use declarative schema approach in module\'s etc/db_schema.xml file', + ], + 'ObsoleteInstallDataScript' => [ + 'pattern' => 'InstallData', + 'message' => 'InstallData scripts are obsolete. ' + . 'Please use data patches approach in module\'s Setup/Patch/Data dir', + ], + 'ObsoleteDataInstallScript' => [ + 'pattern' => 'data-install-', + 'message' => 'Install scripts are obsolete. Please create class InstallData in module\'s Setup folder', + ], + 'ObsoleteUpgradeScript' => [ + 'pattern' => 'upgrade-', + 'message' => 'Upgrade scripts are obsolete. ' + . 'Please use declarative schema approach in module\'s etc/db_schema.xml file', + ], + 'ObsoleteUpgradeSchemaScript' => [ + 'pattern' => 'UpgradeSchema', + 'message' => 'UpgradeSchema scripts are obsolete. ' + . 'Please use declarative schema approach in module\'s etc/db_schema.xml file', + ], + 'ObsoleteUpgradeDataScript' => [ + 'pattern' => 'UpgradeData', + 'message' => 'UpgradeData scripts are obsolete. ' + . 'Please use data patches approach in module\'s Setup/Patch/Data dir', + ], + 'ObsoleteDataUpgradeScript' => [ + 'pattern' => 'data-upgrade', + 'message' => 'Upgrade scripts are obsolete. ' + . 'Please use data patches approach in module\'s Setup/Patch/Data dir', + ], + 'ObsoleteRecurringScript' => [ + 'pattern' => 'recurring', + 'message' => 'Recurring scripts are obsolete. Please create class Recurring in module\'s Setup folder' + ] ]; /** * @var string[] */ - private $invalidDirectoriesErrorCodes = [ - 'data' => 'dataInvalidDirectory', - 'sql' => 'sqlInvalidDirectory' + private const INVALID_DIRECTORIES_ERROR_CODES = [ + 'data' => 'DataInvalidDirectory', + 'sql' => 'SqlInvalidDirectory' ]; /** @@ -79,9 +88,9 @@ public function process(File $phpcsFile, $stackPtr) $fileInfo = new SplFileInfo($phpcsFile->getFilename()); - foreach ($this->wrongPrefixes as $prefix => $errorMessage) { - if (strpos($fileInfo->getFilename(), $prefix) === 0) { - $phpcsFile->addError($errorMessage, 0, $this->wrongPrefixesErrorCodes[$prefix]); + foreach (self::WRONG_PREFIXES as $code => $data) { + if (strpos($fileInfo->getFilename(), $data['pattern']) === 0) { + $phpcsFile->addError($data['message'], 0, $code); } } @@ -94,7 +103,7 @@ public function process(File $phpcsFile, $stackPtr) . "- Create a data patch within module's Setup/Patch/Data folder for data upgrades.\n" . "- Use declarative schema approach in module's etc/db_schema.xml file for schema changes.", 0, - $this->invalidDirectoriesErrorCodes[$folderName] + self::INVALID_DIRECTORIES_ERROR_CODES[$folderName] ); } } diff --git a/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php b/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php index effaf123..efc5fae7 100644 --- a/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php +++ b/Magento2/Sniffs/Legacy/ObsoleteConfigNodesSniff.php @@ -14,108 +14,7 @@ class ObsoleteConfigNodesSniff implements Sniff { private const ERROR_MESSAGE_CONFIG = "Nodes identified by XPath '%s' are obsolete. %s"; - private const ERROR_CODE_CONFIG = 'WrongXML'; - - /** - * @var string[] - */ - private $obsoleteNodesErrorCodes = [ - '/config/global/fieldsets' => 'obsoleteNodeGlobalFieldsets', - '/config/global/cache/betatypes' => 'obsoleteNodeBetatypes', - '/config/admin/fieldsets' => 'obsoleteNodeAdminFieldsets', - '/config/general/locale' => 'obsoleteNodeGeneralLocale', - '/config/global/can_use_base_url' => 'obsoleteNodeGlobalCanUseBaseURL', - '/config/global/locale/allow/codes' => 'obsoleteNodeAllowCodes', - '/config/global/locale/allow/currencies' => 'obsoleteNodeAllowCurrencies', - '/config/global/mime/types' => 'obsoleteNodeMimeTypes', - '/config/global/models/*/deprecatedNode' => 'obsoleteNodeDeprecatedNode', - '/config/global/models/*/entities/*/table' => 'obsoleteNodeEntitiesTable', - '/config/global/models/*/class' => 'obsoleteNodeModelsClass', - '/config/global/helpers/*/class' => 'obsoleteNodeHelpersClass', - '/config/global/blocks/*/class' => 'obsoleteNodeBlocksClass', - '/config/global/models/*/resourceModel' => 'obsoleteNodeResourceModel', - '/config/global/page/layouts' => 'obsoleteNodePageLayouts', - '/config/global/cms/layouts' => 'obsoleteNodeCmsLayouts', - '/config/global/payment/cc/types/*/validator' => 'obsoleteNodeTypesValidator', - '/config/global/payment' => 'obsoleteNodeGlobalPayment', - '/config/adminhtml/menu' => 'obsoleteNodeAdminhtmlMenu', - '/config/adminhtml/acl' => 'obsoleteNodeAdminhtmlAcl', - '/config/adminhtml/global_search' => 'obsoleteNodeAdminhtmlGlobalSearch', - '/config/*[self::global|self::adminhtml|self::frontend]/di' => 'obsoleteNodeDi', - '/config/*[self::global|self::adminhtml|self::frontend]/events' => 'obsoleteNodeEvents', - '/config/*[self::global|self::adminhtml|self::frontend]/routers' => 'obsoleteNodeRouters', - '/config/global/importexport' => 'obsoleteNodeGlobalImportExport', - '/config/global/catalog/product/type' => 'obsoleteNodeProductType', - '/config/global/catalog/product/options' => 'obsoleteNodeProductOptions', - '/config/global/catalog/product/media/image_types' => 'obsoleteNodeMediaImageTypes', - '/config/global/eav_attributes' => 'obsoleteNodeEavAttributes', - '/config/global/index' => 'obsoleteNodeGlobalIndex', - '/config/global/catalogrule' => 'obsoleteNodeGlobalCatalogRule', - '/config/global/salesrule' => 'obsoleteNodeGlobalSalesRule', - '/config/global/session' => 'obsoleteNodeGlobalSession', - '/config/global/ignore_user_agents' => 'obsoleteNodeGlobalIgnoreUserAgents', - '/config/global/request' => 'obsoleteNodeGlobalRequest', - '/config/global/secure_url' => 'obsoleteNodeGlobalSecureUrl', - '/config/global/dev' => 'obsoleteNodeGlobalDev', - '/config/global/webapi' => 'obsoleteNodeGlobalWebapi', - '/config/global/cms' => 'obsoleteNodeGlobalCms', - '/config/global/widget' => 'obsoleteNodeGlobalWidget', - '/config/global/catalog/product/flat/max_index_count' => 'obsoleteNodeFlatMaxIndexCount', - '/config/global/catalog/product/flat/attribute_groups' => 'obsoleteNodeFlatAttributeGroups', - '/config/global/catalog/product/flat/add_filterable_attributes' => 'obsoleteNodeFlatAddIterableAttributes', - '/config/global/catalog/product/flat/add_child_data' => 'obsoleteNodeFlatAddChildData', - '/config/global/catalog/content/template_filter' => 'obsoleteNodeContentTemplateFilter', - '/config/frontend/catalog/per_page_values/list' => 'obsoleteNodePerPageValuesList', - '/config/frontend/catalog/per_page_values/grid' => 'obsoleteNodePerPageValuesGrid', - '/config/global/catalog/product/design' => 'obsoleteNodeProductDesign', - '/config/global/catalog/product/attributes' => 'obsoleteNodeProductAttributes', - '/config/global/eav_frontendclasses' => 'obsoleteNodeGlobalEavFrontendClasses', - '/config/global/resources' => 'obsoleteNodeGlobalResources', - '/config/global/resource' => 'obsoleteNodeGlobalResource', - '/config/*/events/core_block_abstract_to_html_after' => 'obsoleteNodeEventsCoreBlockAbstract', - '/config/*/events/catalog_controller_product_delete' => 'obsoleteNodeEventsCatalogController', - '/config//observers/*/args' => 'obsoleteNodeObserversArgs', - '/config/default/design/theme' => 'obsoleteNodeDesignTheme', - '/config/global/theme' => 'obsoleteNodeGlobalTheme', - '/config/default/web/*/base_js_url' => 'obsoleteNodeWebBaseJsUrl', - '/config/default/web/*/base_skin_url' => 'obsoleteNodeWebBaseSkinUrl', - '/config/default/web/*/base_cache_url' => 'obsoleteNodeWebBaseCacheUrl', - '/config/global/cache/types/*/tags' => 'obsoleteNodeTypesTags', - '/config/global/disable_local_modules' => 'obsoleteNodeGlobalDisableLocalModules', - '/config/global/newsletter/template_filter' => 'obsoleteNodeNewsletterTemplateFilter', - '/config/*/layout' => 'obsoleteNodeConfigLayout', - '/config/frontend/product/collection/attributes' => 'obsoleteNodeProductCollectionAttributes', - '/config/frontend/category/collection/attributes' => 'obsoleteNodeCategoryCollectionAttributes', - '/config/global/sales/quote/item/product_attributes' => 'obsoleteNodeQuoteItemProductAttributes', - '/config/global/wishlist/item/product_attributes' => 'obsoleteNodeWishlistItemProductAttributes', - '/config/global/catalog/product/flat/attribute_nodes' => 'obsoleteNodeFlatAttributeNodes', - '/config/global/customer/address/formats' => 'obsoleteNodeCustomerAddressFormats', - '/config/global/pdf' => 'obsoleteNodeGlobalPdf', - '/config/install' => 'obsoleteNodeConfigInstall', - '/config/install/design' => 'obsoleteNodeConfigInstallDesign', - '/config/adminhtml/design' => 'obsoleteNodeConfigAdminhtmlDesign', - '/config/frontend/design' => 'obsoleteNodeConfigFrontendDesign', - '/config/crontab' => 'obsoleteNodeConfigCrontab', - '/config/global/areas' => 'obsoleteNodeGlobalAreas', - '/config/vde' => 'obsoleteNodeConfigVde', - '/config/global/ignoredModules' => 'obsoleteNodeGlobalIgnoredModules', - '/config/global/helpers' => 'obsoleteNodeGlobalHelpers', - '/config/global/external_cache' => 'obsoleteNodeGlobalExternalCache', - '/config/global/currency/import/services' => 'obsoleteNodeCurrencyImportServices', - '/config/global/template' => 'obsoleteNodeGlobalTemplate', - '/config/default/general/file/sitemap_generate_valid_paths' => 'obsoleteNodeFileSitemap', - '/config/dev/css/minify_adapter' => 'obsoleteNodeCssMinify', - '/config/dev/js/minify_adapter' => 'obsoleteNodeJsMinify', - '/config/global/full_page_cache' => 'obsoleteNodeGlobalFullPageCache', - '/config/adminhtml/enterprise/admingws' => 'obsoleteNodeEnterpriseAdmingws', - '/config/adminhtml/enterprise/websiterestriction' => 'obsoleteNodeEnterpriseWebsiteRestriction', - '/config/global/enterprise_cms' => 'obsoleteNodeGlobalEnterpriseCms', - '/config/global/enterprise/banner' => 'obsoleteNodeGlobalEnterpriseBanner', - '/config/global/enterprise/giftcardaccount' => 'obsoleteNodeGlobalEnterpriseGiftCardAccount', - '/config/global/skip_process_modules_updates' => 'obsoleteNodeGlobalSkipProcess', - '/config/system/page_cache' => 'obsoleteNodeSystemPageCache', - '/config/system/cms/content/versioning' => 'obsoleteNodeContentVersioning', - ]; + private const ERROR_CODE_CONFIG = 'ObsoleteNodeInConfig'; /** * @inheritdoc @@ -164,7 +63,7 @@ public function process(File $phpcsFile, $stackPtr) $suggestion ), dom_import_simplexml($match)->getLineNo()-1, - $this->obsoleteNodesErrorCodes[$xpath] + self::ERROR_CODE_CONFIG ); } } @@ -196,15 +95,15 @@ private function getObsoleteNodes(): array '/config/global/cache/betatypes' => '', '/config/admin/fieldsets' => '', '/config/general/locale' => - 'This configuration moved to DI configuration of \Magento\Framework\Locale\ConfigInterface', + 'This configuration moved to Di configuration of \Magento\Framework\Locale\ConfigInterface', '/config/global/can_use_base_url' => - 'This configuration moved to DI configuration of \Magento\Backend\App\Action\Context class', + 'This configuration moved to Di configuration of \Magento\Backend\App\Action\Context class', '/config/global/locale/allow/codes' => - 'This configuration moved to DI configuration of \Magento\Framework\Locale\ConfigInterface', + 'This configuration moved to Di configuration of \Magento\Framework\Locale\ConfigInterface', '/config/global/locale/allow/currencies' => - 'This configuration moved to DI configuration of \Magento\Framework\Locale\ConfigInterface', + 'This configuration moved to Di configuration of \Magento\Framework\Locale\ConfigInterface', '/config/global/mime/types' => - 'This configuration moved to DI configuration for \Magento\Downloadable\Helper\File class', + 'This configuration moved to Di configuration for \Magento\Downloadable\Helper\File class', '/config/global/models/*/deprecatedNode' => '', '/config/global/models/*/entities/*/table' => '', '/config/global/models/*/class' => '', @@ -219,68 +118,68 @@ private function getObsoleteNodes(): array '/config/adminhtml/menu' => 'Move them to adminhtml.xml.', '/config/adminhtml/acl' => 'Move them to adminhtml.xml.', '/config/adminhtml/global_search' => - 'This configuration moved to DI configuration of \Magento\Backend\Controller\Index', + 'This configuration moved to Di configuration of \Magento\Backend\Controller\Index', '/config/*[self::global|self::adminhtml|self::frontend]/di' => 'This configuration moved to di.xml file', '/config/*[self::global|self::adminhtml|self::frontend]/events' => 'This configuration moved to events.xml file', '/config/*[self::global|self::adminhtml|self::frontend]/routers' => 'Routes configuration moved to routes.xml file,' . - 'routers list can be set through DI configuration of \Magento\Framework\App\RouterList model', + 'routers list can be set through Di configuration of \Magento\Framework\App\RouterList model', '/config/global/importexport' => 'This configuration moved to import.xml and export.xml files', '/config/global/catalog/product/type' => 'This configuration moved to product_types.xml file', '/config/global/catalog/product/options' => 'This configuration moved to product_options.xml file', - '/config/global/catalog/product/media/image_types' => 'This configuration moved to DI configuration of ' . + '/config/global/catalog/product/media/image_types' => 'This configuration moved to Di configuration of ' . '\Magento\Backend\Block\Catalog\Product\Frontend\Product\Watermark', '/config/global/eav_attributes' => 'This configuration moved to eav_attributes.xml file', '/config/global/index' => 'This configuration moved to indexers.xml file', '/config/global/catalogrule' => - 'This configuration moved to DI configuration of \Magento\CatalogRule\Model\Rule', + 'This configuration moved to Di configuration of \Magento\CatalogRule\Model\Rule', '/config/global/salesrule' => - 'This configuration moved to DI configuration of \Magento\SalesRule\Helper\Coupon', + 'This configuration moved to Di configuration of \Magento\SalesRule\Helper\Coupon', '/config/global/session' => - 'This configuration moved to DI configuration of \Magento\Framework\Session\Validator', + 'This configuration moved to Di configuration of \Magento\Framework\Session\Validator', '/config/global/ignore_user_agents' => - 'This configuration moved to DI configuration of \Magento\Log\Model\Visitor', + 'This configuration moved to Di configuration of \Magento\Log\Model\Visitor', '/config/global/request' => - 'This configuration moved to DI configuration of \Magento\Framework\App\RequestInterface', + 'This configuration moved to Di configuration of \Magento\Framework\App\RequestInterface', '/config/global/secure_url' => - 'This configuration moved to DI configuration of \Magento\Framework\Url\SecurityInfo', + 'This configuration moved to Di configuration of \Magento\Framework\Url\SecurityInfo', '/config/global/dev' => - 'This configuration moved to DI configuration of \Magento\Framework\App\Action\Context', + 'This configuration moved to Di configuration of \Magento\Framework\App\Action\Context', '/config/global/webapi' => - 'This configuration moved to DI configuration of '. + 'This configuration moved to Di configuration of '. ' \Magento\Webapi\Controller\Request\Rest\Interpreter\Factory' . ' and \Magento\Webapi\Controller\Response\Rest\Renderer\Factory', '/config/global/cms' => - 'This configuration moved to DI configuration of \Magento\Cms\Model\Wysiwyg\Images\Storage' . + 'This configuration moved to Di configuration of \Magento\Cms\Model\Wysiwyg\Images\Storage' . ' and \Magento\Cms\Model\Wysiwyg\Config', '/config/global/widget' => - 'This configuration moved to DI configuration of \Magento\Cms\Model\Template\FilterProvider', + 'This configuration moved to Di configuration of \Magento\Cms\Model\Template\FilterProvider', '/config/global/catalog/product/flat/max_index_count' => - 'This configuration moved to DI configuration of '. + 'This configuration moved to Di configuration of '. '\Magento\Catalog\Model\ResourceModel\Product\Flat\Indexer', '/config/global/catalog/product/flat/attribute_groups' => - 'This configuration moved to DI configuration of '. + 'This configuration moved to Di configuration of '. '\Magento\Catalog\Model\ResourceModel\Product\Flat\Indexer', '/config/global/catalog/product/flat/add_filterable_attributes' => - 'This configuration moved to DI configuration of \Magento\Catalog\Helper\Product\Flat\Indexer', + 'This configuration moved to Di configuration of \Magento\Catalog\Helper\Product\Flat\Indexer', '/config/global/catalog/product/flat/add_child_data' => - 'This configuration moved to DI configuration of \Magento\Catalog\Helper\Product\Flat\Indexer', + 'This configuration moved to Di configuration of \Magento\Catalog\Helper\Product\Flat\Indexer', '/config/global/catalog/content/template_filter' => - 'This configuration moved to DI configuration of \Magento\Catalog\Helper\Data', + 'This configuration moved to Di configuration of \Magento\Catalog\Helper\Data', '/config/frontend/catalog/per_page_values/list' => - 'This configuration moved to DI configuration of \Magento\Catalog\Model\Config\Source\ListPerPage', + 'This configuration moved to Di configuration of \Magento\Catalog\Model\Config\Source\ListPerPage', '/config/frontend/catalog/per_page_values/grid' => - 'This configuration moved to DI configuration of \Magento\Catalog\Model\Config\Source\GridPerPage', - '/config/global/catalog/product/design' => 'This configuration moved to DI configuration of' . + 'This configuration moved to Di configuration of \Magento\Catalog\Model\Config\Source\GridPerPage', + '/config/global/catalog/product/design' => 'This configuration moved to Di configuration of' . ' \Magento\Catalog\Model\Entity\Product\Attribute\Design\Option\Container', '/config/global/catalog/product/attributes' => 'This configuration moved catalog_attributes.xml', '/config/global/eav_frontendclasses' => 'This configuration was removed. ' . 'Please pluginize \Magento\Eav\Helper\Data::getFrontendClasses to extend frontend classes list', '/config/global/resources' => - 'This configuration moved to DI configuration of \Magento\Framework\App\ResourceConnection', + 'This configuration moved to Di configuration of \Magento\Framework\App\ResourceConnection', '/config/global/resource' => - 'This configuration moved to DI configuration of \Magento\Framework\App\ResourceConnection', + 'This configuration moved to Di configuration of \Magento\Framework\App\ResourceConnection', '/config/*/events/core_block_abstract_to_html_after' => 'Event has been replaced with "core_layout_render_element"', '/config/*/events/catalog_controller_product_delete' => '', @@ -312,25 +211,25 @@ private function getObsoleteNodes(): array '/config/frontend/design' => 'Configurations moved to DI file settings', '/config/crontab' => 'All cron configurations moved to crontab.xml', '/config/global/areas' => 'Configurations moved to DI file settings', - '/config/vde' => 'Was moved to DI', - '/config/global/ignoredModules' => 'Was replaced using DI', - '/config/global/helpers' => 'Was replaced using DI', - '/config/global/external_cache' => 'Was replaced using DI', + '/config/vde' => 'Was moved to di', + '/config/global/ignoredModules' => 'Was replaced using di', + '/config/global/helpers' => 'Was replaced using di', + '/config/global/external_cache' => 'Was replaced using di', '/config/global/currency/import/services' => 'Configurations moved to DI file settings', '/config/global/template' => 'Use /config/template of email_templates.xml', '/config/default/general/file/sitemap_generate_valid_paths' => '/config/default/sitemap/file/valid_paths', - '/config/dev/css/minify_adapter' => 'Was replaced using DI', - '/config/dev/js/minify_adapter' => 'Was replaced using DI', + '/config/dev/css/minify_adapter' => 'Was replaced using di', + '/config/dev/js/minify_adapter' => 'Was replaced using di', '/config/global/full_page_cache' => '/config/global/cache_advanced/full_page', '/config/adminhtml/enterprise/admingws' => 'This configuration moved to admingws.xml file', '/config/adminhtml/enterprise/websiterestriction' => 'This configuration moved to websiterestrictions.xml file', '/config/global/enterprise_cms' => 'This configuration moved to menu_hierarchy.xml file', '/config/global/enterprise/banner' => - 'This configuration moved to DI configuration of \Magento\Banner\Model\Config', + 'This configuration moved to Di configuration of \Magento\Banner\Model\Config', '/config/global/enterprise/giftcardaccount' => - 'This configuration moved to DI configuration of \Magento\GiftCardAccountModelPool', - '/config/global/skip_process_modules_updates' => 'Was replaced using DI', + 'This configuration moved to Di configuration of \Magento\GiftCardAccountModelPool', + '/config/global/skip_process_modules_updates' => 'Was replaced using di', '/config/system/page_cache' => 'Module is eliminated. Use PageCache module instead', '/config/system/cms/content/versioning' => 'Functionality is eliminated', ]; diff --git a/Magento2/Sniffs/Legacy/ObsoleteResponseSniff.php b/Magento2/Sniffs/Legacy/ObsoleteResponseSniff.php index 9dadee00..765ae5f1 100644 --- a/Magento2/Sniffs/Legacy/ObsoleteResponseSniff.php +++ b/Magento2/Sniffs/Legacy/ObsoleteResponseSniff.php @@ -32,16 +32,16 @@ class ObsoleteResponseSniff implements Sniff * @var string[] */ private $obsoleteResponseWarningCodes = [ - 'loadLayout' => 'loadLayoutResponseMethodFound', - 'renderLayout' => 'renderLayoutResponseMethodFound', - '_redirect' => 'redirectResponseMethodFound', - '_forward' => 'forwardResponseMethodFound', - '_setActiveMenu' => 'setActiveMenuResponseMethodFound', - '_addBreadcrumb' => 'addBreadcrumbResponseMethodFound', - '_addContent' => 'addContentResponseMethodFound', - '_addLeft' => 'addLeftResponseMethodFound', - '_addJs' => 'addJsResponseMethodFound', - '_moveBlockToContainer' => 'moveBlockToContainerResponseMethodFound', + 'loadLayout' => 'LoadLayoutResponseMethodFound', + 'renderLayout' => 'RenderLayoutResponseMethodFound', + '_redirect' => 'RedirectResponseMethodFound', + '_forward' => 'ForwardResponseMethodFound', + '_setActiveMenu' => 'SetActiveMenuResponseMethodFound', + '_addBreadcrumb' => 'AddBreadcrumbResponseMethodFound', + '_addContent' => 'AddContentResponseMethodFound', + '_addLeft' => 'AddLeftResponseMethodFound', + '_addJs' => 'AddJsResponseMethodFound', + '_moveBlockToContainer' => 'MoveBlockToContainerResponseMethodFound', ]; /** diff --git a/Magento2/Sniffs/NamingConvention/InterfaceNameSniff.php b/Magento2/Sniffs/NamingConvention/InterfaceNameSniff.php index 2ad688ec..8daf5226 100644 --- a/Magento2/Sniffs/NamingConvention/InterfaceNameSniff.php +++ b/Magento2/Sniffs/NamingConvention/InterfaceNameSniff.php @@ -45,16 +45,16 @@ public function register() /** * @inheritdoc */ - public function process(File $sourceFile, $stackPtr) + public function process(File $phpcsFile, $stackPtr) { - $tokens = $sourceFile->getTokens(); + $tokens = $phpcsFile->getTokens(); $declarationLine = $tokens[$stackPtr]['line']; $suffixLength = strlen($this->interfaceSuffix); // Find first T_STRING after 'interface' keyword in the line and verify it while ($tokens[$stackPtr]['line'] === $declarationLine) { if ($tokens[$stackPtr]['type'] === 'T_STRING') { if (substr($tokens[$stackPtr]['content'], 0 - $suffixLength) !== $this->interfaceSuffix) { - $sourceFile->addWarning($this->warningMessage, $stackPtr, $this->warningCode); + $phpcsFile->addWarning($this->warningMessage, $stackPtr, $this->warningCode); } break; } diff --git a/Magento2/Sniffs/NamingConvention/ReservedWordsSniff.php b/Magento2/Sniffs/NamingConvention/ReservedWordsSniff.php index 19b80e41..13109c58 100644 --- a/Magento2/Sniffs/NamingConvention/ReservedWordsSniff.php +++ b/Magento2/Sniffs/NamingConvention/ReservedWordsSniff.php @@ -36,43 +36,8 @@ class ReservedWordsSniff implements Sniff 'numeric' => '7', ]; - /** - * @var string[] - */ - private $classErrorCodes = [ - 'int' => 'IntForbiddenAsClassName', - 'float' => 'FloatForbiddenAsClassName', - 'bool' => 'boolForbiddenAsClassName', - 'string' => 'stringForbiddenAsClassName', - 'true' => 'trueForbiddenAsClassName', - 'false' => 'falseForbiddenAsClassName', - 'null' => 'nullForbiddenAsClassName', - 'void' => 'voidForbiddenAsClassName', - 'iterable' => 'iterableForbiddenAsClassName', - 'resource' => 'resourceForbiddenAsClassName', - 'object' => 'objectForbiddenAsClassName', - 'mixed' => 'mixedForbiddenAsClassName', - 'numeric' => 'numericForbiddenAsClassName', - ]; - - /** - * @var string[] - */ - private $namespaceErrorCodes = [ - 'int' => 'IntForbiddenAsNameSpace', - 'float' => 'FloatForbiddenAsNameSpace', - 'bool' => 'boolForbiddenAsNameSpace', - 'string' => 'stringForbiddenAsNameSpace', - 'true' => 'trueForbiddenAsNameSpace', - 'false' => 'falseForbiddenAsNameSpace', - 'null' => 'nullForbiddenAsNameSpace', - 'void' => 'voidForbiddenAsNameSpace', - 'iterable' => 'iterableForbiddenAsNameSpace', - 'resource' => 'resourceForbiddenAsNameSpace', - 'object' => 'objectForbiddenAsNameSpace', - 'mixed' => 'mixedForbiddenAsNameSpace', - 'numeric' => 'numericForbiddenAsNameSpace', - ]; + private const CLASS_ERROR_CODE = 'ForbiddenAsClassName'; + private const NAMESPACE_ERROR_CODE = 'ForbiddenAsNameSpace'; /** * @inheritdoc @@ -89,7 +54,7 @@ public function register() * @param int $stackPtr * @return void */ - protected function validateNamespace(File $sourceFile, $stackPtr) + protected function validateNamespace(File $sourceFile, int $stackPtr) { $stackPtr += 2; $tokens = $sourceFile->getTokens(); @@ -103,7 +68,7 @@ protected function validateNamespace(File $sourceFile, $stackPtr) $sourceFile->addError( 'Cannot use "%s" in namespace as it is reserved since PHP %s', $stackPtr, - $this->namespaceErrorCodes[strtolower($namespacePart)], + self::NAMESPACE_ERROR_CODE, [$namespacePart, $this->reservedWords[strtolower($namespacePart)]] ); } @@ -118,7 +83,7 @@ protected function validateNamespace(File $sourceFile, $stackPtr) * @param int $stackPtr * @return void */ - protected function validateClass(File $sourceFile, $stackPtr) + protected function validateClass(File $sourceFile, int $stackPtr) { $tokens = $sourceFile->getTokens(); $stackPtr += 2; //skip "class" and whitespace @@ -127,7 +92,7 @@ protected function validateClass(File $sourceFile, $stackPtr) $sourceFile->addError( 'Cannot use "%s" as class name as it is reserved since PHP %s', $stackPtr, - $this->classErrorCodes[strtolower($className)], + self::CLASS_ERROR_CODE, [$className, $this->reservedWords[$className]] ); } @@ -136,17 +101,17 @@ protected function validateClass(File $sourceFile, $stackPtr) /** * @inheritdoc */ - public function process(File $sourceFile, $stackPtr) + public function process(File $phpcsFile, $stackPtr) { - $tokens = $sourceFile->getTokens(); + $tokens = $phpcsFile->getTokens(); switch ($tokens[$stackPtr]['code']) { case T_CLASS: case T_INTERFACE: case T_TRAIT: - $this->validateClass($sourceFile, $stackPtr); + $this->validateClass($phpcsFile, $stackPtr); break; case T_NAMESPACE: - $this->validateNamespace($sourceFile, $stackPtr); + $this->validateNamespace($phpcsFile, $stackPtr); break; } } diff --git a/Magento2/Sniffs/PHP/AutogeneratedClassNotInConstructorSniff.php b/Magento2/Sniffs/PHP/AutogeneratedClassNotInConstructorSniff.php index f99346af..6c56d07e 100644 --- a/Magento2/Sniffs/PHP/AutogeneratedClassNotInConstructorSniff.php +++ b/Magento2/Sniffs/PHP/AutogeneratedClassNotInConstructorSniff.php @@ -15,7 +15,7 @@ */ class AutogeneratedClassNotInConstructorSniff implements Sniff { - private const ERROR_CODE = 'AUTOGENERATED_CLASS_NOT_IN_CONSTRUCTOR'; + private const ERROR_CODE = 'AutogeneratedClassNotInConstructor'; /** * @var array diff --git a/Magento2/Sniffs/PHP/LiteralNamespacesSniff.php b/Magento2/Sniffs/PHP/LiteralNamespacesSniff.php index 705e154b..d76dae3e 100644 --- a/Magento2/Sniffs/PHP/LiteralNamespacesSniff.php +++ b/Magento2/Sniffs/PHP/LiteralNamespacesSniff.php @@ -37,11 +37,11 @@ public function register() /** * @inheritdoc */ - public function process(File $sourceFile, $stackPtr) + public function process(File $phpcsFile, $stackPtr) { - $tokens = $sourceFile->getTokens(); - if ($sourceFile->findPrevious(T_STRING_CONCAT, $stackPtr, $stackPtr - 3) || - $sourceFile->findNext(T_STRING_CONCAT, $stackPtr, $stackPtr + 3) + $tokens = $phpcsFile->getTokens(); + if ($phpcsFile->findPrevious(T_STRING_CONCAT, $stackPtr, $stackPtr - 3) || + $phpcsFile->findNext(T_STRING_CONCAT, $stackPtr, $stackPtr + 3) ) { return; } @@ -53,7 +53,7 @@ public function process(File $sourceFile, $stackPtr) } if (preg_match($this->literalNamespacePattern, $content) === 1) { - $sourceFile->addWarning( + $phpcsFile->addWarning( "Use ::class notation instead.", $stackPtr, 'LiteralClassUsage' From 852a479d8a4ba28fe21d718672dee5934119ec2b Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 17:11:00 +0200 Subject: [PATCH 10/11] AC-1549: Made suggestions --- .../Sniffs/Legacy/ObsoleteConnectionSniff.php | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php b/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php index c79844a5..74a74394 100644 --- a/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php +++ b/Magento2/Sniffs/Legacy/ObsoleteConnectionSniff.php @@ -16,16 +16,18 @@ class ObsoleteConnectionSniff implements Sniff * @var string[] */ private $obsoleteMethods = [ - '_getReadConnection' => 'FoundObsoleteMethod_getReadConnection', - '_getWriteConnection' => 'FoundObsoleteMethod_getWriteConnection', - '_getReadAdapter' => 'FoundObsoleteMethod_getReadAdapter', - '_getWriteAdapter' => 'FoundObsoleteMethod_getWriteAdapter', - 'getReadConnection' => 'FoundObsoleteMethodGetReadConnection', - 'getWriteConnection' => 'FoundObsoleteMethodGetWriteConnection', - 'getReadAdapter' => 'FoundObsoleteMethodGetReadAdapter', - 'getWriteAdapter' => 'FoundObsoleteMethodGetWriteAdapter', + '_getReadConnection', + '_getWriteConnection', + '_getReadAdapter', + '_getWriteAdapter', + 'getReadConnection', + 'getWriteConnection', + 'getReadAdapter', + 'getWriteAdapter', ]; + private const OBSOLETE_METHOD_ERROR_CODE = 'ObsoleteMethodFound'; + /** * @inheritdoc */ @@ -56,12 +58,12 @@ private function validateObsoleteMethod(File $phpcsFile, int $stackPtr) $tokens = $phpcsFile->getTokens(); $stringPos = $phpcsFile->findNext(T_STRING, $stackPtr + 1); - foreach ($this->obsoleteMethods as $method => $errorCode) { + foreach ($this->obsoleteMethods as $method) { if ($tokens[$stringPos]['content'] === $method) { $phpcsFile->addWarning( sprintf("Contains obsolete method: %s. Please use getConnection method instead.", $method), $stackPtr, - $errorCode + self::OBSOLETE_METHOD_ERROR_CODE ); } } From 3d3dc9e54ba206b7272acecb73883a1fdea52da5 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 26 Oct 2021 17:17:22 +0200 Subject: [PATCH 11/11] AC-1549: Made suggestions --- Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php index dd4d06d1..4217ecda 100644 --- a/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php +++ b/Magento2/Sniffs/Legacy/PhtmlTemplateSniff.php @@ -16,19 +16,19 @@ class PhtmlTemplateSniff implements Sniff private const WARNING_CODE_THIS_USAGE = 'ThisUsageObsolete'; private const WARNING_CODE_PROTECTED_PRIVATE_BLOCK_ACCESS = 'ProtectedPrivateBlockAccess'; - private const WARNING_CODES_OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES = [ - '/(["\'])jquery\/ui\1/' => 'FoundJQueryUI', - '/data-mage-init=(?:\'|")(?!\s*{\s*"[^"]+")/' => 'FoundDataMageInit', - '@x-magento-init.>(?!\s*+{\s*"[^"]+"\s*:\s*{\s*"[\w/-]+")@i' => 'FoundXMagentoInit', - ]; - - private const OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES = [ - '/(["\'])jquery\/ui\1/' => 'Please do not use "jquery/ui" library in templates. Use needed jquery ' . - 'ui widget instead.', - '/data-mage-init=(?:\'|")(?!\s*{\s*"[^"]+")/' => 'Please do not initialize JS component in php. Do ' . - 'it in template.', - '@x-magento-init.>(?!\s*+{\s*"[^"]+"\s*:\s*{\s*"[\w/-]+")@i' => 'Please do not initialize JS component ' . - 'in php. Do it in template.', + private const OBSOLETE_REGEX = [ + 'FoundJQueryUI' => [ + 'pattern' => '/(["\'])jquery\/ui\1/', + 'message' => 'Please do not use "jquery/ui" library in templates. Use needed jquery ui widget instead' + ], + 'FoundDataMageInit' => [ + 'pattern' => '/data-mage-init=(?:\'|")(?!\s*{\s*"[^"]+")/', + 'message' => 'Please do not initialize JS component in php. Do it in template' + ], + 'FoundXMagentoInit' => [ + 'pattern' => '@x-magento-init.>(?!\s*+{\s*"[^"]+"\s*:\s*{\s*"[\w/-]+")@i', + 'message' => 'Please do not initialize JS component in php. Do it in template' + ], ]; /** @@ -143,12 +143,12 @@ private function checkHtmlSpecificFiles(File $phpcsFile, int $stackPtr): void { $content = $phpcsFile->getTokensAsString($stackPtr, 1); - foreach (self::OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES as $obsoleteRegex => $errorMessage) { - if (preg_match($obsoleteRegex, $content)) { + foreach (self::OBSOLETE_REGEX as $code => $data) { + if (preg_match($data['pattern'], $content)) { $phpcsFile->addWarning( - $errorMessage, + $data['message'], $stackPtr, - self::WARNING_CODES_OBSOLETE_REGEX_IN_SPECIFIC_PHTML_TEMPLATES[$obsoleteRegex] + $code ); } }