diff --git a/.php_cs.dist b/.php_cs.dist index cc3f32d0a6..c31703a6c7 100644 --- a/.php_cs.dist +++ b/.php_cs.dist @@ -24,14 +24,7 @@ $rules = [ 'ordered_imports' => true, 'phpdoc_order' => true, 'no_break_comment' => true, - 'no_break_comment' => true, - 'no_break_comment' => true, 'global_namespace_import' => true, - - // To be tested before insertion: -// 'strict_comparison' => true, -// 'strict_param' => true, -// 'php_unit_strict' => true, ]; $finder = PhpCsFixer\Finder::create() diff --git a/composer.json b/composer.json index 2c78e11db5..684883e329 100755 --- a/composer.json +++ b/composer.json @@ -174,7 +174,7 @@ }, "scripts": { "analyse": [ - "@php vendor/bin/ecs check src", + "@php vendor/bin/ecs check", "@php vendor/bin/psalm --show-info=false" ], "auto-scripts": { diff --git a/ecs.php b/ecs.php index 8368d2ade3..66389bc5cd 100644 --- a/ecs.php +++ b/ecs.php @@ -24,11 +24,11 @@ return static function (ContainerConfigurator $containerConfigurator): void { $parameters->set( Option::SETS, [ - //SetList::COMMON, + SetList::COMMON, SetList::CLEAN_CODE, SetList::SYMFONY, SetList::PSR_12, - //SetList::PHP_CS_FIXER, + SetList::PHP_CS_FIXER, //SetList::DOCTRINE_ANNOTATIONS, //SetList::SYMFONY_RISKY, ] @@ -39,7 +39,7 @@ return static function (ContainerConfigurator $containerConfigurator): void { $services->set(\PhpCsFixer\Fixer\Phpdoc\PhpdocNoPackageFixer::class); $services->set(\SlevomatCodingStandard\Sniffs\Commenting\UselessFunctionDocCommentSniff::class); $services->set(PropertyTypeHintSniff::class); - //$services->set(\SlevomatCodingStandard\Sniffs\Namespaces\FullyQualifiedClassNameAfterKeywordSniff::class); + $services->set(\SlevomatCodingStandard\Sniffs\Namespaces\FullyQualifiedClassNameAfterKeywordSniff::class); $services->set(\PhpCsFixer\Fixer\ControlStructure\YodaStyleFixer::class); $services->set(\PhpCsFixer\Fixer\Phpdoc\NoSuperfluousPhpdocTagsFixer::class); $services->set(\PhpCsFixer\Fixer\FunctionNotation\VoidReturnFixer::class); @@ -59,19 +59,17 @@ return static function (ContainerConfigurator $containerConfigurator): void { $parameters->set( Option::SKIP, [ + __DIR__.'/src/CoreBundle/Component/HTMLPurifier/Filter/AllowIframes.php', + __DIR__.'/src/CoreBundle/Menu/*', __DIR__.'/src/CourseBundle/Component/*', __DIR__.'/src/CoreBundle/Hook/*', __DIR__.'/src/CoreBundle/Traits/*', - ] - ); - - // use $a++ instead of ++$a - $parameters->set( - Option::SKIP, - [ + __DIR__.'/src/LtiBundle/*', IncrementStyleFixer::class => 'post', PropertyTypeHintSniff::class.'.'.PropertyTypeHintSniff::CODE_MISSING_TRAVERSABLE_TYPE_HINT_SPECIFICATION, \PhpCsFixer\Fixer\DoctrineAnnotation\DoctrineAnnotationArrayAssignmentFixer::class, + \PhpCsFixer\Fixer\Comment\SingleLineCommentStyleFixer::class, + \PhpCsFixer\Fixer\Operator\NotOperatorWithSuccessorSpaceFixer::class //UnusedVariableSniff::class . '.ignoreUnusedValuesWhenOnlyKeysAreUsedInForeach' => true, //UnusedVariableSniff::class => 'ignoreUnusedValuesWhenOnlyKeysAreUsedInForeach', ] @@ -94,7 +92,7 @@ return static function (ContainerConfigurator $containerConfigurator): void { [ 'import_classes' => true, 'import_constants' => true, - 'import_functions' => true, + 'import_functions' => false, ], ] ); diff --git a/phpstan.neon b/phpstan.neon index ba72e0e495..b7afaf01c8 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,5 @@ parameters: - level: 6 + level: 5 paths: - src # - public/main @@ -63,8 +63,10 @@ parameters: - src/CoreBundle/Controller/EditorController.php - src/CoreBundle/Component/Editor/* - src/CourseBundle/Component/CourseCopy/* + - src/CoreBundle/Traits/* + - src/CoreBundle/Twig/Extension/ChamiloExtension.php + - src/CoreBundle/Settings/* - src/LtiBundle/* - - src/GraphQlBundle/* - tests/* ignoreErrors: - '#If condition is always true.#' diff --git a/psalm.xml b/psalm.xml index 4ef7a9b3b9..f43fc2b0ee 100644 --- a/psalm.xml +++ b/psalm.xml @@ -155,7 +155,6 @@ - @@ -170,8 +169,6 @@ - - @@ -199,8 +196,11 @@ + + + diff --git a/rector.php b/rector.php index 2ed6824699..820696f8a7 100644 --- a/rector.php +++ b/rector.php @@ -14,24 +14,32 @@ return static function (ContainerConfigurator $containerConfigurator): void { // Define what rule sets will be applied $parameters->set(Option::SETS, [ //SetList::DEAD_CODE, + SetList::CODING_STYLE, SetList::CODE_QUALITY, SetList::PHP_74, - //SetList::DOCTRINE_CODE_QUALITY + SetList::DOCTRINE_CODE_QUALITY, ]); // register single rule $services = $containerConfigurator->services(); - //$services->set(TypedPropertyRector::class); + $services->set(TypedPropertyRector::class); + $services->set(\Rector\TypeDeclaration\Rector\Property\PropertyTypeDeclarationRector::class); - $services->set(\Rector\CakePHP\Rector\FileWithoutNamespace\ImplicitShortClassNameUseStatementRector::class); + + $services->set(\Rector\TypeDeclaration\Rector\FunctionLike\ParamTypeDeclarationRector::class); + $services->set(\Rector\TypeDeclaration\Rector\FunctionLike\ReturnTypeDeclarationRector::class); + + //$services->set(\Rector\CakePHP\Rector\FileWithoutNamespace\ImplicitShortClassNameUseStatementRector::class); $services->set(\PhpCsFixer\Fixer\Import\GlobalNamespaceImportFixer::class); $services->set(\PhpCsFixer\Fixer\ControlStructure\YodaStyleFixer::class); + $services->set(Rector\CodeQuality\Rector\LogicalAnd\LogicalToBooleanRector::class); - $services->set(Rector\DoctrineCodeQuality\Rector\ClassMethod\MakeEntitySetterNullabilityInSyncWithPropertyRector::class); - //$services->set(\Rector\DoctrineCodeQuality\Rector\Property\RemoveRedundantDefaultPropertyAnnotationValuesRector::class); - $services->set(\Rector\DoctrineCodeQuality\Rector\Property\CorrectDefaultTypesOnEntityPropertyRector::class); + //$services->set(Rector\DoctrineCodeQuality\Rector\ClassMethod\MakeEntitySetterNullabilityInSyncWithPropertyRector::class); + //$services->set(\Rector\DoctrineCodeQuality\Rector\Property\CorrectDefaultTypesOnEntityPropertyRector::class); //$services->set(\Rector\DoctrineCodeQuality\Rector\Property\ImproveDoctrineCollectionDocTypeInEntityRector::class); - //$parameters->set(\Rector\DeadCode\Rector\ClassMethod\RemoveUnusedParameterRector::class, false); + + //$services->set(\Rector\DeadCode\Rector\ClassMethod\RemoveUnusedParameterRector::class, false); + $services->set(\PhpCsFixer\Fixer\Import\OrderedImportsFixer::class); $parameters->set( Option::SYMFONY_CONTAINER_XML_PATH_PARAMETER, @@ -46,7 +54,6 @@ return static function (ContainerConfigurator $containerConfigurator): void { __DIR__.'/src/CourseBundle/Component/CourseCopy/*', __DIR__.'/src/CoreBundle/Component/HTMLPurifier/*', __DIR__.'/src/LtiBundle/*', - __DIR__.'/src/GraphQlBundle/*', __DIR__.'/src/CoreBundle/Hook/*', __DIR__.'/src/CoreBundle/Migrations/*', __DIR__.'/src/CoreBundle/Twig/SettingsHelper.php', @@ -56,7 +63,12 @@ return static function (ContainerConfigurator $containerConfigurator): void { __DIR__.'/src/CoreBundle/Component/Editor/*', \Rector\DeadCode\Rector\ClassMethod\RemoveUnusedParameterRector::class, \PhpCsFixer\Fixer\FunctionNotation\UseArrowFunctionsFixer::class, - \Rector\Php74\Rector\Closure\ClosureToArrowFunctionRector::class + \Rector\Php74\Rector\Closure\ClosureToArrowFunctionRector::class, + \Rector\CodeQuality\Rector\ClassMethod\DateTimeToDateTimeInterfaceRector::class, + \Rector\CodeQuality\Rector\Array_\CallableThisArrayToAnonymousFunctionRector::class, + \Rector\DoctrineCodeQuality\Rector\Property\CorrectDefaultTypesOnEntityPropertyRector::class, + //\Rector\DoctrineCodeQuality\Rector\Class_\MoveCurrentDateTimeDefaultInEntityToConstructorRector::class, + \Rector\DoctrineCodeQuality\Rector\Property\RemoveRedundantDefaultPropertyAnnotationValuesRector::class, ] );