From 9d650e1778c84a456b7f9baa15d08d6a1c4288f2 Mon Sep 17 00:00:00 2001 From: Elisea Cornejo Date: Thu, 19 Aug 2021 10:02:56 +0200 Subject: [PATCH 1/6] AC-601: Create phpcs static check for AbstractBlockTest --- Magento2/Sniffs/Legacy/AbstractBlockSniff.php | 88 +++++++++++++++++++ .../Tests/Legacy/AbstractBlockUnitTest.inc | 36 ++++++++ .../Tests/Legacy/AbstractBlockUnitTest.php | 33 +++++++ Magento2/ruleset.xml | 4 + 4 files changed, 161 insertions(+) create mode 100644 Magento2/Sniffs/Legacy/AbstractBlockSniff.php create mode 100644 Magento2/Tests/Legacy/AbstractBlockUnitTest.inc create mode 100644 Magento2/Tests/Legacy/AbstractBlockUnitTest.php diff --git a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php new file mode 100644 index 00000000..be4d2fad --- /dev/null +++ b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php @@ -0,0 +1,88 @@ +getTokens()[$stackPtr + 1]['content'])) { + return; + } + $content = $phpcsFile->getTokens()[$stackPtr + 1]['content']; + $isTheNextMethodGetChildSomething = in_array( + $content, + [ + self::CHILD_HTML_METHOD, + self::CHILD_CHILD_HTML_METHOD + ] + ); + if (!$isTheNextMethodGetChildSomething) { + return; + } + + $paramsCount = $this->getParametersCount($phpcsFile, $stackPtr + 1); + if ($content === self::CHILD_HTML_METHOD && $paramsCount >= 3) { + $phpcsFile->addError( + '3rd parameter is not needed anymore for getChildHtml()', + $stackPtr, + $this->errorCode + ); + } + if ($content === self::CHILD_CHILD_HTML_METHOD && $paramsCount >= 4) { + $phpcsFile->addError( + '4th parameter is not needed anymore for getChildChildHtml()', + $stackPtr, + $this->errorCode + ); + } + } + + /** + * @param File $phpcsFile + * @param int $methodHtmlPosition + * @return int + */ + private function getParametersCount(File $phpcsFile, int $methodHtmlPosition): int + { + $closePosition = $phpcsFile->getTokens()[$methodHtmlPosition +1]['parenthesis_closer']; + $getTokenAsContent = $phpcsFile->getTokensAsString( + $methodHtmlPosition + 2, + ($closePosition - $methodHtmlPosition) - 2 + ); + if ($getTokenAsContent) { + $parameters = explode(',' , $getTokenAsContent); + return count($parameters); + } + return 0; + } +} diff --git a/Magento2/Tests/Legacy/AbstractBlockUnitTest.inc b/Magento2/Tests/Legacy/AbstractBlockUnitTest.inc new file mode 100644 index 00000000..ca350548 --- /dev/null +++ b/Magento2/Tests/Legacy/AbstractBlockUnitTest.inc @@ -0,0 +1,36 @@ +getChildHtml( + function($param){ + $param->something(); + }, + 'aa' +); + +$this->getChildHtml( + function($param){ + $param->something(); + }, + 'aa', + 2 +); + +return $this->getChildHtml('aa', 'bb'); + +return $this->getChildHtml('aa', 'bb', 1, true); + +$this->getChildHtml(); + +$this->testMethod()->getChildHtml('aa', 'bb', 'cc'); + +$this->getChildChildHtml('aa', true, 'cc'); + +$this->getChildChildHtml('aa', true, 'cc', 1); + +$this->getChildChildHtml('aa' . 'bb', !(1 + 1) * (int) $this, 'cc', 1); + +private function getChildHtml($aa, $bb, $cc = 'cc') +{ +} + +$this->getChilChilddHtml(); diff --git a/Magento2/Tests/Legacy/AbstractBlockUnitTest.php b/Magento2/Tests/Legacy/AbstractBlockUnitTest.php new file mode 100644 index 00000000..62e9517c --- /dev/null +++ b/Magento2/Tests/Legacy/AbstractBlockUnitTest.php @@ -0,0 +1,33 @@ + 1, + 20 => 1, + 24 => 1, + 28 => 1, + 30 => 1 + ]; + } + + /** + * @inheritdoc + */ + public function getWarningList() + { + return []; + } +} diff --git a/Magento2/ruleset.xml b/Magento2/ruleset.xml index f77859e9..3ea0c969 100644 --- a/Magento2/ruleset.xml +++ b/Magento2/ruleset.xml @@ -105,6 +105,10 @@ 10 error + + 10 + error + From 515563ce0d7c83c112494d63420e57f1af4e3d48 Mon Sep 17 00:00:00 2001 From: Elisea Cornejo Date: Thu, 19 Aug 2021 10:25:27 +0200 Subject: [PATCH 2/6] AC-601: Create phpcs static check for AbstractBlockTest --- Magento2/Sniffs/Legacy/AbstractBlockSniff.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php index be4d2fad..6aeb67dd 100644 --- a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php +++ b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php @@ -68,6 +68,8 @@ public function process(File $phpcsFile, $stackPtr) } /** + * Get the quantity of parameters on a method + * * @param File $phpcsFile * @param int $methodHtmlPosition * @return int @@ -76,11 +78,11 @@ private function getParametersCount(File $phpcsFile, int $methodHtmlPosition): i { $closePosition = $phpcsFile->getTokens()[$methodHtmlPosition +1]['parenthesis_closer']; $getTokenAsContent = $phpcsFile->getTokensAsString( - $methodHtmlPosition + 2, + $methodHtmlPosition + 2, ($closePosition - $methodHtmlPosition) - 2 ); if ($getTokenAsContent) { - $parameters = explode(',' , $getTokenAsContent); + $parameters = explode(',', $getTokenAsContent); return count($parameters); } return 0; From 750260eb7136c0da6e6ada848f35c8479efcb04f Mon Sep 17 00:00:00 2001 From: Elisea Cornejo Date: Thu, 19 Aug 2021 11:16:37 +0200 Subject: [PATCH 3/6] AC-601: Create phpcs static check for AbstractBlockTest --- Magento2/Sniffs/Legacy/AbstractBlockSniff.php | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php index 6aeb67dd..77cff626 100644 --- a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php +++ b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php @@ -10,8 +10,8 @@ class AbstractBlockSniff implements Sniff { - const CHILD_HTML_METHOD = 'getChildHtml'; - const CHILD_CHILD_HTML_METHOD = 'getChildChildHtml'; + private const CHILD_HTML_METHOD = 'getChildHtml'; + private const CHILD_CHILD_HTML_METHOD = 'getChildChildHtml'; /** * Warning violation code. @@ -38,18 +38,13 @@ public function process(File $phpcsFile, $stackPtr) if (!isset($phpcsFile->getTokens()[$stackPtr + 1]['content'])) { return; } + $content = $phpcsFile->getTokens()[$stackPtr + 1]['content']; - $isTheNextMethodGetChildSomething = in_array( - $content, - [ - self::CHILD_HTML_METHOD, - self::CHILD_CHILD_HTML_METHOD - ] - ); - if (!$isTheNextMethodGetChildSomething) { + + if (!$this->isApplicable($content)) { return; } - + $paramsCount = $this->getParametersCount($phpcsFile, $stackPtr + 1); if ($content === self::CHILD_HTML_METHOD && $paramsCount >= 3) { $phpcsFile->addError( @@ -67,6 +62,17 @@ public function process(File $phpcsFile, $stackPtr) } } + /** + * Return if it is applicable to do the check + * + * @param String $content + * @return bool + */ + private function isApplicable(String $content): bool + { + return in_array($content, [self::CHILD_HTML_METHOD, self::CHILD_CHILD_HTML_METHOD]); + } + /** * Get the quantity of parameters on a method * From 3479d07a006c7731932862d76d3068f0ed2f37cc Mon Sep 17 00:00:00 2001 From: Elisea Cornejo Date: Thu, 19 Aug 2021 12:44:05 +0200 Subject: [PATCH 4/6] AC-601: Create phpcs static check for AbstractBlockTest --- Magento2/Sniffs/Legacy/AbstractBlockSniff.php | 1 + 1 file changed, 1 insertion(+) diff --git a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php index 77cff626..86041d13 100644 --- a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php +++ b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php @@ -1,4 +1,5 @@ Date: Thu, 19 Aug 2021 14:44:28 +0200 Subject: [PATCH 5/6] AC-601: Create phpcs static check for AbstractBlockTest --- Magento2/Sniffs/Legacy/AbstractBlockSniff.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php index 86041d13..dd1575b2 100644 --- a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php +++ b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php @@ -1,9 +1,10 @@ Date: Thu, 19 Aug 2021 14:45:03 +0200 Subject: [PATCH 6/6] AC-601: Create phpcs static check for AbstractBlockTest --- Magento2/Sniffs/Legacy/AbstractBlockSniff.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php index dd1575b2..41a7da00 100644 --- a/Magento2/Sniffs/Legacy/AbstractBlockSniff.php +++ b/Magento2/Sniffs/Legacy/AbstractBlockSniff.php @@ -16,7 +16,7 @@ class AbstractBlockSniff implements Sniff private const CHILD_CHILD_HTML_METHOD = 'getChildChildHtml'; /** - * Warning violation code. + * Error violation code. * * @var string */