diff --git a/.gitattributes b/.gitattributes index d63c42d9e35..96b6e11132c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -17,4 +17,5 @@ *.php text whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4 diff=php *.rst text whitespace=blank-at-eol,blank-at-eof *.yml text whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4 +*.png binary eol=unset /tests/Fixtures/**/* -text -filter diff --git a/doc/list.rst b/doc/list.rst index 5d756be46e3..dd710c5ce12 100644 --- a/doc/list.rst +++ b/doc/list.rst @@ -106,7 +106,7 @@ List of Available Rules - | ``statements`` | List of statements which must be preceded by an empty line. - | Allowed values: a subset of ``['break', 'case', 'continue', 'declare', 'default', 'do', 'exit', 'for', 'foreach', 'goto', 'if', 'include', 'include_once', 'require', 'require_once', 'return', 'switch', 'throw', 'try', 'while', 'yield', 'yield_from']`` + | Allowed values: a subset of ``['break', 'case', 'continue', 'declare', 'default', 'phpdoc', 'do', 'exit', 'for', 'foreach', 'goto', 'if', 'include', 'include_once', 'require', 'require_once', 'return', 'switch', 'throw', 'try', 'while', 'yield', 'yield_from']`` | Default value: ``['break', 'continue', 'declare', 'return', 'throw', 'try']`` diff --git a/doc/ruleSets/PhpCsFixer.rst b/doc/ruleSets/PhpCsFixer.rst index 6b35c813b91..46f79b6b31f 100644 --- a/doc/ruleSets/PhpCsFixer.rst +++ b/doc/ruleSets/PhpCsFixer.rst @@ -12,7 +12,7 @@ Rules - `array_indentation <./../rules/whitespace/array_indentation.rst>`_ - `blank_line_before_statement <./../rules/whitespace/blank_line_before_statement.rst>`_ config: - ``['statements' => ['break', 'case', 'continue', 'declare', 'default', 'exit', 'goto', 'include', 'include_once', 'require', 'require_once', 'return', 'switch', 'throw', 'try']]`` + ``['statements' => ['break', 'case', 'continue', 'declare', 'default', 'exit', 'goto', 'include', 'include_once', 'phpdoc', 'require', 'require_once', 'return', 'switch', 'throw', 'try']]`` - `combine_consecutive_issets <./../rules/language_construct/combine_consecutive_issets.rst>`_ - `combine_consecutive_unsets <./../rules/language_construct/combine_consecutive_unsets.rst>`_ - `empty_loop_body <./../rules/control_structure/empty_loop_body.rst>`_ diff --git a/doc/rules/whitespace/blank_line_before_statement.rst b/doc/rules/whitespace/blank_line_before_statement.rst index 21d6af01c2f..2c46e07d4a8 100644 --- a/doc/rules/whitespace/blank_line_before_statement.rst +++ b/doc/rules/whitespace/blank_line_before_statement.rst @@ -12,7 +12,7 @@ Configuration List of statements which must be preceded by an empty line. -Allowed values: a subset of ``['break', 'case', 'continue', 'declare', 'default', 'do', 'exit', 'for', 'foreach', 'goto', 'if', 'include', 'include_once', 'require', 'require_once', 'return', 'switch', 'throw', 'try', 'while', 'yield', 'yield_from']`` +Allowed values: a subset of ``['break', 'case', 'continue', 'declare', 'default', 'phpdoc', 'do', 'exit', 'for', 'foreach', 'goto', 'if', 'include', 'include_once', 'require', 'require_once', 'return', 'switch', 'throw', 'try', 'while', 'yield', 'yield_from']`` Default value: ``['break', 'continue', 'declare', 'return', 'throw', 'try']`` @@ -235,7 +235,7 @@ The rule is part of the following rule sets: @PhpCsFixer Using the `@PhpCsFixer <./../../ruleSets/PhpCsFixer.rst>`_ rule set will enable the ``blank_line_before_statement`` rule with the config below: - ``['statements' => ['break', 'case', 'continue', 'declare', 'default', 'exit', 'goto', 'include', 'include_once', 'require', 'require_once', 'return', 'switch', 'throw', 'try']]`` + ``['statements' => ['break', 'case', 'continue', 'declare', 'default', 'exit', 'goto', 'include', 'include_once', 'phpdoc', 'require', 'require_once', 'return', 'switch', 'throw', 'try']]`` @Symfony Using the `@Symfony <./../../ruleSets/Symfony.rst>`_ rule set will enable the ``blank_line_before_statement`` rule with the config below: diff --git a/src/Console/Report/FixReport/JunitReporter.php b/src/Console/Report/FixReport/JunitReporter.php index 114d3df86ef..1614f37ca94 100644 --- a/src/Console/Report/FixReport/JunitReporter.php +++ b/src/Console/Report/FixReport/JunitReporter.php @@ -43,6 +43,7 @@ public function generate(ReportSummary $reportSummary): string $dom = new \DOMDocument('1.0', 'UTF-8'); $testsuites = $dom->appendChild($dom->createElement('testsuites')); + /** @var \DomElement $testsuite */ $testsuite = $testsuites->appendChild($dom->createElement('testsuite')); $testsuite->setAttribute('name', 'PHP CS Fixer'); diff --git a/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php b/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php index 897bd1fc472..f6f7ab184f3 100644 --- a/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php +++ b/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php @@ -70,6 +70,7 @@ protected function applyFix(\SplFileInfo $file, Tokens $tokens): void } $newlineFound = false; + /** @var Token $token */ foreach ($tokens as $token) { if ($token->isWhitespace() && str_contains($token->getContent(), "\n")) { diff --git a/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php b/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php index 9e7cff6933c..52276b819c0 100644 --- a/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php +++ b/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php @@ -43,6 +43,7 @@ final class BlankLineBeforeStatementFixer extends AbstractFixer implements Confi 'continue' => T_CONTINUE, 'declare' => T_DECLARE, 'default' => T_DEFAULT, + 'phpdoc' => T_DOC_COMMENT, 'do' => T_DO, 'exit' => T_EXIT, 'for' => T_FOR, diff --git a/src/RuleSet/Sets/PhpCsFixerSet.php b/src/RuleSet/Sets/PhpCsFixerSet.php index 6bd37f60bb0..83e8b6f9643 100644 --- a/src/RuleSet/Sets/PhpCsFixerSet.php +++ b/src/RuleSet/Sets/PhpCsFixerSet.php @@ -38,6 +38,7 @@ public function getRules(): array 'goto', 'include', 'include_once', + 'phpdoc', 'require', 'require_once', 'return', diff --git a/tests/Fixer/Alias/NoAliasFunctionsFixerTest.php b/tests/Fixer/Alias/NoAliasFunctionsFixerTest.php index a22023da46a..c58336f4578 100644 --- a/tests/Fixer/Alias/NoAliasFunctionsFixerTest.php +++ b/tests/Fixer/Alias/NoAliasFunctionsFixerTest.php @@ -255,6 +255,7 @@ public function provideFix81Cases(): \Generator private function provideAllCases(): \Generator { $reflectionConstant = new \ReflectionClassConstant(\PhpCsFixer\Fixer\Alias\NoAliasFunctionsFixer::class, 'SETS'); + /** @var array $allAliases */ $allAliases = $reflectionConstant->getValue(); diff --git a/tests/Fixer/Whitespace/BlankLineBeforeStatementFixerTest.php b/tests/Fixer/Whitespace/BlankLineBeforeStatementFixerTest.php index 0fb8083208b..b56aab8498e 100644 --- a/tests/Fixer/Whitespace/BlankLineBeforeStatementFixerTest.php +++ b/tests/Fixer/Whitespace/BlankLineBeforeStatementFixerTest.php @@ -1491,6 +1491,56 @@ public function label(): string { return "label"; } } +', + ]; + } + + /** + * @dataProvider provideFixWithDocCommentCases + */ + public function testFixWithDocCommentCases(string $expected, string $input = null): void + { + $this->fixer->configure([ + 'statements' => ['phpdoc'], + ]); + + $this->doTest($expected, $input); + } + + public function provideFixWithDocCommentCases(): iterable + { + yield [ + 'findGivenKind(T_CLASS); static::assertCount(1, $found);