Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bin/ecs.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

define('__ECS_RUNNING__', true);

# 1. autoload
// 1. autoload
$autoloadIncluder = new ECSAutoloadIncluder();

$autoloadIncluder->includeCwdVendorAutoloadIfExists();
Expand Down
36 changes: 36 additions & 0 deletions build/target-repository/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,42 @@ return ECSConfig::configure()

<br>

### Prepared Sets

`->withPreparedSets()` bundles curated rule sets. Enable the whole `common` set, or pick single topics:

```php
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
->withPaths([__DIR__ . '/src', __DIR__ . '/tests'])
->withPreparedSets(
arrays: true,
spaces: true,
namespaces: true,
docblocks: true,
controlStructures: true,
comments: true,
casing: true,
cleanup: true,
);
```

| Set | What it covers |
| --- | --- |
| `arrays` | array syntax, spacing, trailing commas, indentation |
| `spaces` | whitespace, operator/type spacing, blank lines |
| `namespaces` | imports ordering, unused/needless-alias imports |
| `docblocks` | phpdoc tags, types, alignment, cleanup |
| `controlStructures` | control flow, casing, operators, class structure |
| `comments` | comment style, spacing, empty-comment cleanup |
| `casing` | native function/type, magic method, literal casing |
| `cleanup` | dead statements, useless returns/casts, unused closure imports |

Or enable everything at once with `->withPreparedSets(common: true)`.

<br>

Do you want to include one of sets from [php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/doc/ruleSets/index.rst)?

You can:
Expand Down
2 changes: 2 additions & 0 deletions config/set/common.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,7 @@
SetList::DOCBLOCK,
SetList::NAMESPACES,
SetList::SPACES,
SetList::CASING,
SetList::CLEANUP,
SetList::CLEAN_CODE,
]);
19 changes: 19 additions & 0 deletions config/set/common/casing.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

declare(strict_types=1);

use PhpCsFixer\Fixer\Casing\ClassReferenceNameCasingFixer;
use PhpCsFixer\Fixer\Casing\IntegerLiteralCaseFixer;
use PhpCsFixer\Fixer\Casing\MagicMethodCasingFixer;
use PhpCsFixer\Fixer\Casing\NativeFunctionCasingFixer;
use PhpCsFixer\Fixer\Casing\NativeTypeDeclarationCasingFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
->withRules([
NativeFunctionCasingFixer::class,
NativeTypeDeclarationCasingFixer::class,
IntegerLiteralCaseFixer::class,
MagicMethodCasingFixer::class,
ClassReferenceNameCasingFixer::class,
]);
19 changes: 19 additions & 0 deletions config/set/common/cleanup.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

declare(strict_types=1);

use PhpCsFixer\Fixer\CastNotation\NoShortBoolCastFixer;
use PhpCsFixer\Fixer\ClassNotation\NoNullPropertyInitializationFixer;
use PhpCsFixer\Fixer\FunctionNotation\LambdaNotUsedImportFixer;
use PhpCsFixer\Fixer\ReturnNotation\NoUselessReturnFixer;
use PhpCsFixer\Fixer\Semicolon\NoEmptyStatementFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
->withRules([
NoEmptyStatementFixer::class,
NoUselessReturnFixer::class,
LambdaNotUsedImportFixer::class,
NoNullPropertyInitializationFixer::class,
NoShortBoolCastFixer::class,
]);
12 changes: 11 additions & 1 deletion config/set/common/comments.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,17 @@
declare(strict_types=1);

use PHP_CodeSniffer\Standards\Generic\Sniffs\VersionControl\GitMergeConflictSniff;
use PhpCsFixer\Fixer\Comment\MultilineCommentOpeningClosingFixer;
use PhpCsFixer\Fixer\Comment\NoEmptyCommentFixer;
use PhpCsFixer\Fixer\Comment\SingleLineCommentSpacingFixer;
use PhpCsFixer\Fixer\Comment\SingleLineCommentStyleFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
->withRules([GitMergeConflictSniff::class]);
->withRules([
GitMergeConflictSniff::class,
NoEmptyCommentFixer::class,
SingleLineCommentSpacingFixer::class,
SingleLineCommentStyleFixer::class,
MultilineCommentOpeningClosingFixer::class,
]);
10 changes: 7 additions & 3 deletions config/set/common/namespaces.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@

declare(strict_types=1);

use PhpCsFixer\Fixer\Import\NoUnneededImportAliasFixer;
use PhpCsFixer\Fixer\Import\NoUnusedImportsFixer;
use PhpCsFixer\Fixer\Import\OrderedImportsFixer;
use PhpCsFixer\Fixer\NamespaceNotation\SingleBlankLineBeforeNamespaceFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
->withRules(
[NoUnusedImportsFixer::class, OrderedImportsFixer::class, SingleBlankLineBeforeNamespaceFixer::class]
);
->withRules([
NoUnusedImportsFixer::class,
OrderedImportsFixer::class,
SingleBlankLineBeforeNamespaceFixer::class,
NoUnneededImportAliasFixer::class,
]);
2 changes: 1 addition & 1 deletion packages/coding-standard/src/TokenRunner/TokenFinder.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ final class TokenFinder
/**
* @param Tokens<Token> $tokens
*/
public function getPreviousMeaningfulToken(Tokens $tokens, int | Token $position): Token
public function getPreviousMeaningfulToken(Tokens $tokens, int|Token $position): Token
{
if (is_int($position)) {
return $this->findPreviousTokenByPosition($tokens, $position);
Expand Down
2 changes: 1 addition & 1 deletion src/Config/ECSConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ public function reportingRealPath(bool $absolute = true): void
}

/**
* @link https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/doc/ruleSets/index.rst
* @see https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/doc/ruleSets/index.rst
* @param string[] $setNames
*/
public function dynamicSets(array $setNames): void
Expand Down
9 changes: 9 additions & 0 deletions src/Config/Level/ArrayLevel.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@

use PHP_CodeSniffer\Sniffs\Sniff;
use PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer;
use PhpCsFixer\Fixer\ArrayNotation\NoMultilineWhitespaceAroundDoubleArrowFixer;
use PhpCsFixer\Fixer\ArrayNotation\NoWhitespaceBeforeCommaInArrayFixer;
use PhpCsFixer\Fixer\ArrayNotation\NoWhitespaceInEmptyArrayFixer;
use PhpCsFixer\Fixer\ArrayNotation\TrimArraySpacesFixer;
use PhpCsFixer\Fixer\ArrayNotation\WhitespaceAfterCommaInArrayFixer;
use PhpCsFixer\Fixer\Basic\NoTrailingCommaInSinglelineFixer;
use PhpCsFixer\Fixer\ControlStructure\TrailingCommaInMultilineFixer;
use PhpCsFixer\Fixer\FixerInterface;
use PhpCsFixer\Fixer\ListNotation\ListSyntaxFixer;
use PhpCsFixer\Fixer\Whitespace\ArrayIndentationFixer;
use Symplify\CodingStandard\Fixer\ArrayNotation\ArrayListItemNewlineFixer;
use Symplify\CodingStandard\Fixer\ArrayNotation\ArrayOpenerAndCloserNewlineFixer;
Expand All @@ -34,10 +37,13 @@ final class ArrayLevel
NoWhitespaceBeforeCommaInArrayFixer::class,
WhitespaceAfterCommaInArrayFixer::class,
TrimArraySpacesFixer::class,
NoWhitespaceInEmptyArrayFixer::class,
NoMultilineWhitespaceAroundDoubleArrowFixer::class,
NoTrailingCommaInSinglelineFixer::class,

// syntax normalization
ArraySyntaxFixer::class,
ListSyntaxFixer::class,
TrailingCommaInMultilineFixer::class,

// invasive layout changes
Expand All @@ -57,6 +63,9 @@ final class ArrayLevel
ArraySyntaxFixer::class => [
'syntax' => 'short',
],
ListSyntaxFixer::class => [
'syntax' => 'short',
],
TrailingCommaInMultilineFixer::class => [
'elements' => [TrailingCommaInMultilineFixer::ELEMENTS_ARRAYS],
],
Expand Down
30 changes: 30 additions & 0 deletions src/Config/Level/ControlStructuresLevel.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,27 @@
use PhpCsFixer\Fixer\ClassNotation\OrderedClassElementsFixer;
use PhpCsFixer\Fixer\ClassNotation\SelfAccessorFixer;
use PhpCsFixer\Fixer\ClassNotation\SingleClassElementPerStatementFixer;
use PhpCsFixer\Fixer\ControlStructure\IncludeFixer;
use PhpCsFixer\Fixer\ControlStructure\NoAlternativeSyntaxFixer;
use PhpCsFixer\Fixer\ControlStructure\NoSuperfluousElseifFixer;
use PhpCsFixer\Fixer\ControlStructure\NoUselessElseFixer;
use PhpCsFixer\Fixer\ControlStructure\SimplifiedIfReturnFixer;
use PhpCsFixer\Fixer\ControlStructure\SwitchContinueToBreakFixer;
use PhpCsFixer\Fixer\ControlStructure\YodaStyleFixer;
use PhpCsFixer\Fixer\FixerInterface;
use PhpCsFixer\Fixer\FunctionNotation\NullableTypeDeclarationForDefaultNullValueFixer;
use PhpCsFixer\Fixer\LanguageConstruct\ExplicitIndirectVariableFixer;
use PhpCsFixer\Fixer\LanguageConstruct\FunctionToConstantFixer;
use PhpCsFixer\Fixer\LanguageConstruct\IsNullFixer;
use PhpCsFixer\Fixer\Operator\AssignNullCoalescingToCoalesceEqualFixer;
use PhpCsFixer\Fixer\Operator\LongToShorthandOperatorFixer;
use PhpCsFixer\Fixer\Operator\NewWithBracesFixer;
use PhpCsFixer\Fixer\Operator\NoUselessConcatOperatorFixer;
use PhpCsFixer\Fixer\Operator\NoUselessNullsafeOperatorFixer;
use PhpCsFixer\Fixer\Operator\ObjectOperatorWithoutWhitespaceFixer;
use PhpCsFixer\Fixer\Operator\StandardizeIncrementFixer;
use PhpCsFixer\Fixer\Operator\StandardizeNotEqualsFixer;
use PhpCsFixer\Fixer\Operator\TernaryToNullCoalescingFixer;
use PhpCsFixer\Fixer\PhpUnit\PhpUnitMethodCasingFixer;
use PhpCsFixer\Fixer\StringNotation\ExplicitStringVariableFixer;
use PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer;
Expand Down Expand Up @@ -45,6 +58,16 @@ final class ControlStructuresLevel
FunctionToConstantFixer::class,
StandardizeIncrementFixer::class,
NewWithBracesFixer::class,
NullableTypeDeclarationForDefaultNullValueFixer::class,

// operator spacing and simplification
ObjectOperatorWithoutWhitespaceFixer::class,
StandardizeNotEqualsFixer::class,
NoUselessConcatOperatorFixer::class,
NoUselessNullsafeOperatorFixer::class,
LongToShorthandOperatorFixer::class,
TernaryToNullCoalescingFixer::class,
AssignNullCoalescingToCoalesceEqualFixer::class,

// string and variable handling
ExplicitStringVariableFixer::class,
Expand All @@ -55,9 +78,16 @@ final class ControlStructuresLevel
ClassDefinitionFixer::class,
SingleClassElementPerStatementFixer::class,

// control-flow normalization
IncludeFixer::class,
NoAlternativeSyntaxFixer::class,
NoSuperfluousElseifFixer::class,
SwitchContinueToBreakFixer::class,

// invasive control-flow / ordering changes
YodaStyleFixer::class,
NoUselessElseFixer::class,
SimplifiedIfReturnFixer::class,
OrderedClassElementsFixer::class,
];

Expand Down
20 changes: 20 additions & 0 deletions src/Config/Level/DocblockLevel.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,22 @@
use PHP_CodeSniffer\Sniffs\Sniff;
use PhpCsFixer\Fixer\Comment\NoTrailingWhitespaceInCommentFixer;
use PhpCsFixer\Fixer\FixerInterface;
use PhpCsFixer\Fixer\Phpdoc\AlignMultilineCommentFixer;
use PhpCsFixer\Fixer\Phpdoc\NoBlankLinesAfterPhpdocFixer;
use PhpCsFixer\Fixer\Phpdoc\NoEmptyPhpdocFixer;
use PhpCsFixer\Fixer\Phpdoc\NoSuperfluousPhpdocTagsFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocIndentFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocInlineTagNormalizerFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocLineSpanFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocNoAccessFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocNoAliasTagFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocNoDuplicateTypesFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocNoEmptyReturnFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocNoPackageFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocOrderByValueFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocReturnSelfReferenceFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocScalarFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocTagCasingFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocTrimConsecutiveBlankLineSeparationFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocTrimFixer;
use PhpCsFixer\Fixer\Phpdoc\PhpdocTypesFixer;
Expand Down Expand Up @@ -68,14 +78,24 @@ final class DocblockLevel
PhpdocTrimFixer::class,
PhpdocTrimConsecutiveBlankLineSeparationFixer::class,
PhpdocIndentFixer::class,
NoBlankLinesAfterPhpdocFixer::class,
AlignMultilineCommentFixer::class,

// type / formatting normalization
PhpdocTagCasingFixer::class,
PhpdocInlineTagNormalizerFixer::class,
PhpdocNoDuplicateTypesFixer::class,
PhpdocScalarFixer::class,
PhpdocTypesFixer::class,
PhpdocLineSpanFixer::class,
PhpdocVarWithoutNameFixer::class,
PhpdocReturnSelfReferenceFixer::class,
PhpdocOrderByValueFixer::class,

// dropping content
PhpdocNoAliasTagFixer::class,
PhpdocNoAccessFixer::class,
PhpdocNoPackageFixer::class,
NoEmptyPhpdocFixer::class,
PhpdocNoEmptyReturnFixer::class,
RemoveUselessDefaultCommentFixer::class,
Expand Down
2 changes: 2 additions & 0 deletions src/Config/Level/SpacesLevel.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
use PhpCsFixer\Fixer\Whitespace\NoSpacesAroundOffsetFixer;
use PhpCsFixer\Fixer\Whitespace\NoWhitespaceInBlankLineFixer;
use PhpCsFixer\Fixer\Whitespace\TypeDeclarationSpacesFixer;
use PhpCsFixer\Fixer\Whitespace\TypesSpacesFixer;
use Symplify\CodingStandard\Fixer\Spacing\StandaloneLinePromotedPropertyFixer;

/**
Expand Down Expand Up @@ -65,6 +66,7 @@ final class SpacesLevel
TernaryOperatorSpacesFixer::class,
ReturnTypeDeclarationFixer::class,
TypeDeclarationSpacesFixer::class,
TypesSpacesFixer::class,
SuperfluousWhitespaceSniff::class,

// configurable, more impactful
Expand Down
18 changes: 16 additions & 2 deletions src/Configuration/ECSConfigBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ final class ECSConfigBuilder
private array $rules = [];

/**
* @var array<class-string<(FixerInterface | Sniff)>, mixed>
* @var array<class-string<(FixerInterface|Sniff)>, mixed>
*/
private array $rulesWithConfiguration = [];

Expand Down Expand Up @@ -252,6 +252,10 @@ public function withPreparedSets(
bool $namespaces = false,
/** @see SetList::CONTROL_STRUCTURES */
bool $controlStructures = false,
/** @see SetList::CASING */
bool $casing = false,
/** @see SetList::CLEANUP */
bool $cleanup = false,
/**
* @deprecated as never worked, used different rules. Use Rector instead.
* @see SetList::PHPUNIT
Expand Down Expand Up @@ -286,6 +290,8 @@ public function withPreparedSets(
'docblocks' => $docblocks,
'controlStructures' => $controlStructures,
'comments' => $comments,
'casing' => $casing,
'cleanup' => $cleanup,
]))) !== []) {
throw new SuperfluousConfigurationException(
sprintf(
Expand Down Expand Up @@ -324,6 +330,14 @@ public function withPreparedSets(
if ($comments) {
$this->sets[] = SetList::COMMENTS;
}

if ($casing) {
$this->sets[] = SetList::CASING;
}

if ($cleanup) {
$this->sets[] = SetList::CLEANUP;
}
}

if ($strict) {
Expand Down Expand Up @@ -725,7 +739,7 @@ public function withSpacing(?string $indentation = null, ?string $lineEnding = n
}

/**
* @param class-string<(FixerInterface | Sniff)> $checkerClass
* @param class-string<(FixerInterface|Sniff)> $checkerClass
* @param mixed[] $configuration
*/
public function withConfiguredRule(string $checkerClass, array $configuration): self
Expand Down
2 changes: 1 addition & 1 deletion src/FileSystem/PathNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ final class PathNormalizer
/**
* @see https://regex101.com/r/d4F5Fm/1
*/
private const string SCHEME_PATH_REGEX = '#^([a-z]+)\\:\\/\\/(.+)#';
private const string SCHEME_PATH_REGEX = '#^([a-z]+)\:\/\/(.+)#';

/**
* @see https://regex101.com/r/no28vw/1
Expand Down
4 changes: 2 additions & 2 deletions src/Skipper/Contract/SkipVoterInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

interface SkipVoterInterface
{
public function match(string | object $element): bool;
public function match(string|object $element): bool;

public function shouldSkip(string | object $element, SplFileInfo | string $file): bool;
public function shouldSkip(string|object $element, SplFileInfo|string $file): bool;
}
Loading
Loading