From faaf225f7cb95ec055a7604435da717dcb663f9f Mon Sep 17 00:00:00 2001 From: Aleksei Lebedev <1329824+LastDragon-ru@users.noreply.github.com> Date: Mon, 15 Jan 2024 13:19:52 +0400 Subject: [PATCH] Better way to exclude unwanted Larastan extensions/rules. --- packages/dev/composer.json | 9 +- ...AccessDynamicMethodReturnTypeExtension.php | 46 -- ...ontainerMakeDynamicReturnTypeExtension.php | 39 -- .../dev/src/PhpStan/Container/Installer.php | 142 +++- .../dev/src/PhpStan/Container/extension.neon | 3 + .../dev/src/PhpStan/Container/larastan.neon | 605 ++++++++++++++++++ phpstan.neon | 9 +- vendor-bin/phpstan/composer.json | 9 +- vendor-bin/phpstan/composer.lock | 217 ++++++- 9 files changed, 963 insertions(+), 116 deletions(-) delete mode 100644 packages/dev/larastan/ReturnTypes/ContainerArrayAccessDynamicMethodReturnTypeExtension.php delete mode 100644 packages/dev/larastan/ReturnTypes/ContainerMakeDynamicReturnTypeExtension.php create mode 100644 packages/dev/src/PhpStan/Container/larastan.neon diff --git a/packages/dev/composer.json b/packages/dev/composer.json index a975e2776..e808ad8e8 100644 --- a/packages/dev/composer.json +++ b/packages/dev/composer.json @@ -20,16 +20,17 @@ "require": { "php": "^8.1|^8.2|^8.3", "ext-mbstring": "*", - "phpstan/phpstan": "^1.10", - "illuminate/container": "^10.0.0" + "illuminate/container": "^10.0.0", + "lastdragon-ru/lara-asp-core": "self.version", + "nette/neon": "^3.4", + "phpstan/phpstan": "^1.10" }, "require-dev": { "phpunit/phpunit": "^10.1.0" }, "autoload": { "psr-4": { - "LastDragon_ru\\LaraASP\\Dev\\": "src/", - "Larastan\\Larastan\\": "larastan/" + "LastDragon_ru\\LaraASP\\Dev\\": "src/" }, "exclude-from-classmap": [ "src/**Test.php" diff --git a/packages/dev/larastan/ReturnTypes/ContainerArrayAccessDynamicMethodReturnTypeExtension.php b/packages/dev/larastan/ReturnTypes/ContainerArrayAccessDynamicMethodReturnTypeExtension.php deleted file mode 100644 index 7fe6a8709..000000000 --- a/packages/dev/larastan/ReturnTypes/ContainerArrayAccessDynamicMethodReturnTypeExtension.php +++ /dev/null @@ -1,46 +0,0 @@ -className; - } - - #[Override] - public function isMethodSupported(MethodReflection $methodReflection): bool { - return false; - } - - #[Override] - public function getTypeFromMethodCall( - MethodReflection $methodReflection, - MethodCall $methodCall, - Scope $scope, - ): ?Type { - return null; - } -} diff --git a/packages/dev/larastan/ReturnTypes/ContainerMakeDynamicReturnTypeExtension.php b/packages/dev/larastan/ReturnTypes/ContainerMakeDynamicReturnTypeExtension.php deleted file mode 100644 index 1a1d90772..000000000 --- a/packages/dev/larastan/ReturnTypes/ContainerMakeDynamicReturnTypeExtension.php +++ /dev/null @@ -1,39 +0,0 @@ - $extension + * + * @return array + */ + private static function updateBootstrapFiles(array $extension): array { + // Valid? + if (!isset($extension['parameters']) || !is_array($extension['parameters'])) { + throw new Exception('The `$extension[\'parameters\']` expected to be an array.'); + } + + // Update + $source = self::getLarastanPath(); + $files = (array) ($extension['parameters']['bootstrapFiles'] ?? []); + $root = self::getOwnPath(); + $root = Path::join($root, Path::getRelativePath((string) realpath($root), __DIR__)); + + foreach ($files as $index => $file) { + if (!is_string($file)) { + throw new Exception( + sprintf( + 'The `$extension[\'parameters\'][\'bootstrapFiles\'][%s]` expected to be a string.', + $index, + ), + ); + } + + $file = Path::getPath($source, $file); + $extension['parameters']['bootstrapFiles'][$index] = Path::getRelativePath($root, $file); + } + + // Return + return $extension; + } + + /** + * @param array $extension + * + * @return array + */ + private static function updateServices(array $extension): array { + // Remove + $disabled = [ + ApplicationMakeDynamicReturnTypeExtension::class => true, + AppMakeDynamicReturnTypeExtension::class => true, + ContainerArrayAccessDynamicMethodReturnTypeExtension::class => true, + ContainerMakeDynamicReturnTypeExtension::class => true, ]; - foreach ($classes as $class) { - $file = $path.'/'.str_replace('\\', '/', str_replace('Larastan\\Larastan', $root, $class)).'.php'; + foreach ($extension['services'] ?? [] as $index => $service) { + $class = $service['class'] ?? ''; - echo " Removing {$file} ... "; + if (isset($disabled[$class])) { + unset($extension['services'][$index]); - if (is_file($file)) { - echo @unlink($file) ? 'ok' : 'failed'; - } else { - echo 'not found'; + $disabled[$class] = false; } + } - echo PHP_EOL; + // Reindex + $extension['services'] = array_values($extension['services']); + + // Unused? + $unused = array_keys(array_filter($disabled)); + + if ($unused) { + throw new Exception( + sprintf( + 'The following services is unknown: `%s`', + implode('`, `', $unused), + ), + ); } + + // Return + return $extension; + } + + private static function getOwnPath(): string { + return self::getPackagePath('lastdragon-ru/lara-asp-dev'); + } + + private static function getLarastanPath(): string { + return self::getPackagePath('larastan/larastan'); + } + + private static function getPackagePath(string $package): string { + return InstalledVersions::getInstallPath($package) + ?? throw new Exception(sprintf('The `%s` package is not found/installed.', $package)); } } diff --git a/packages/dev/src/PhpStan/Container/extension.neon b/packages/dev/src/PhpStan/Container/extension.neon index 78cba40c3..7e233f960 100644 --- a/packages/dev/src/PhpStan/Container/extension.neon +++ b/packages/dev/src/PhpStan/Container/extension.neon @@ -3,3 +3,6 @@ services: class: LastDragon_ru\LaraASP\Dev\PhpStan\Container\Extension tags: - phpstan.broker.dynamicMethodReturnTypeExtension + +includes: + - ./larastan.neon diff --git a/packages/dev/src/PhpStan/Container/larastan.neon b/packages/dev/src/PhpStan/Container/larastan.neon new file mode 100644 index 000000000..6a565dd21 --- /dev/null +++ b/packages/dev/src/PhpStan/Container/larastan.neon @@ -0,0 +1,605 @@ +parameters: + universalObjectCratesClasses: + - Illuminate\Http\Request + - Illuminate\Support\Optional + + earlyTerminatingFunctionCalls: + - abort + - dd + + excludePaths: + - *.blade.php + + mixinExcludeClasses: + - Eloquent + + bootstrapFiles: + - bootstrap.php + + checkOctaneCompatibility: false + noEnvCallsOutsideOfConfig: false + noModelMake: true + noUnnecessaryCollectionCall: true + noUnnecessaryCollectionCallOnly: [] + noUnnecessaryCollectionCallExcept: [] + squashedMigrationsPath: [] + databaseMigrationsPath: [] + disableMigrationScan: false + disableSchemaScan: false + viewDirectories: [] + checkModelProperties: false + checkPhpDocMissingReturn: false + checkUnusedViews: false + +parametersSchema: + checkOctaneCompatibility: bool() + noEnvCallsOutsideOfConfig: bool() + noModelMake: bool() + noUnnecessaryCollectionCall: bool() + noUnnecessaryCollectionCallOnly: listOf(string()) + noUnnecessaryCollectionCallExcept: listOf(string()) + databaseMigrationsPath: listOf(string()) + disableMigrationScan: bool() + viewDirectories: listOf(string()) + squashedMigrationsPath: listOf(string()) + disableSchemaScan: bool() + checkModelProperties: bool() + checkUnusedViews: bool() + +conditionalTags: + Larastan\Larastan\Rules\NoEnvCallsOutsideOfConfigRule: + phpstan.rules.rule: %noEnvCallsOutsideOfConfig% + + Larastan\Larastan\Rules\NoModelMakeRule: + phpstan.rules.rule: %noModelMake% + + Larastan\Larastan\Rules\NoUnnecessaryCollectionCallRule: + phpstan.rules.rule: %noUnnecessaryCollectionCall% + + Larastan\Larastan\Rules\OctaneCompatibilityRule: + phpstan.rules.rule: %checkOctaneCompatibility% + + Larastan\Larastan\Rules\ModelProperties\ModelPropertyRule: + phpstan.rules.rule: %checkModelProperties% + + Larastan\Larastan\Rules\ModelProperties\ModelPropertyStaticCallRule: + phpstan.rules.rule: %checkModelProperties% + + Larastan\Larastan\Rules\UnusedViewsRule: + phpstan.rules.rule: %checkUnusedViews% + +services: + - + class: Larastan\Larastan\Methods\RelationForwardsCallsExtension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Methods\ModelForwardsCallsExtension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Methods\EloquentBuilderForwardsCallsExtension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Methods\HigherOrderTapProxyExtension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Methods\HigherOrderCollectionProxyExtension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Methods\StorageMethodsClassReflectionExtension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Methods\Extension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Methods\ModelFactoryMethodsClassReflectionExtension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Methods\RedirectResponseMethodsClassReflectionExtension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Methods\MacroMethodsClassReflectionExtension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Methods\ViewWithMethodsClassReflectionExtension + tags: + - phpstan.broker.methodsClassReflectionExtension + + - + class: Larastan\Larastan\Properties\ModelAccessorExtension + tags: + - phpstan.broker.propertiesClassReflectionExtension + + - + class: Larastan\Larastan\Properties\ModelPropertyExtension + tags: + - phpstan.broker.propertiesClassReflectionExtension + + - + class: Larastan\Larastan\Properties\HigherOrderCollectionProxyPropertyExtension + tags: + - phpstan.broker.propertiesClassReflectionExtension + + - + class: Larastan\Larastan\Types\RelationDynamicMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\Types\ModelRelationsDynamicMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\HigherOrderTapProxyExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\ContainerArrayAccessDynamicMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + arguments: + className: Illuminate\Contracts\Container\Container + + - + class: Larastan\Larastan\ReturnTypes\ContainerArrayAccessDynamicMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + arguments: + className: Illuminate\Container\Container + + - + class: Larastan\Larastan\ReturnTypes\ContainerArrayAccessDynamicMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + arguments: + className: Illuminate\Foundation\Application + + - + class: Larastan\Larastan\ReturnTypes\ContainerArrayAccessDynamicMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + arguments: + className: Illuminate\Contracts\Foundation\Application + + - + class: Larastan\Larastan\Properties\ModelRelationsExtension + tags: + - phpstan.broker.propertiesClassReflectionExtension + + - + class: Larastan\Larastan\ReturnTypes\ModelOnlyDynamicMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\ModelFactoryDynamicStaticMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicStaticMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\ModelDynamicStaticMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicStaticMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\AppMakeDynamicReturnTypeExtension + tags: + - phpstan.broker.dynamicStaticMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\AuthExtension + tags: + - phpstan.broker.dynamicStaticMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\GuardDynamicStaticMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicStaticMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\AuthManagerExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\DateExtension + tags: + - phpstan.broker.dynamicStaticMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\GuardExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\RequestFileExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\RequestRouteExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\RequestUserExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\EloquentBuilderExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\RelationFindExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\RelationCollectionExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\ModelFindExtension + tags: + - phpstan.broker.dynamicStaticMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\BuilderModelFindExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\TestCaseExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\Support\CollectionHelper + + - + class: Larastan\Larastan\ReturnTypes\Helpers\AuthExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\Helpers\CollectExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\Helpers\NowAndTodayExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\Helpers\ResponseExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\Helpers\ValidatorExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\CollectionFilterDynamicReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\CollectionWhereNotNullDynamicReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\CollectionGenericStaticMethodDynamicMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\NewModelQueryDynamicMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\FactoryDynamicMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\CollectionGenericStaticMethodDynamicStaticMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicStaticMethodReturnTypeExtension + + - + class: Larastan\Larastan\Types\AbortIfFunctionTypeSpecifyingExtension + tags: + - phpstan.typeSpecifier.functionTypeSpecifyingExtension + + arguments: + methodName: abort + negate: false + + - + class: Larastan\Larastan\Types\AbortIfFunctionTypeSpecifyingExtension + tags: + - phpstan.typeSpecifier.functionTypeSpecifyingExtension + + arguments: + methodName: abort + negate: true + + - + class: Larastan\Larastan\Types\AbortIfFunctionTypeSpecifyingExtension + tags: + - phpstan.typeSpecifier.functionTypeSpecifyingExtension + + arguments: + methodName: throw + negate: false + + - + class: Larastan\Larastan\Types\AbortIfFunctionTypeSpecifyingExtension + tags: + - phpstan.typeSpecifier.functionTypeSpecifyingExtension + + arguments: + methodName: throw + negate: true + + - + class: Larastan\Larastan\ReturnTypes\Helpers\AppExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\Helpers\ValueExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\Helpers\StrExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\Helpers\TapExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\StorageDynamicStaticMethodReturnTypeExtension + tags: + - phpstan.broker.dynamicStaticMethodReturnTypeExtension + + - + class: Larastan\Larastan\Types\GenericEloquentCollectionTypeNodeResolverExtension + tags: + - phpstan.phpDoc.typeNodeResolverExtension + + - + class: Larastan\Larastan\Types\ViewStringTypeNodeResolverExtension + tags: + - phpstan.phpDoc.typeNodeResolverExtension + + - + class: Larastan\Larastan\Rules\OctaneCompatibilityRule + + - + class: Larastan\Larastan\Rules\NoEnvCallsOutsideOfConfigRule + + - + class: Larastan\Larastan\Rules\NoModelMakeRule + + - + class: Larastan\Larastan\Rules\NoUnnecessaryCollectionCallRule + arguments: + onlyMethods: %noUnnecessaryCollectionCallOnly% + excludeMethods: %noUnnecessaryCollectionCallExcept% + + - + class: Larastan\Larastan\Rules\ModelProperties\ModelPropertyRule + + - + class: Larastan\Larastan\Rules\ModelProperties\ModelPropertyStaticCallRule + + - + class: Larastan\Larastan\Types\GenericEloquentBuilderTypeNodeResolverExtension + tags: + - phpstan.phpDoc.typeNodeResolverExtension + + - + class: Larastan\Larastan\ReturnTypes\AppEnvironmentReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\Types\ModelProperty\ModelPropertyTypeNodeResolverExtension + tags: + - phpstan.phpDoc.typeNodeResolverExtension + + arguments: + active: %checkModelProperties% + + - + class: Larastan\Larastan\Types\RelationParserHelper + arguments: + parser: @currentPhpVersionSimpleDirectParser + + - + class: Larastan\Larastan\Properties\MigrationHelper + arguments: + databaseMigrationPath: %databaseMigrationsPath% + disableMigrationScan: %disableMigrationScan% + parser: @currentPhpVersionSimpleDirectParser + reflectionProvider: @reflectionProvider + + - + class: Larastan\Larastan\Properties\SquashedMigrationHelper + arguments: + schemaPaths: %squashedMigrationsPath% + disableSchemaScan: %disableSchemaScan% + + - + class: Larastan\Larastan\Properties\ModelCastHelper + + - + class: Larastan\Larastan\Rules\ModelProperties\ModelPropertiesRuleHelper + + - + class: Larastan\Larastan\Rules\ModelRuleHelper + + - + class: Larastan\Larastan\Methods\BuilderHelper + arguments: + checkProperties: %checkModelProperties% + + - + class: Larastan\Larastan\Rules\RelationExistenceRule + tags: + - phpstan.rules.rule + + - + class: Larastan\Larastan\Rules\CheckDispatchArgumentTypesCompatibleWithClassConstructorRule + arguments: + dispatchableClass: Illuminate\Foundation\Bus\Dispatchable + + tags: + - phpstan.rules.rule + + - + class: Larastan\Larastan\Rules\CheckDispatchArgumentTypesCompatibleWithClassConstructorRule + arguments: + dispatchableClass: Illuminate\Foundation\Events\Dispatchable + + tags: + - phpstan.rules.rule + + - Larastan\Larastan\Properties\Schema\PhpMyAdminDataTypeToPhpTypeConverter + - + class: Larastan\Larastan\LarastanStubFilesExtension + tags: + - phpstan.stubFilesExtension + + - + class: Larastan\Larastan\Rules\UnusedViewsRule + + - + class: Larastan\Larastan\Collectors\UsedViewFunctionCollector + tags: + - phpstan.collector + + - + class: Larastan\Larastan\Collectors\UsedEmailViewCollector + tags: + - phpstan.collector + + - + class: Larastan\Larastan\Collectors\UsedViewMakeCollector + tags: + - phpstan.collector + + - + class: Larastan\Larastan\Collectors\UsedViewFacadeMakeCollector + tags: + - phpstan.collector + + - + class: Larastan\Larastan\Collectors\UsedRouteFacadeViewCollector + tags: + - phpstan.collector + + - + class: Larastan\Larastan\Collectors\UsedViewInAnotherViewCollector + arguments: + parser: @currentPhpVersionSimpleDirectParser + + - + class: Larastan\Larastan\Support\ViewFileHelper + arguments: + viewDirectories: %viewDirectories% + + - + class: Larastan\Larastan\ReturnTypes\ApplicationMakeDynamicReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\ContainerMakeDynamicReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\ConsoleCommand\ArgumentDynamicReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\ConsoleCommand\HasArgumentDynamicReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\ConsoleCommand\OptionDynamicReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\ConsoleCommand\HasOptionDynamicReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\TranslatorGetReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\TransHelperReturnTypeExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - + class: Larastan\Larastan\ReturnTypes\DoubleUnderscoreHelperReturnTypeExtension + tags: + - phpstan.broker.dynamicFunctionReturnTypeExtension + + - Larastan\Larastan\ReturnTypes\AppMakeHelper + - Larastan\Larastan\Internal\ConsoleApplicationResolver + - Larastan\Larastan\Internal\ConsoleApplicationHelper + - Larastan\Larastan\Support\HigherOrderCollectionProxyHelper + +rules: + - Larastan\Larastan\Rules\UselessConstructs\NoUselessWithFunctionCallsRule + - Larastan\Larastan\Rules\UselessConstructs\NoUselessValueFunctionCallsRule + - Larastan\Larastan\Rules\DeferrableServiceProviderMissingProvidesRule + - Larastan\Larastan\Rules\ConsoleCommand\UndefinedArgumentOrOptionRule + diff --git a/phpstan.neon b/phpstan.neon index c887cadeb..6c815b46e 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -5,6 +5,8 @@ parameters: excludePaths: - dev/App/bootstrap/cache - dev/App/storage + scanDirectories: + - vendor-bin/phpstan/vendor/larastan/larastan # The level 9 is the highest level level: max @@ -46,7 +48,6 @@ includes: - ./vendor-bin/phpstan/vendor/phpstan/phpstan-phpunit/extension.neon - ./vendor-bin/phpstan/vendor/phpstan/phpstan-phpunit/rules.neon - ./vendor-bin/phpstan/vendor/phpstan/phpstan-strict-rules/rules.neon - - ./vendor-bin/phpstan/vendor/larastan/larastan/extension.neon - ./vendor-bin/phpstan/vendor/spaze/phpstan-disallowed-calls/extension.neon - ./vendor-bin/phpstan/vendor/spaze/phpstan-disallowed-calls/disallowed-dangerous-calls.neon - ./vendor-bin/phpstan/vendor/spaze/phpstan-disallowed-calls/disallowed-execution-calls.neon @@ -54,9 +55,9 @@ includes: - ./vendor-bin/phpstan/vendor/spaze/phpstan-disallowed-calls/disallowed-loose-calls.neon # Package - - ./packages/dev/src/PhpStan/Container/extension.neon - - ./packages/dev/src/PhpStan/ClassMustBeFinal/extension.neon - - ./packages/dev/src/PhpStan/ClassMustBeInternal/extension.neon + - ./vendor-bin/phpstan/vendor/lastdragon-ru/lara-asp-dev/src/PhpStan/Container/extension.neon + - ./vendor-bin/phpstan/vendor/lastdragon-ru/lara-asp-dev/src/PhpStan/ClassMustBeFinal/extension.neon + - ./vendor-bin/phpstan/vendor/lastdragon-ru/lara-asp-dev/src/PhpStan/ClassMustBeInternal/extension.neon # Baseline - phpstan-baseline-well-known.neon diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 259008543..c00305182 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -6,17 +6,22 @@ "phpstan/phpstan-phpunit": "^1.3", "phpstan/phpstan-strict-rules": "^1.5", "spaze/phpstan-disallowed-calls": "^3.0", + "lastdragon-ru/lara-asp-core": "self.version", "lastdragon-ru/lara-asp-dev": "self.version" }, "scripts": { - "pre-autoload-dump": [ - "LastDragon_ru\\LaraASP\\Dev\\PhpStan\\Container\\Installer::install" + "post-update-cmd": [ + "LastDragon_ru\\LaraASP\\Dev\\PhpStan\\Container\\Installer::dump" ] }, "repositories": { "dev": { "type": "path", "url": "../../packages/dev" + }, + "core": { + "type": "path", + "url": "../../packages/core" } } } diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 1e4e3f907..d736e8549 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "20aaf9c1e4e019d217f175a7770e8ccd", + "content-hash": "a1f7fc68a0021d79dff11f12b9ebbd22", "packages": [], "packages-dev": [ { @@ -1392,17 +1392,95 @@ }, "time": "2024-02-21T19:25:27+00:00" }, + { + "name": "lastdragon-ru/lara-asp-core", + "version": "dev-main", + "dist": { + "type": "path", + "url": "../../packages/core", + "reference": "27679fa0bed97f910f4b69ab874bfaed1c31de43" + }, + "require": { + "illuminate/console": "^10.34.0", + "illuminate/container": "^10.34.0", + "illuminate/contracts": "^10.34.0", + "php": "^8.1|^8.2|^8.3", + "symfony/filesystem": "^6.3.0", + "symfony/polyfill-php83": "^1.28" + }, + "require-dev": { + "illuminate/support": "^10.34.0", + "lastdragon-ru/lara-asp-testing": "self.version", + "mockery/mockery": "^1.6.2", + "orchestra/testbench": "^8.0.0", + "phpunit/phpunit": "^10.1.0" + }, + "type": "library", + "extra": { + "lara-asp": { + "ci": { + "required-extensions": { + "league/flysystem": [ + "ext-fileinfo" + ], + "illuminate/console": [ + "ext-mbstring" + ] + } + } + } + }, + "autoload": { + "psr-4": { + "LastDragon_ru\\LaraASP\\Core\\": "src/" + }, + "exclude-from-classmap": [ + "src/**Test.php", + "src/Testing/**.php" + ] + }, + "autoload-dev": { + "psr-4": { + "LastDragon_ru\\LaraASP\\Core\\Docs\\": "docs" + }, + "exclude-from-classmap": [ + "docs/" + ] + }, + "license": [ + "MIT" + ], + "description": "The Awesome Set of Packages for Laravel - The Core.", + "homepage": "https://github.com/LastDragon-ru/lara-asp", + "keywords": [ + "laravel", + "laravel-package", + "laravel-queue", + "php", + "queue" + ], + "support": { + "issues": "https://github.com/LastDragon-ru/lara-asp/issues", + "source": "https://github.com/LastDragon-ru/lara-asp", + "forum": "https://github.com/LastDragon-ru/lara-asp/discussions" + }, + "transport-options": { + "relative": true + } + }, { "name": "lastdragon-ru/lara-asp-dev", "version": "dev-main", "dist": { "type": "path", "url": "../../packages/dev", - "reference": "22ac6b72feab0c4c8234cf52c937697b44068889" + "reference": "6a462ef64e9b6d81cb6c2d245916ca474cdcf635" }, "require": { "ext-mbstring": "*", "illuminate/container": "^10.0.0", + "lastdragon-ru/lara-asp-core": "self.version", + "nette/neon": "^3.4", "php": "^8.1|^8.2|^8.3", "phpstan/phpstan": "^1.10" }, @@ -1412,8 +1490,7 @@ "type": "library", "autoload": { "psr-4": { - "LastDragon_ru\\LaraASP\\Dev\\": "src/", - "Larastan\\Larastan\\": "larastan/" + "LastDragon_ru\\LaraASP\\Dev\\": "src/" }, "exclude-from-classmap": [ "src/**Test.php" @@ -1547,6 +1624,74 @@ ], "time": "2024-01-25T10:35:09+00:00" }, + { + "name": "nette/neon", + "version": "v3.4.1", + "source": { + "type": "git", + "url": "https://github.com/nette/neon.git", + "reference": "457bfbf0560f600b30d9df4233af382a478bb44d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/neon/zipball/457bfbf0560f600b30d9df4233af382a478bb44d", + "reference": "457bfbf0560f600b30d9df4233af382a478bb44d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "8.0 - 8.3" + }, + "require-dev": { + "nette/tester": "^2.4", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.7" + }, + "bin": [ + "bin/neon-lint" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🍸 Nette NEON: encodes and decodes NEON file format.", + "homepage": "https://ne-on.org", + "keywords": [ + "export", + "import", + "neon", + "nette", + "yaml" + ], + "support": { + "issues": "https://github.com/nette/neon/issues", + "source": "https://github.com/nette/neon/tree/v3.4.1" + }, + "time": "2023-09-27T08:59:11+00:00" + }, { "name": "nunomaduro/termwind", "version": "v1.15.1", @@ -2644,6 +2789,69 @@ ], "time": "2023-05-23T14:45:45+00:00" }, + { + "name": "symfony/filesystem", + "version": "v6.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v6.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-23T14:51:35+00:00" + }, { "name": "symfony/finder", "version": "v6.4.0", @@ -4177,6 +4385,7 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { + "lastdragon-ru/lara-asp-core": 20, "lastdragon-ru/lara-asp-dev": 20 }, "prefer-stable": false,