From 4f2fd32db9bd9392e66784a2d215c08a30195bde Mon Sep 17 00:00:00 2001 From: Lars Roettig Date: Sun, 3 Mar 2019 15:33:11 +0100 Subject: [PATCH] #22: Impl. Abstract classes MUST NOT be marked as public --- Magento/Sniffs/Classes/AbstractApiSniff.php | 68 +++++++++++++++++++ Magento/Tests/Classes/AbstractApiUnitTest.inc | 41 +++++++++++ Magento/Tests/Classes/AbstractApiUnitTest.php | 34 ++++++++++ Magento/ruleset.xml | 4 ++ 4 files changed, 147 insertions(+) create mode 100644 Magento/Sniffs/Classes/AbstractApiSniff.php create mode 100644 Magento/Tests/Classes/AbstractApiUnitTest.inc create mode 100644 Magento/Tests/Classes/AbstractApiUnitTest.php diff --git a/Magento/Sniffs/Classes/AbstractApiSniff.php b/Magento/Sniffs/Classes/AbstractApiSniff.php new file mode 100644 index 00000000..35353988 --- /dev/null +++ b/Magento/Sniffs/Classes/AbstractApiSniff.php @@ -0,0 +1,68 @@ +getTokens(); + $prev = $phpcsFile->findPrevious(T_WHITESPACE, $stackPtr - 1, null, true); + if ($prev !== false && $tokens[$prev]['code'] !== T_ABSTRACT) { + return; + } + + $commentStartPtr = $phpcsFile->findPrevious(T_DOC_COMMENT_OPEN_TAG, $stackPtr - 1, 0); + $commentCloserPtr = $tokens[$commentStartPtr]['comment_closer']; + + for ($i = $commentStartPtr; $i <= $commentCloserPtr; $i++) { + $token = $tokens[$i]; + + if ($token['code'] !== T_DOC_COMMENT_TAG) { + continue; + } + + if (strpos($token['content'], '@api') === false) { + continue; + } + + $phpcsFile->addWarning($this->warningMessage, $i, $this->warningCode); + } + } +} diff --git a/Magento/Tests/Classes/AbstractApiUnitTest.inc b/Magento/Tests/Classes/AbstractApiUnitTest.inc new file mode 100644 index 00000000..92d5edee --- /dev/null +++ b/Magento/Tests/Classes/AbstractApiUnitTest.inc @@ -0,0 +1,41 @@ + 1, + 23 => 1 + ]; + } +} diff --git a/Magento/ruleset.xml b/Magento/ruleset.xml index 40336962..dfd0db7d 100644 --- a/Magento/ruleset.xml +++ b/Magento/ruleset.xml @@ -142,6 +142,10 @@ 8 warning + + 8 + warning +