diff --git a/config/set/common/comments.php b/config/set/common/comments.php index 5bb82a9d3f..91556074b1 100644 --- a/config/set/common/comments.php +++ b/config/set/common/comments.php @@ -6,7 +6,6 @@ use PhpCsFixer\Fixer\Comment\MultilineCommentOpeningClosingFixer; use PhpCsFixer\Fixer\Comment\NoEmptyCommentFixer; use PhpCsFixer\Fixer\Comment\SingleLineCommentSpacingFixer; -use PhpCsFixer\Fixer\Comment\SingleLineCommentStyleFixer; use Symplify\EasyCodingStandard\Config\ECSConfig; return ECSConfig::configure() @@ -14,6 +13,5 @@ GitMergeConflictSniff::class, NoEmptyCommentFixer::class, SingleLineCommentSpacingFixer::class, - SingleLineCommentStyleFixer::class, MultilineCommentOpeningClosingFixer::class, ]); diff --git a/config/set/laravel.php b/config/set/laravel.php index d8e1948c01..56cf2a23a1 100644 --- a/config/set/laravel.php +++ b/config/set/laravel.php @@ -37,7 +37,6 @@ use PhpCsFixer\Fixer\ClassNotation\SingleClassElementPerStatementFixer; use PhpCsFixer\Fixer\ClassNotation\VisibilityRequiredFixer; use PhpCsFixer\Fixer\Comment\NoTrailingWhitespaceInCommentFixer; -use PhpCsFixer\Fixer\Comment\SingleLineCommentStyleFixer; use PhpCsFixer\Fixer\ControlStructure\ControlStructureBracesFixer; use PhpCsFixer\Fixer\ControlStructure\ControlStructureContinuationPositionFixer; use PhpCsFixer\Fixer\ControlStructure\ElseifFixer; @@ -316,9 +315,6 @@ ->withConfiguredRule(SingleClassElementPerStatementFixer::class, [ 'elements' => ['const', 'property'], ]) - ->withConfiguredRule(SingleLineCommentStyleFixer::class, [ - 'comment_types' => ['hash'], - ]) ->withConfiguredRule(TrailingCommaInMultilineFixer::class, [ 'elements' => ['arrays'], ]) diff --git a/packages/coding-standard/src/Fixer/Commenting/TypeToVarTagFixer.php b/packages/coding-standard/src/Fixer/Commenting/TypeToVarTagFixer.php new file mode 100644 index 0000000000..a6ed9e4e16 --- /dev/null +++ b/packages/coding-standard/src/Fixer/Commenting/TypeToVarTagFixer.php @@ -0,0 +1,76 @@ + $tokens + */ + public function isCandidate(Tokens $tokens): bool + { + return $tokens->isAnyTokenKindsFound([T_DOC_COMMENT, T_COMMENT]); + } + + /** + * @param Tokens $tokens + */ + public function fix(SplFileInfo $fileInfo, Tokens $tokens): void + { + $reversedTokens = $this->tokenReverser->reverse($tokens); + + foreach ($reversedTokens as $index => $token) { + if (! $token->isGivenKind([T_DOC_COMMENT, T_COMMENT])) { + continue; + } + + $docContent = $token->getContent(); + if (! Regex::match($docContent, self::TYPE_TAG_REGEX)) { + continue; + } + + $newDocContent = Regex::replace($docContent, self::TYPE_TAG_REGEX, '@var'); + $newDocContent = Regex::replace($newDocContent, self::SINGLE_ASTERISK_START_REGEX, '/**$1'); + + $tokens[$index] = new Token([T_DOC_COMMENT, $newDocContent]); + } + } +} diff --git a/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/Fixture/doc_block_type.php.inc b/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/Fixture/doc_block_type.php.inc new file mode 100644 index 0000000000..59776b040d --- /dev/null +++ b/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/Fixture/doc_block_type.php.inc @@ -0,0 +1,13 @@ + +----- + diff --git a/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/Fixture/inline_type_assign.php.inc b/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/Fixture/inline_type_assign.php.inc new file mode 100644 index 0000000000..9404c8aa99 --- /dev/null +++ b/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/Fixture/inline_type_assign.php.inc @@ -0,0 +1,13 @@ +getModel('report'); + +?> +----- +getModel('report'); + +?> diff --git a/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/Fixture/skip_var.php.inc b/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/Fixture/skip_var.php.inc new file mode 100644 index 0000000000..65b318cd18 --- /dev/null +++ b/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/Fixture/skip_var.php.inc @@ -0,0 +1,4 @@ +doTestFile($filePath); + } + + public static function provideData(): Iterator + { + return self::yieldFiles(__DIR__ . '/Fixture'); + } + + public function provideConfig(): string + { + return __DIR__ . '/config/configured_rule.php'; + } +} diff --git a/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/config/configured_rule.php b/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/config/configured_rule.php new file mode 100644 index 0000000000..d5176651cb --- /dev/null +++ b/packages/coding-standard/tests/Fixer/Commenting/TypeToVarTagFixer/config/configured_rule.php @@ -0,0 +1,10 @@ +rule(TypeToVarTagFixer::class); +}; diff --git a/src/Config/Level/DocblockLevel.php b/src/Config/Level/DocblockLevel.php index 8ebd0dc7f9..61c0944d22 100644 --- a/src/Config/Level/DocblockLevel.php +++ b/src/Config/Level/DocblockLevel.php @@ -44,6 +44,7 @@ use Symplify\CodingStandard\Fixer\Commenting\RemoveUselessDefaultCommentFixer; use Symplify\CodingStandard\Fixer\Commenting\SingleLineInlineVarDocBlockFixer; use Symplify\CodingStandard\Fixer\Commenting\SwitchedTypeAndNameFixer; +use Symplify\CodingStandard\Fixer\Commenting\TypeToVarTagFixer; /** * Key 0 = level 0 @@ -62,6 +63,7 @@ final class DocblockLevel FixTagTypoFixer::class, // inline @var + TypeToVarTagFixer::class, DoubleAsteriskInlineVarFixer::class, RemoveDeadVarThisFixer::class, SingleLineInlineVarDocBlockFixer::class,