Browse Source

Merge branch '2.18'

Dariusz Ruminski 3 years ago
parent
commit
59511c76d3

+ 4 - 4
dev-tools/composer.json

@@ -3,14 +3,14 @@
         "php": "^7.1"
     },
     "require-dev": {
-        "ergebnis/composer-normalize": "^2.11",
+        "ergebnis/composer-normalize": "^2.13",
         "humbug/box": "^3.8",
         "jangregor/phpstan-prophecy": "^0.6",
         "maglnet/composer-require-checker": "2.0.0",
         "mi-schi/phpmd-extension": "^4.3",
-        "phpmd/phpmd": "^2.9",
-        "phpstan/phpstan": "0.12.19",
-        "phpstan/phpstan-phpunit": "^0.12.8"
+        "phpmd/phpmd": "^2.10",
+        "phpstan/phpstan": "0.12.25",
+        "phpstan/phpstan-phpunit": "0.12.11"
     },
     "config": {
         "optimize-autoloader": true,

+ 2 - 2
doc/usage.rst

@@ -14,8 +14,8 @@ problems as possible on a given file or files in a given directory and its subdi
     $ php php-cs-fixer.phar fix /path/to/file
 
 By default ``--path-mode`` is set to ``override``, which means, that if you specify the path to a file or a directory via
-command arguments, then the paths provided to a ``Finder`` in config file will be ignored. You can use ``--path-mode=intersection``
-to merge paths from the config file and from the argument:
+command arguments, then the paths provided to a ``Finder`` in config file will be ignored. You can also use ``--path-mode=intersection``,
+which will use the intersection of the paths from the config file and from the argument:
 
 .. code-block:: console
 

+ 0 - 10
phpstan.neon

@@ -21,9 +21,6 @@ parameters:
         -
             message: '/^Else branch is unreachable because previous condition is always true\.$/'
             path: src/Event/Event.php
-        -
-            message: '/^Strict comparison using !== between ''@git-commit@'' and ''@git-commit@'' will always evaluate to false\.$/'
-            path: src/Console/Application.php
         -
             message: '/^Result of && is always false\.$/'
             path: src/Config.php
@@ -34,18 +31,11 @@ parameters:
             message: '/^Else branch is unreachable because ternary operator condition is always true\.$/'
             paths:
                 - src/Config.php
-                - src/Tokenizer/Token.php
         -
             message: '/^Parameter #1 \$function of function register_shutdown_function expects callable\(\): void, array\(\$this\(PhpCsFixer\\FileRemoval\), ''clean''\) given\.$/'
             path: src/FileRemoval.php
-        - # https://github.com/phpstan/phpstan/issues/1215
-            message: '/^Strict comparison using === between false and string will always evaluate to false\.$/'
-            path: src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php
         -
             message: '/^Constant T_ATTRIBUTE not found\.$/'
             path: src/Tokenizer/Transformer/AttributeTransformer.php
-        -
-            message: '/^\$this\(PhpCsFixer\\Tokenizer\\Tokens\) does not accept PhpCsFixer\\Tokenizer\\Token\|null\.$/'
-            path: src/Tokenizer/Tokens.php
 
     tipsOfTheDay: false

+ 1 - 1
src/Console/Application.php

@@ -108,7 +108,7 @@ final class Application extends BaseApplication
 
         $commit = '@git-commit@';
 
-        if ('@'.'git-commit@' !== $commit) {
+        if ('@'.'git-commit@' !== $commit) { // @phpstan-ignore-line as `$commit` is replaced during phar building
             $version .= ' ('.substr($commit, 0, 7).')';
         }
 

+ 1 - 1
src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php

@@ -89,7 +89,7 @@ final class NoTrailingWhitespaceInStringFixer extends AbstractFixer
             if ($tokens[$prev]->equals([T_CLOSE_TAG, '?>']) && Preg::match('/^\R/', $content, $match)) {
                 $tokens[$prev] = new Token([T_CLOSE_TAG, $tokens[$prev]->getContent().$match[0]]);
                 $content = substr($content, \strlen($match[0]));
-                $content = false === $content ? '' : $content;
+                $content = false === $content ? '' : $content; // @phpstan-ignore-line due to https://github.com/phpstan/phpstan/issues/1215 , awaiting PHP8 as min requirement of Fixer
             }
 
             $this->updateContent($tokens, $index, $content);

+ 1 - 0
src/Tokenizer/Token.php

@@ -87,6 +87,7 @@ class Token
         } else {
             throw new \InvalidArgumentException(sprintf(
                 'Cannot recognize input value as valid Token prototype, got "%s".',
+                // @phpstan-ignore-next-line due to lack of strong typing of method parameter
                 \is_object($token) ? \get_class($token) : \gettype($token)
             ));
         }

+ 1 - 1
src/Tokenizer/Tokens.php

@@ -387,7 +387,7 @@ class Tokens extends \SplFixedArray
 
         for ($count = $index; $index < $limit; ++$index) {
             if (!$this->isEmptyAt($index)) {
-                $this[$count++] = $this[$index];
+                $this[$count++] = $this[$index]; // @phpstan-ignore-line as we know that index exists
             }
         }
 

+ 13 - 1
tests/RuleSet/RuleSetsTest.php

@@ -323,6 +323,18 @@ Integration of %s.
         $factory->registerBuiltInFixers();
         $factory->useRuleSet(new RuleSet([$name => true]));
 
-        return current($factory->getFixers());
+        $fixers = $factory->getFixers();
+
+        if (empty($fixers)) {
+            throw new \RuntimeException('FixerFactory unexpectedly returned empty array.');
+        }
+
+        $fixer = current($fixers);
+
+        if (!$fixer instanceof AbstractFixer) {
+            throw new \RuntimeException(sprintf('Fixer class for "%s" rule does not extend "%s".', $name, AbstractFixer::class));
+        }
+
+        return $fixer;
     }
 }