diff --git a/src/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer.php b/src/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer.php index 80ec6498..b8ce0148 100644 --- a/src/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer.php +++ b/src/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer.php @@ -13,6 +13,7 @@ use SplFileInfo; use Symplify\CodingStandard\Fixer\AbstractSymplifyFixer; use Symplify\CodingStandard\TokenRunner\Contract\DocBlock\MalformWorkerInterface; +use Symplify\CodingStandard\TokenRunner\DocBlock\MalformWorker\DeadParamMalformWorker; use Symplify\CodingStandard\TokenRunner\DocBlock\MalformWorker\InlineVariableDocBlockMalformWorker; use Symplify\CodingStandard\TokenRunner\DocBlock\MalformWorker\InlineVarMalformWorker; use Symplify\CodingStandard\TokenRunner\DocBlock\MalformWorker\MissingParamNameMalformWorker; @@ -51,6 +52,7 @@ public function __construct( SuperfluousReturnNameMalformWorker $superfluousReturnNameMalformWorker, SuperfluousVarNameMalformWorker $superfluousVarNameMalformWorker, SwitchedTypeAndNameMalformWorker $switchedTypeAndNameMalformWorker, + DeadParamMalformWorker $deadParamMalformWorker, private readonly TokenReverser $tokenReverser ) { $this->malformWorkers = [ @@ -63,6 +65,7 @@ public function __construct( $superfluousReturnNameMalformWorker, $superfluousVarNameMalformWorker, $switchedTypeAndNameMalformWorker, + $deadParamMalformWorker, ]; } @@ -123,6 +126,17 @@ public function fix(SplFileInfo $fileInfo, Tokens $tokens): void continue; } + // doc block became empty after removing dead lines → remove it completely, + // including the whitespace that followed it, to avoid leaving a blank line + if ($this->isEmptyDocBlock($docContent)) { + $tokens->clearAt($index); + if (isset($tokens[$index + 1]) && $tokens[$index + 1]->isWhitespace()) { + $tokens->clearAt($index + 1); + } + + continue; + } + $tokens[$index] = new Token([T_DOC_COMMENT, $docContent]); } } @@ -137,4 +151,9 @@ public function getPriority(): int { return -37; } + + private function isEmptyDocBlock(string $docContent): bool + { + return Strings::replace($docContent, '#/\*\*|\*/|\*|\s#', '') === ''; + } } diff --git a/src/TokenRunner/DocBlock/MalformWorker/DeadParamMalformWorker.php b/src/TokenRunner/DocBlock/MalformWorker/DeadParamMalformWorker.php new file mode 100644 index 00000000..57c65286 --- /dev/null +++ b/src/TokenRunner/DocBlock/MalformWorker/DeadParamMalformWorker.php @@ -0,0 +1,41 @@ + $tokens + */ + public function work(string $docContent, Tokens $tokens, int $position): string + { + $docBlock = new DocBlock($docContent); + + foreach ($docBlock->getLines() as $line) { + if (! Strings::match($line->getContent(), self::PARAM_WITHOUT_TYPE_REGEX)) { + continue; + } + + $line->remove(); + } + + return $docBlock->getContent(); + } +} diff --git a/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/dead_param.php.inc b/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/dead_param.php.inc new file mode 100644 index 00000000..ebb6c1e9 --- /dev/null +++ b/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/dead_param.php.inc @@ -0,0 +1,22 @@ + +----- + diff --git a/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/dead_param_only.php.inc b/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/dead_param_only.php.inc new file mode 100644 index 00000000..4233abab --- /dev/null +++ b/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/dead_param_only.php.inc @@ -0,0 +1,18 @@ + +----- + diff --git a/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/wrong4.php.inc b/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/wrong4.php.inc index 5687d4d5..233af839 100644 --- a/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/wrong4.php.inc +++ b/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/wrong4.php.inc @@ -36,7 +36,6 @@ function someFunction($instanceof) } /** - * @param $value * * @return The normalized array value */ diff --git a/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/wrong9.php.inc b/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/wrong9.php.inc index b97d1b4f..a70cc161 100644 --- a/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/wrong9.php.inc +++ b/tests/Fixer/Commenting/ParamReturnAndVarTagMalformsFixer/Fixture/wrong9.php.inc @@ -15,7 +15,6 @@ function someFunction($argument, $argument2, $exceptionMessageFactory, $items)