Bump PHPStan, ECS and Symplify to 10.2 + make use of brand new ECSConfig (#2076)

This commit is contained in:
Tomas Votruba 2022-04-14 23:22:08 +02:00 committed by GitHub
parent 86647cc3ad
commit d7590ea66c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 63 additions and 83 deletions

View File

@ -7,7 +7,7 @@
],
"require": {
"php": "^7.2|^8.0",
"phpstan/phpstan": "^1.5"
"phpstan/phpstan": "^1.5.5"
},
"autoload": {
"files": [

View File

@ -22,8 +22,8 @@
"nette/utils": "^3.2.7",
"nikic/php-parser": "^4.13.2",
"ondram/ci-detector": "^4.1",
"phpstan/phpdoc-parser": "^1.2",
"phpstan/phpstan": "^1.5",
"phpstan/phpdoc-parser": "^1.4.4",
"phpstan/phpstan": "^1.5.5",
"phpstan/phpstan-phpunit": "^1.0",
"psr/log": "^2.0",
"react/child-process": "^0.6.4",
@ -47,16 +47,16 @@
"symfony/process": "^6.0",
"symfony/string": "^6.0",
"symfony/yaml": "^6.0",
"symplify/astral": "^10.1",
"symplify/autowire-array-parameter": "^10.1",
"symplify/composer-json-manipulator": "^10.1",
"symplify/easy-parallel": "^10.1",
"symplify/package-builder": "^10.1",
"symplify/rule-doc-generator-contracts": "^10.1",
"symplify/skipper": "^10.1",
"symplify/smart-file-system": "^10.1",
"symplify/symplify-kernel": "^10.1",
"symplify/vendor-patches": "^10.1",
"symplify/astral": "^10.2",
"symplify/autowire-array-parameter": "^10.2",
"symplify/composer-json-manipulator": "^10.2",
"symplify/easy-parallel": "^10.2",
"symplify/package-builder": "^10.2",
"symplify/rule-doc-generator-contracts": "^10.2",
"symplify/skipper": "^10.2",
"symplify/smart-file-system": "^10.2",
"symplify/symplify-kernel": "^10.2",
"symplify/vendor-patches": "^10.2",
"tracy/tracy": "^2.9",
"webmozart/assert": "^1.10"
},
@ -72,14 +72,14 @@
"phpunit/phpunit": "^9.5",
"rector/phpstan-rules": "^0.4.21",
"spatie/enum": "^3.12",
"symplify/coding-standard": "^10.1",
"symplify/easy-ci": "^10.1",
"symplify/easy-coding-standard": "^10.1",
"symplify/easy-testing": "^10.1",
"symplify/monorepo-builder": "^10.1",
"symplify/phpstan-extensions": "^10.1",
"symplify/phpstan-rules": "^10.1",
"symplify/rule-doc-generator": "^10.1",
"symplify/coding-standard": "^10.2",
"symplify/easy-ci": "^10.2",
"symplify/easy-coding-standard": "^10.2",
"symplify/easy-testing": "^10.2",
"symplify/monorepo-builder": "^10.2",
"symplify/phpstan-extensions": "^10.2",
"symplify/phpstan-rules": "^10.2",
"symplify/rule-doc-generator": "^10.2",
"timeweb/phpstan-enum": "dev-22-upgrade-phpstan-to-1.0"
},
"replace": {
@ -138,7 +138,7 @@
"vendor/bin/ecs check --fix --ansi",
"vendor/bin/ecs check-markdown README.md --fix --ansi"
],
"phpstan": "php -dmemory_limit=1G vendor/bin/phpstan analyse --ansi --error-format symplify",
"phpstan": "vendor/bin/phpstan analyse --ansi --error-format symplify --memory-limit 2G",
"phpstan-config": "vendor/bin/phpstan analyse config --ansi --error-format symplify",
"docs": [
"vendor/bin/rule-doc-generator generate packages rules --output-file build/rector_rules_overview.md --ansi --categorize --configure-method",

63
ecs.php
View File

@ -2,42 +2,20 @@
declare(strict_types=1);
use PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\AssignmentInConditionSniff;
use PhpCsFixer\Fixer\FunctionNotation\FunctionTypehintSpaceFixer;
use PhpCsFixer\Fixer\Phpdoc\GeneralPhpdocAnnotationRemoveFixer;
use PhpCsFixer\Fixer\Phpdoc\NoSuperfluousPhpdocTagsFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocTypesFixer;
use PhpCsFixer\Fixer\PhpUnit\PhpUnitStrictFixer;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\CodingStandard\Fixer\LineLength\DocBlockLineLengthFixer;
use Symplify\EasyCodingStandard\ValueObject\Option;
use Symplify\EasyCodingStandard\Config\ECSConfig;
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
return static function (ContainerConfigurator $containerConfigurator): void {
$services = $containerConfigurator->services();
return static function (ECSConfig $ecsConfig): void {
$ecsConfig->sets([SetList::PSR_12, SetList::SYMPLIFY, SetList::COMMON, SetList::CLEAN_CODE]);
$services->set(NoSuperfluousPhpdocTagsFixer::class)
->call('configure', [[
'allow_mixed' => true,
]]);
$services->set(GeneralPhpdocAnnotationRemoveFixer::class)
->call('configure', [[
'annotations' => [
'throw',
'throws',
'author',
'authors',
'package',
'group',
'required',
'phpstan-ignore-line',
'phpstan-ignore-next-line',
],
]]);
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::PATHS, [
$ecsConfig->paths([
__DIR__ . '/bin',
__DIR__ . '/src',
__DIR__ . '/packages',
@ -53,7 +31,25 @@ return static function (ContainerConfigurator $containerConfigurator): void {
__DIR__ . '/scoper.php',
]);
$parameters->set(Option::SKIP, [
$ecsConfig->ruleWithConfiguration(NoSuperfluousPhpdocTagsFixer::class, [
'allow_mixed' => true,
]);
$ecsConfig->ruleWithConfiguration(GeneralPhpdocAnnotationRemoveFixer::class, [
'annotations' => [
'throw',
'throws',
'author',
'authors',
'package',
'group',
'required',
'phpstan-ignore-line',
'phpstan-ignore-next-line',
],
]);
$ecsConfig->skip([
'*/Source/*',
'*/Fixture/*',
'*/Expected/*',
@ -73,14 +69,7 @@ return static function (ContainerConfigurator $containerConfigurator): void {
__DIR__ . '/src/DependencyInjection/Loader/Configurator/RectorServiceConfigurator.php',
__DIR__ . '/rules/Php70/EregToPcreTransformer.php',
],
AssignmentInConditionSniff::class . '.FoundInWhileCondition',
]);
// import SetList here in the end of ecs. is on purpose
// to avoid overridden by existing Skip Option in current config
$containerConfigurator->import(SetList::PSR_12);
$containerConfigurator->import(SetList::SYMPLIFY);
$containerConfigurator->import(SetList::COMMON);
$containerConfigurator->import(SetList::CLEAN_CODE);
$parameters->set(Option::LINE_ENDING, "\n");
};

View File

@ -5,11 +5,8 @@ declare(strict_types=1);
namespace Rector\Tests\CodingStyle\Rector\Property\InlineSimplePropertyAnnotationRector;
use Rector\CodingStyle\Rector\Property\InlineSimplePropertyAnnotationRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Rector\Config\RectorConfig;
return static function (ContainerConfigurator $containerConfigurator): void {
$services = $containerConfigurator->services();
$rectorServiceConfigurator = $services->set(InlineSimplePropertyAnnotationRector::class);
/** @phpstan-ignore-next-line */
$rectorServiceConfigurator->configure(['custom-var']);
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->ruleWithConfiguration(InlineSimplePropertyAnnotationRector::class, ['custom-var']);
};

View File

@ -5,9 +5,8 @@ declare(strict_types=1);
namespace Rector\Tests\CodingStyle\Rector\Property\InlineSimplePropertyAnnotationRector;
use Rector\CodingStyle\Rector\Property\InlineSimplePropertyAnnotationRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Rector\Config\RectorConfig;
return static function (ContainerConfigurator $containerConfigurator): void {
$services = $containerConfigurator->services();
$services->set(InlineSimplePropertyAnnotationRector::class);
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->rule(InlineSimplePropertyAnnotationRector::class);
};

View File

@ -4,10 +4,9 @@ declare(strict_types=1);
namespace Rector\Tests\TypeDeclaration\Rector\ClassMethod\ParamAnnotationIncorrectNullableRector;
use Rector\Config\RectorConfig;
use Rector\TypeDeclaration\Rector\ClassMethod\ParamAnnotationIncorrectNullableRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void {
$services = $containerConfigurator->services();
$services->set(ParamAnnotationIncorrectNullableRector::class);
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->rule(ParamAnnotationIncorrectNullableRector::class);
};

View File

@ -2,18 +2,14 @@
declare(strict_types=1);
use Rector\Core\Configuration\Option;
use Rector\Config\RectorConfig;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromAssignsRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void {
$services = $containerConfigurator->services();
$services->set(TypedPropertyFromAssignsRector::class)
->configure([
TypedPropertyFromAssignsRector::INLINE_PUBLIC => true,
]);
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->ruleWithConfiguration(TypedPropertyFromAssignsRector::class, [
TypedPropertyFromAssignsRector::INLINE_PUBLIC => true,
]);
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::PHP_VERSION_FEATURES, PhpVersionFeature::INTERSECTION_TYPES);
$rectorConfig->phpVersion(PhpVersionFeature::INTERSECTION_TYPES);
};