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 0e033cb7..c5b9f80e 100644 --- a/Magento/ruleset.xml +++ b/Magento/ruleset.xml @@ -105,6 +105,10 @@ + + 8 + warning + 8 warning