Skip to content

Commit

Permalink
[DX] Add strict PHPStan rules - step #2 (#1330)
Browse files Browse the repository at this point in the history
  • Loading branch information
TomasVotruba authored Nov 28, 2021
1 parent f985e81 commit 39a530c
Show file tree
Hide file tree
Showing 115 changed files with 317 additions and 276 deletions.
7 changes: 7 additions & 0 deletions phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -583,3 +583,10 @@ parameters:

# skip === false compare
- '#Do not compare call directly, use a variable assign#'

# strict - resolve later
- '#Foreach overwrites \$(.*?) with its value variable#'

-
message: '#Strict comparison using \!\=\= between null and null will always evaluate to false#'
path: rules/Renaming/Rector/FileWithoutNamespace/PseudoNamespaceToNamespaceRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@
return static function (ContainerConfigurator $containerConfigurator): void {
$services = $containerConfigurator->services();
$services->set(FuncCallToNewRector::class)
->call('configure', [[
FuncCallToNewRector::FUNCTIONS_TO_NEWS => [
'collection' => ['Collection'],
],
]]);
->configure([
'collection' => 'Collection',
]);
};
6 changes: 3 additions & 3 deletions rules/Arguments/Rector/ClassMethod/ArgumentAdderRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -130,12 +130,12 @@ public function refactor(Node $node): MethodCall | StaticCall | ClassMethod | nu
}

/**
* @param array<string, ArgumentAdder[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$addedArguments = $configuration[self::ADDED_ARGUMENTS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($addedArguments, ArgumentAdder::class);
$addedArguments = $configuration[self::ADDED_ARGUMENTS] ?? $configuration;
Assert::allIsAOf($addedArguments, ArgumentAdder::class);
$this->addedArguments = $addedArguments;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,12 @@ public function refactor(Node $node): MethodCall | StaticCall | ClassMethod
}

/**
* @param array<string, ReplaceArgumentDefaultValue[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$replacedArguments = $configuration[self::REPLACED_ARGUMENTS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($replacedArguments, ReplaceArgumentDefaultValue::class);
$replacedArguments = $configuration[self::REPLACED_ARGUMENTS] ?? $configuration;
Assert::allIsAOf($replacedArguments, ReplaceArgumentDefaultValue::class);
$this->replacedArguments = $replacedArguments;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,12 @@ public function refactor(Node $node): FuncCall
}

/**
* @param array<string, ReplaceFuncCallArgumentDefaultValue[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$replacedArguments = $configuration[self::REPLACED_ARGUMENTS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($replacedArguments, ReplaceFuncCallArgumentDefaultValue::class);
$replacedArguments = $configuration[self::REPLACED_ARGUMENTS] ?? $configuration;
Assert::allIsAOf($replacedArguments, ReplaceFuncCallArgumentDefaultValue::class);
$this->replacedArguments = $replacedArguments;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -106,12 +106,12 @@ public function refactor(Node $node): ?FuncCall
}

/**
* @param array<string, SwapFuncCallArguments[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$functionArgumentSwaps = $configuration[self::FUNCTION_ARGUMENT_SWAPS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($functionArgumentSwaps, SwapFuncCallArguments::class);
$functionArgumentSwaps = $configuration[self::FUNCTION_ARGUMENT_SWAPS] ?? $configuration;
Assert::allIsAOf($functionArgumentSwaps, SwapFuncCallArguments::class);
$this->functionArgumentSwaps = $functionArgumentSwaps;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,12 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, string[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$groupNamesBySuffix = $configuration[self::GROUP_NAMES_BY_SUFFIX] ?? ($configuration ?: []);
$groupNamesBySuffix = $configuration[self::GROUP_NAMES_BY_SUFFIX] ?? $configuration;
Assert::isArray($groupNamesBySuffix);
Assert::allString($groupNamesBySuffix);

$this->groupNamesBySuffix = $groupNamesBySuffix;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, mixed> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,11 +108,11 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, mixed> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$attributesOrder = $configuration[self::ATTRIBUTES_ORDER] ?? ($configuration ?: []);
$attributesOrder = $configuration[self::ATTRIBUTES_ORDER] ?? $configuration;
Assert::isArray($attributesOrder);
Assert::allString($attributesOrder);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,12 +124,12 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, ReturnArrayClassMethodToYield[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$methodsToYields = $configuration[self::METHODS_TO_YIELDS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($methodsToYields, ReturnArrayClassMethodToYield::class);
$methodsToYields = $configuration[self::METHODS_TO_YIELDS] ?? $configuration;
Assert::allIsAOf($methodsToYields, ReturnArrayClassMethodToYield::class);
$this->methodsToYields = $methodsToYields;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$typeToPreference = $configuration[self::TYPE_TO_PREFERENCE] ?? ($configuration ?: []);
$typeToPreference = $configuration[self::TYPE_TO_PREFERENCE] ?? $configuration;
Assert::allIsAOf($typeToPreference, PreferenceSelfThis::class);

$this->typeToPreference = $typeToPreference;
Expand Down
6 changes: 3 additions & 3 deletions rules/Composer/Rector/AddPackageToRequireComposerRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,12 @@ public function getRuleDefinition(): RuleDefinition
}

/**
* @param array<string, PackageAndVersion[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($packagesAndVersions, PackageAndVersion::class);
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? $configuration;
Assert::allIsAOf($packagesAndVersions, PackageAndVersion::class);

$this->versionGuard->validate($packagesAndVersions);
$this->packagesAndVersions = $packagesAndVersions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,12 @@ public function getRuleDefinition(): RuleDefinition
}

/**
* @param array<string, PackageAndVersion[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($packagesAndVersions, PackageAndVersion::class);
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? $configuration;
Assert::allIsAOf($packagesAndVersions, PackageAndVersion::class);

$this->versionGuard->validate($packagesAndVersions);
$this->packageAndVersions = $packagesAndVersions;
Expand Down
6 changes: 3 additions & 3 deletions rules/Composer/Rector/ChangePackageVersionComposerRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,12 @@ public function getRuleDefinition(): RuleDefinition
}

/**
* @param array<string, PackageAndVersion[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($packagesAndVersions, PackageAndVersion::class);
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? $configuration;
Assert::allIsAOf($packagesAndVersions, PackageAndVersion::class);

$this->versionGuard->validate($packagesAndVersions);
$this->packagesAndVersions = $packagesAndVersions;
Expand Down
2 changes: 1 addition & 1 deletion rules/Composer/Rector/RemovePackageComposerRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public function getRuleDefinition(): RuleDefinition
*/
public function configure(array $configuration): void
{
$packagesNames = $configuration[self::PACKAGE_NAMES] ?? ($configuration ?: []);
$packagesNames = $configuration[self::PACKAGE_NAMES] ?? $configuration;

Assert::isArray($packagesNames);
Assert::allString($packagesNames);
Expand Down
6 changes: 3 additions & 3 deletions rules/Composer/Rector/RenamePackageComposerRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,12 @@ public function getRuleDefinition(): RuleDefinition
}

/**
* @param array<string, RenamePackage[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$renamePackages = $configuration[self::RENAME_PACKAGES] ?? ($configuration ?: []);
Assert::allIsInstanceOf($renamePackages, RenamePackage::class);
$renamePackages = $configuration[self::RENAME_PACKAGES] ?? $configuration;
Assert::allIsAOf($renamePackages, RenamePackage::class);
$this->renamePackages = $renamePackages;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,12 @@ public function getRuleDefinition(): RuleDefinition
}

/**
* @param array<string, ReplacePackageAndVersion[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$replacePackagesAndVersions = $configuration[self::REPLACE_PACKAGES_AND_VERSIONS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($replacePackagesAndVersions, ReplacePackageAndVersion::class);
$replacePackagesAndVersions = $configuration[self::REPLACE_PACKAGES_AND_VERSIONS] ?? $configuration;
Assert::allIsAOf($replacePackagesAndVersions, ReplacePackageAndVersion::class);

$this->versionGuard->validate($replacePackagesAndVersions);
$this->replacePackagesAndVersions = $replacePackagesAndVersions;
Expand Down
5 changes: 3 additions & 2 deletions rules/DeadCode/Rector/ClassLike/RemoveAnnotationRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,12 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, string[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$annotationsToRemove = $configuration[self::ANNOTATIONS_TO_REMOVE] ?? ($configuration ?: []);
$annotationsToRemove = $configuration[self::ANNOTATIONS_TO_REMOVE] ?? $configuration;
Assert::isArray($annotationsToRemove);
Assert::allString($annotationsToRemove);

$this->annotationsToRemove = $annotationsToRemove;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public function __construct(
}

/**
* @param array<string, int|string> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$methodsByParentTypes = $configuration[self::METHODS_BY_PARENT_TYPES] ?? ($configuration ?: []);
$methodsByParentTypes = $configuration[self::METHODS_BY_PARENT_TYPES] ?? $configuration;
Assert::allString(array_keys($methodsByParentTypes));
Assert::allString($methodsByParentTypes);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,16 +139,16 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, mixed> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$safeTypes = $configuration[self::SAFE_TYPES] ?? ($configuration ?: []);
$safeTypes = $configuration[self::SAFE_TYPES] ?? $configuration;
Assert::isArray($safeTypes);
Assert::allString($safeTypes);
$this->safeTypes = $safeTypes;

$safeTypesToMethods = $configuration[self::SAFE_TYPES_TO_METHODS] ?? ($configuration ?: []);
$safeTypesToMethods = $configuration[self::SAFE_TYPES_TO_METHODS] ?? $configuration;
Assert::isArray($safeTypesToMethods);
foreach ($safeTypesToMethods as $key => $value) {
Assert::string($key);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,12 +128,12 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, DowngradeAttributeToAnnotation[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$attributesToAnnotations = $configuration[self::ATTRIBUTE_TO_ANNOTATION] ?? ($configuration ?: []);
Assert::allIsInstanceOf($attributesToAnnotations, DowngradeAttributeToAnnotation::class);
$attributesToAnnotations = $configuration[self::ATTRIBUTE_TO_ANNOTATION] ?? $configuration;
Assert::allIsAOf($attributesToAnnotations, DowngradeAttributeToAnnotation::class);

$this->attributesToAnnotations = $attributesToAnnotations;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ final class SomeClass implements SomeInterface
*/
public function configure(array $configuration): void
{
$makeClassMethodGenerics = $configuration[self::GENERIC_CLASS_METHOD_PARAMS] ?? ($configuration ?: []);
$makeClassMethodGenerics = $configuration[self::GENERIC_CLASS_METHOD_PARAMS] ?? $configuration;
Assert::allIsAOf($makeClassMethodGenerics, GenericClassMethodParam::class);

$this->genericClassMethodParams = $makeClassMethodGenerics;
Expand Down
6 changes: 6 additions & 0 deletions rules/Naming/Contract/Guard/ConflictingNameGuardInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@

use Rector\Naming\Contract\RenameValueObjectInterface;

/**
* @template TRename as RenameValueObjectInterface
*/
interface ConflictingNameGuardInterface
{
/**
* @param TRename $renameValueObject
*/
public function isConflicting(RenameValueObjectInterface $renameValueObject): bool;
}
3 changes: 3 additions & 0 deletions rules/Naming/Guard/DateTimeAtNamingConventionGuard.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\PHPStanStaticTypeMapper\Utils\TypeUnwrapper;

/**
* @implements ConflictingNameGuardInterface<PropertyRename>
*/
final class DateTimeAtNamingConventionGuard implements ConflictingNameGuardInterface
{
/**
Expand Down
3 changes: 3 additions & 0 deletions rules/Naming/Guard/HasMagicGetSetGuard.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
use Rector\Naming\Contract\RenameValueObjectInterface;
use Rector\Naming\ValueObject\PropertyRename;

/**
* @implements ConflictingNameGuardInterface<PropertyRename>
*/
final class HasMagicGetSetGuard implements ConflictingNameGuardInterface
{
public function __construct(
Expand Down
3 changes: 3 additions & 0 deletions rules/Naming/Guard/NotPrivatePropertyGuard.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
use Rector\Naming\Contract\RenameValueObjectInterface;
use Rector\Naming\ValueObject\PropertyRename;

/**
* @implements ConflictingNameGuardInterface<PropertyRename>
*/
final class NotPrivatePropertyGuard implements ConflictingNameGuardInterface
{
/**
Expand Down
3 changes: 3 additions & 0 deletions rules/Naming/Guard/RamseyUuidInterfaceGuard.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
use Rector\Naming\ValueObject\PropertyRename;
use Rector\NodeTypeResolver\NodeTypeResolver;

/**
* @implements ConflictingNameGuardInterface<PropertyRename>
*/
final class RamseyUuidInterfaceGuard implements ConflictingNameGuardInterface
{
public function __construct(
Expand Down
6 changes: 0 additions & 6 deletions rules/Naming/PhpArray/ArrayFilter.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@

namespace Rector\Naming\PhpArray;

use Rector\Core\Exception\ShouldNotHappenException;

final class ArrayFilter
{
/**
Expand All @@ -25,10 +23,6 @@ public function filterWithAtLeastTwoOccurences(array $values): array
continue;
}

if (! is_string($value)) {
throw new ShouldNotHappenException();
}

$duplicatedValues[] = $value;
}

Expand Down
Loading

0 comments on commit 39a530c

Please sign in to comment.