From aed7b4409889968c0910ff8a224e6fab66968783 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Wed, 30 Mar 2022 13:37:29 +0200 Subject: [PATCH 1/3] Fixed obsolete attributes not detected --- Magento2/Sniffs/Legacy/ModuleXMLSniff.php | 44 +++++-------------- Magento2/Tests/Legacy/ModuleXMLUnitTest.4.xml | 11 +++++ Magento2/Tests/Legacy/ModuleXMLUnitTest.php | 5 +++ 3 files changed, 27 insertions(+), 33 deletions(-) create mode 100644 Magento2/Tests/Legacy/ModuleXMLUnitTest.4.xml diff --git a/Magento2/Sniffs/Legacy/ModuleXMLSniff.php b/Magento2/Sniffs/Legacy/ModuleXMLSniff.php index da25de0d..6dcf3c2f 100644 --- a/Magento2/Sniffs/Legacy/ModuleXMLSniff.php +++ b/Magento2/Sniffs/Legacy/ModuleXMLSniff.php @@ -18,7 +18,7 @@ class ModuleXMLSniff implements Sniff { private const WARNING_CODE = 'FoundObsoleteAttribute'; private const ERROR_CODE = 'WrongXML'; - + /** * @inheritdoc */ @@ -34,8 +34,7 @@ public function register(): array */ public function process(File $phpcsFile, $stackPtr) { - $line = $phpcsFile->getTokens()[$stackPtr]['content']; - if (strpos(trim($line), ' 0) { return; } @@ -54,51 +53,30 @@ public function process(File $phpcsFile, $stackPtr) ); } - $foundElements = $xml->xpath('/config/module'); - if ($foundElements === false) { - return; - } - - foreach ($foundElements as $element) { - if (!$this->elementIsCurrentlySniffedLine($element, $stackPtr)) { - continue; - } - - if (property_exists($element->attributes(), 'version')) { + $foundElements = $xml->xpath('/config/module[@version]'); + if ($foundElements !== false) { + foreach ($foundElements as $element) { $phpcsFile->addWarning( 'The "version" attribute is obsolete. Use "setup_version" instead.', - $stackPtr, + dom_import_simplexml($element)->getLineNo()-1, self::WARNING_CODE ); } + } - if (property_exists($element->attributes(), 'active')) { + $foundElements = $xml->xpath('/config/module[@active]'); + if ($foundElements !== false) { + foreach ($foundElements as $element) { $phpcsFile->addWarning( 'The "active" attribute is obsolete. The list of active modules '. 'is defined in deployment configuration.', - $stackPtr, + dom_import_simplexml($element)->getLineNo()-1, self::WARNING_CODE ); } } } - /** - * Check if the element passed is in the currently sniffed line - * - * @param SimpleXMLElement $element - * @param int $stackPtr - * @return bool - */ - private function elementIsCurrentlySniffedLine(SimpleXMLElement $element, int $stackPtr): bool - { - $node = dom_import_simplexml($element); - if ($node->getLineNo() === $stackPtr+1) { - return true; - } - return false; - } - /** * Format the incoming XML to avoid tags split into several lines. * diff --git a/Magento2/Tests/Legacy/ModuleXMLUnitTest.4.xml b/Magento2/Tests/Legacy/ModuleXMLUnitTest.4.xml new file mode 100644 index 00000000..794da9bd --- /dev/null +++ b/Magento2/Tests/Legacy/ModuleXMLUnitTest.4.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Magento2/Tests/Legacy/ModuleXMLUnitTest.php b/Magento2/Tests/Legacy/ModuleXMLUnitTest.php index c16d1e8b..4b2a2cde 100644 --- a/Magento2/Tests/Legacy/ModuleXMLUnitTest.php +++ b/Magento2/Tests/Legacy/ModuleXMLUnitTest.php @@ -35,6 +35,11 @@ public function getWarningList($testFile = '') if ($testFile === 'ModuleXMLUnitTest.3.xml') { return []; } + if ($testFile === 'ModuleXMLUnitTest.4.xml') { + return [ + 9 => 2, + ]; + } return []; } } From 19344bdf4a40a79becd510c6351461c783748bd0 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Wed, 30 Mar 2022 13:39:27 +0200 Subject: [PATCH 2/3] Added newline --- Magento2/Tests/Legacy/ModuleXMLUnitTest.4.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Magento2/Tests/Legacy/ModuleXMLUnitTest.4.xml b/Magento2/Tests/Legacy/ModuleXMLUnitTest.4.xml index 794da9bd..cbeb6c9b 100644 --- a/Magento2/Tests/Legacy/ModuleXMLUnitTest.4.xml +++ b/Magento2/Tests/Legacy/ModuleXMLUnitTest.4.xml @@ -8,4 +8,4 @@ - \ No newline at end of file + From 2f6052fe4bd9be7e7cf1646850de91518dd46a7a Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Fri, 1 Apr 2022 10:46:37 +0200 Subject: [PATCH 3/3] AC-1655: Added return if not XML --- Magento2/Sniffs/Legacy/ModuleXMLSniff.php | 1 + 1 file changed, 1 insertion(+) diff --git a/Magento2/Sniffs/Legacy/ModuleXMLSniff.php b/Magento2/Sniffs/Legacy/ModuleXMLSniff.php index 6dcf3c2f..338834a8 100644 --- a/Magento2/Sniffs/Legacy/ModuleXMLSniff.php +++ b/Magento2/Sniffs/Legacy/ModuleXMLSniff.php @@ -51,6 +51,7 @@ public function process(File $phpcsFile, $stackPtr) $stackPtr, self::ERROR_CODE ); + return; } $foundElements = $xml->xpath('/config/module[@version]');