Skip to content

Instantly share code, notes, and snippets.

@PavelJurasek
Created October 22, 2019 14:17
Show Gist options
  • Save PavelJurasek/abf547aa71b21e12c4b33ed38698cbff to your computer and use it in GitHub Desktop.
Save PavelJurasek/abf547aa71b21e12c4b33ed38698cbff to your computer and use it in GitHub Desktop.
Co bychom udělali jinak? - Spaceflow & Rector talk at Péhápkaři 2019/10, LMC
# install: composer require symplify/easy-coding-standard --dev
# dry-run: vendor/bin/ecs check src
# run: vendor/bin/ecs check src --fix
# ----------------------------- Step 1 -----------------------------
services:
# use ::class
Symplify\CodingStandard\Fixer\Php\ClassStringToClassConstantFixer: ~
# keep line-lenght constant
Symplify\CodingStandard\Fixer\LineLength\LineLengthFixer:
lineLength: 120
# default value for array property
Symplify\CodingStandard\Fixer\Property\ArrayPropertyDefaultValueFixer: ~
# every non-Entity non-abstract class must be final - you have to skip those that are used + have children, like this ↓
PhpCsFixer\Fixer\ClassNotation\FinalClassFixer: ~
parameters:
skip:
PhpCsFixer\Fixer\ClassNotation\FinalClassFixer:
- 'src/SomeFileToBeSkipped.php'
# ----------------------------- Step 4 -----------------------------
services:
# dead code
SlevomatCodingStandard\Sniffs\Classes\UnusedPrivateElementsSniff: ~
SlevomatCodingStandard\Sniffs\Functions\UnusedInheritedVariablePassedToClosureSniff: ~
SlevomatCodingStandard\Sniffs\Functions\UnusedParameterSniff: ~
SlevomatCodingStandard\Sniffs\Variables\UnusedVariableSniff: ~
# ----------------------------- Step 8 -----------------------------
services:
# every property should have @var annotation
SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff: ~
parameters:
skip:
# removes useful annotations
SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff.UselessDocComment: ~
SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff.MissingTraversablePropertyTypeHintSpecification: ~
SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff.MissingTraversableReturnTypeHintSpecification: ~
SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff.MissingTraversableParameterTypeHintSpecification: ~
# resolve later with Rector
SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff.MissingParameterTypeHint: ~
SlevomatCodingStandard\Sniffs\TypeHints\TypeHintDeclarationSniff.MissingReturnTypeHint: ~
# install: composer require rector/rector --dev
# dry-run: vendor/bin/rector process src --dry-run
# run: vendor/bin/rector process src
# ----------------------------- Step 2 -----------------------------
services:
Rector\Autodiscovery\Rector\FileSystem\Rector\Autodiscovery\Rector\FileSystem: ~
Rector\Autodiscovery\Rector\FileSystem\MoveServicesBySuffixToDirectoryRector: ~
# ----------------------------- Step 2 (tests) ---------------------
services:
# configure `composer.json` first
Rector\PSR4\Rector\Namespace_\NormalizeNamespaceByPSR4ComposerAutoloadRector: ~
# ----------------------------- Step 4 -----------------------------
sevices:
Rector\DeadCode\Rector\Class_\RemoveUnusedDoctrineEntityMethodAndPropertyRector: ~
# ----------------------------- Step 5 -----------------------------
services:
Rector\Rector\Function_\FunctionToStaticCallRector:
# filesystem
file_get_contents: ['Nette\Utils\FileSystem', 'read']
Rector\Nette\Rector\FuncCall\JsonDecodeEncodeToNetteUtilsJsonDecodeEncodeRector: ~
# ----------------------------- Step 7 -----------------------------
services:
Rector\CodingStyle\Rector\String_\ManualJsonStringToJsonEncodeArrayRector: ~
# ----------------------------- Step 8 -----------------------------
services:
Rector\TypeDeclaration\Rector\Property\PropertyTypeDeclarationRector: ~
# ----------------------------- Step 9 -----------------------------
services:
Rector\SymfonyCodeQuality\Rector\Class_\EventListenerToEventSubscriberRector: ~
# ----------------------------- Step 10 -----------------------------
services:
# substep 1
# add uuid id property
Rector\Doctrine\Rector\Class_\AddUuidToEntityWhereMissingRector: ~
# substep 2
services:
# add relations uuid properties
Rector\Doctrine\Rector\Class_\AddUuidMirrorForRelationPropertyRector: ~
Rector\Doctrine\Rector\Class_\AlwaysInitializeUuidInEntityRector: ~
# substep 3
# properties
Rector\Doctrine\Rector\Property\AddUuidAnnotationsToIdPropertyRector: ~
Rector\Doctrine\Rector\Property\RemoveTemporaryUuidColumnPropertyRector: ~
Rector\Doctrine\Rector\Property\RemoveTemporaryUuidRelationPropertyRector: ~
# methods
Rector\Doctrine\Rector\ClassMethod\ChangeGetIdTypeToUuidRector: ~
Rector\Doctrine\Rector\ClassMethod\ChangeSetIdTypeToUuidRector: ~
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment