cacheDirectory('/var/cache/ecs'); $ecsConfig->sets([SetList::ARRAY]); $ecsConfig->ruleWithConfiguration(LineLengthFixer::class, [ LineLengthFixer::LINE_LENGTH => 120, LineLengthFixer::INLINE_SHORT_LINES => false, ]); $ecsConfig->rules([ BinaryOperatorSpacesFixer::class, BlankLineAfterNamespaceFixer::class, BlankLineAfterOpeningTagFixer::class, CastSpacesFixer::class, ClassDefinitionFixer::class, CleanNamespaceFixer::class, ConstantCaseFixer::class, DeadCatchSniff::class, DeclareStrictTypesFixer::class, ElseifFixer::class, EncodingFixer::class, ExplicitStringVariableFixer::class, FullOpeningTagFixer::class, FullyQualifiedStrictTypesFixer::class, FunctionDeclarationFixer::class, GeneralPhpdocTagRenameFixer::class, GlobalNamespaceImportFixer::class, HeredocToNowdocFixer::class, IndentationTypeFixer::class, IntegerLiteralCaseFixer::class, LambdaNotUsedImportFixer::class, LineEndingFixer::class, ListSyntaxFixer::class, LowercaseCastFixer::class, LowercaseKeywordsFixer::class, LowercaseStaticReferenceFixer::class, MagicConstantCasingFixer::class, MagicMethodCasingFixer::class, MethodChainingIndentationFixer::class, MultiLineArrayEndBracketPlacementSniff::class, MultilinePromotedPropertiesFixer::class, NativeFunctionCasingFixer::class, NativeTypeDeclarationCasingFixer::class, NoAliasFunctionsFixer::class, NoAliasLanguageConstructCallFixer::class, NoAlternativeSyntaxFixer::class, NoBinaryStringFixer::class, NoBlankLinesAfterClassOpeningFixer::class, NoBlankLinesAfterPhpdocFixer::class, NoBreakCommentFixer::class, NoClosingTagFixer::class, NoDuplicatedImportsFixer::class, NoEmptyPhpdocFixer::class, NoEmptyStatementFixer::class, NoLeadingImportSlashFixer::class, NoLeadingNamespaceWhitespaceFixer::class, NoSinglelineWhitespaceBeforeSemicolonsFixer::class, NoSpacesAfterFunctionNameFixer::class, SpacesInsideParenthesesFixer::class, NoTrailingWhitespaceFixer::class, NoTrailingWhitespaceInCommentFixer::class, NoUnusedImportsFixer::class, NoUselessElseFixer::class, NoWhitespaceBeforeCommaInArrayFixer::class, NullTypeHintOnLastPositionSniff::class, PhpdocIndentFixer::class, PhpdocInlineTagNormalizerFixer::class, PhpdocNoAccessFixer::class, PhpdocNoUselessInheritdocFixer::class, PhpdocScalarFixer::class, RequireNonCapturingCatchSniff::class, ReturnTypeDeclarationFixer::class, SelfStaticAccessorFixer::class, ShortScalarCastFixer::class, SingleBlankLineAtEofFixer::class, SingleImportPerStatementFixer::class, SingleLineAfterImportsFixer::class, SingleLineEmptyBodyFixer::class, SingleQuoteFixer::class, StandardizeIncrementFixer::class, StringableInterfaceFixer::class, SwitchCaseSemicolonToColonFixer::class, SwitchCaseSpaceFixer::class, TernaryOperatorSpacesFixer::class, TypeDeclarationSpacesFixer::class, UnaryOperatorSpacesFixer::class, VisibilityRequiredFixer::class, WhitespaceAfterCommaInArrayFixer::class, ]); $ecsConfig->ruleWithConfiguration(DeclareEqualNormalizeFixer::class, ['space' => 'none']); // split of BracesFixer in PHP CS Fixer 3.10 - https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/4884 $ecsConfig->rules([ ControlStructureBracesFixer::class, NoMultipleStatementsPerLineFixer::class, DeclareParenthesesFixer::class, ControlStructureContinuationPositionFixer::class, StatementIndentationFixer::class, SingleSpaceAroundConstructFixer::class, ]); $ecsConfig->ruleWithConfiguration(BracesPositionFixer::class, [ 'anonymous_classes_opening_brace' => 'next_line_unless_newline_at_signature_end', ]); $ecsConfig->ruleWithConfiguration(NewWithParenthesesFixer::class, [ 'anonymous_class' => false, ]); $ecsConfig->ruleWithConfiguration(VisibilityRequiredFixer::class, [ 'elements' => ['const', 'method', 'property'], ]); $ecsConfig->ruleWithConfiguration(MethodArgumentSpaceFixer::class, [ 'on_multiline' => 'ensure_fully_multiline', ]); $ecsConfig->ruleWithConfiguration(SingleClassElementPerStatementFixer::class, [ 'elements' => ['property'], ]); $ecsConfig->ruleWithConfiguration(ConcatSpaceFixer::class, [ 'spacing' => 'one', ]); $ecsConfig->ruleWithConfiguration(OrderedImportsFixer::class, [ 'sort_algorithm' => 'alpha', 'imports_order' => ['class', 'function', 'const'], ]); $ecsConfig->ruleWithConfiguration(NoMixedEchoPrintFixer::class, ['use' => 'echo']); $ecsConfig->ruleWithConfiguration(BlankLineBeforeStatementFixer::class, [ 'statements' => [ 'continue', 'return', 'foreach', 'if', 'switch', 'try', 'throw', 'while', 'yield', 'yield_from', ], ]); $ecsConfig->ruleWithConfiguration(BlankLinesBeforeNamespaceFixer::class, [ 'min_line_breaks' => 2, 'max_line_breaks' => 2, ]); $ecsConfig->ruleWithConfiguration(TrailingCommaInMultilineFixer::class, [ 'elements' => ['arrays', 'arguments', 'parameters'], ]); $ecsConfig->ruleWithConfiguration(FunctionDeclarationFixer::class, [ 'closure_fn_spacing' => 'none', ]); // Disabled as has issues. //$ecsConfig->ruleWithConfiguration(UnusedVariableSniff::class, [ // 'ignoreUnusedValuesWhenOnlyKeysAreUsedInForeach' => true, //]); $ecsConfig->ruleWithConfiguration(MultilineWhitespaceBeforeSemicolonsFixer::class, ['strategy' => 'no_multi_line']); $ecsConfig->ruleWithConfiguration(PhpdocOrderFixer::class, [ 'order' => ['param', 'var', 'return', 'throws', 'since', 'author', 'deprecated', 'internal', 'todo'], ]); $ecsConfig->ruleWithConfiguration(ClassAttributesSeparationFixer::class, [ 'elements' => [ 'const' => 'none', 'method' => 'one', 'property' => 'one', 'trait_import' => 'none', ], ]); $baseSkipPaths = [ '_ide_helper*.php', '.phpstorm.meta.php', '*.blade.php', 'bootstrap/cache', 'src/bootstrap/cache', 'src/admin/bootstrap/cache', 'src/api/bootstrap/cache', 'boilerplate/src/admin/bootstrap/cache', 'boilerplate/src/api/bootstrap/cache', 'build', 'src/build', 'boilerplate/build', 'runtime', 'src/runtime', 'boilerplate/runtime', 'node_modules', 'src/node_modules', 'src/admin/node_modules', 'src/api/node_modules', 'boilerplate/src/admin/node_modules', 'boilerplate/src/api/node_modules', 'storage', 'src/storage', 'boilerplate/src/storage', 'vendor', 'src/vendor', 'boilerplate/src/vendor', 'var', 'src/var', ]; $skipPaths = []; foreach (['codebase/', './', ''] as $prefix) { foreach ($baseSkipPaths as $skipPath) { $skipPaths[] = "{$prefix}$skipPath"; } } $ecsConfig->skip([ PhpdocSummaryFixer::class, PhpdocToCommentFixer::class, PsrAutoloadingFixer::class, SelfAccessorFixer::class, SimplifiedNullReturnFixer::class, StatementIndentationFixer::class, UnaryOperatorSpacesFixer::class, ArrayOpenerAndCloserNewlineFixer::class, ArrayListItemNewlineFixer::class, StandaloneLineInMultilineArrayFixer::class, NoAliasLanguageConstructCallFixer::class, ...$skipPaths, ]); };