|
1 | 1 | <?php
|
2 | 2 |
|
3 | 3 | /**
|
4 |
| - * Copyright © Magento, Inc. All rights reserved. |
5 |
| - * See COPYING.txt for license details. |
| 4 | + * Copyright 2019 Adobe |
| 5 | + * All Rights Reserved. |
6 | 6 | */
|
7 | 7 | namespace Magento2\Sniffs\Commenting;
|
8 | 8 |
|
@@ -63,15 +63,29 @@ public function process(File $phpcsFile, $stackPtr)
|
63 | 63 | return;
|
64 | 64 | }
|
65 | 65 |
|
| 66 | + $commentCloserPtr = $tokens[$commentStartPtr]['comment_closer']; |
| 67 | + |
66 | 68 | if ($this->PHPDocFormattingValidator->providesMeaning($namePtr, $commentStartPtr, $tokens) !== true) {
|
67 |
| - $phpcsFile->addWarning( |
| 69 | + $fix = $phpcsFile->addFixableWarning( |
68 | 70 | sprintf(
|
69 | 71 | '%s description must contain meaningful information beyond what its name provides or be removed.',
|
70 | 72 | ucfirst($tokens[$stackPtr]['content'])
|
71 | 73 | ),
|
72 | 74 | $stackPtr,
|
73 | 75 | 'InvalidDescription'
|
74 | 76 | );
|
| 77 | + |
| 78 | + if ($fix) { |
| 79 | + for ($i = $commentStartPtr; $i <= $commentCloserPtr; $i++) { |
| 80 | + $phpcsFile->fixer->replaceToken($i, ''); |
| 81 | + } |
| 82 | + |
| 83 | + if ($tokens[$commentStartPtr - 1]['code'] === T_WHITESPACE |
| 84 | + && $tokens[$commentCloserPtr + 1]['code'] === T_WHITESPACE |
| 85 | + ) { |
| 86 | + $phpcsFile->fixer->replaceToken($commentCloserPtr + 1, ''); |
| 87 | + } |
| 88 | + } |
75 | 89 | }
|
76 | 90 |
|
77 | 91 | if ($this->PHPDocFormattingValidator->hasDeprecatedWellFormatted($commentStartPtr, $tokens) !== true) {
|
@@ -105,11 +119,35 @@ private function validateTags(File $phpcsFile, $commentStartPtr, $tokens)
|
105 | 119 | }
|
106 | 120 |
|
107 | 121 | if (in_array($tokens[$i]['content'], $this->forbiddenTags) === true) {
|
108 |
| - $phpcsFile->addWarning( |
| 122 | + $fix = $phpcsFile->addFixableWarning( |
109 | 123 | sprintf('Tag %s MUST NOT be used.', $tokens[$i]['content']),
|
110 | 124 | $i,
|
111 | 125 | 'ForbiddenTags'
|
112 | 126 | );
|
| 127 | + |
| 128 | + if ($fix) { |
| 129 | + for ($j = $i - 1; $j > $commentStartPtr; $j--) { |
| 130 | + if (!in_array($tokens[$j]['code'], [T_DOC_COMMENT_STAR, T_DOC_COMMENT_WHITESPACE], true)) { |
| 131 | + break; |
| 132 | + } |
| 133 | + |
| 134 | + if ($tokens[$j]['code'] === T_DOC_COMMENT_WHITESPACE && $tokens[$j]['content'] === "\n") { |
| 135 | + break; |
| 136 | + } |
| 137 | + |
| 138 | + $phpcsFile->fixer->replaceToken($j, ''); |
| 139 | + } |
| 140 | + |
| 141 | + $phpcsFile->fixer->replaceToken($i, ''); |
| 142 | + |
| 143 | + for ($j = $i + 1; $j < $commentCloserPtr; $j++) { |
| 144 | + $phpcsFile->fixer->replaceToken($j, ''); |
| 145 | + |
| 146 | + if ($tokens[$j]['code'] === T_DOC_COMMENT_WHITESPACE && $tokens[$j]['content'] === "\n") { |
| 147 | + break; |
| 148 | + } |
| 149 | + } |
| 150 | + } |
113 | 151 | }
|
114 | 152 | }
|
115 | 153 |
|
|
0 commit comments