[DX] Deprecate disabling of import options to keep configuration simpler (#1817)

This commit is contained in:
Tomas Votruba 2022-02-15 21:00:07 +00:00 committed by GitHub
parent 10e8d3e25c
commit d670c93519
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 12 additions and 90 deletions

View File

@ -3,8 +3,12 @@
Rector works with all class names as fully qualified by default, so it knows the exact types. In most coding standard, that's not desired behavior, because short version with `use` statement is preferred:
```diff
-$object = new \App\Some\Namespace\SomeClass();
+use App\Some\Namespace\SomeClass;
-/** @var \App\Some\Namespace\SomeClass $object */
+/** @var SomeClass $object */
-$object = new \App\Some\Namespace\SomeClass();
+$object = new SomeClass();
```
@ -17,23 +21,6 @@ $parameters->set(Option::AUTO_IMPORT_NAMES, true);
<br>
If you enable this feature, the class names in docblocks are imported as well:
```diff
+use App\Some\Namespace\SomeClass;
-/** @var \App\Some\Namespace\SomeClass $someClass */
+/** @var SomeClass $someClass */
$someClass = ...;
```
Do you want to skip them?
```php
$parameters->set(Option::IMPORT_DOC_BLOCKS, false);
```
<br>
Single short classes are imported too:
```diff

View File

@ -41,12 +41,12 @@
"sebastian/diff": "^4.0.4",
"ssch/typo3-rector": "dev-main",
"symfony/console": "^6.0",
"symfony/contracts": "^2.5|^3.0",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/contracts": "^3.0",
"symfony/dependency-injection": "^6.0",
"symfony/finder": "^6.0",
"symfony/process": "^6.0",
"symfony/string": "^6.0",
"symfony/yaml": "^5.4|^6.0",
"symfony/yaml": "^6.0",
"symplify/astral": "^10.0.16",
"symplify/autowire-array-parameter": "^10.0.16",
"symplify/composer-json-manipulator": "^10.0.16",
@ -141,8 +141,7 @@
],
"fix-cs": [
"vendor/bin/ecs check --fix --ansi",
"vendor/bin/ecs check-markdown README.md --fix --ansi",
"php bin/clean-phpstan.php"
"vendor/bin/ecs check-markdown README.md --fix --ansi"
],
"phpstan": "vendor/bin/phpstan analyse --ansi --error-format symplify",
"phpstan-config": "vendor/bin/phpstan analyse config --ansi --error-format symplify",

View File

@ -53,10 +53,6 @@ final class NameImportingPostRector extends AbstractPostRector
return $this->processNodeName($node, $file);
}
if (! $this->parameterProvider->provideBoolParameter(Option::IMPORT_DOC_BLOCKS)) {
return null;
}
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
$this->docBlockNameImporter->importNames($phpDocInfo->getPhpDocNode(), $node);

View File

@ -228,7 +228,6 @@ parameters:
# PHP 7_4 literal syntax
- '#Property PhpParser\\Node\\Scalar\\DNumber\:\:\$value \(float\|int\) does not accept string#'
# mimics original doctrine/annotations parser, improve later when finished
-
message: '#Array destruct is not allowed\. Use value object to pass data instead#'
paths:

View File

@ -1,36 +0,0 @@
<?php
declare(strict_types=1);
namespace Rector\Tests\CodingStyle\Rector\Namespace_\ImportFullyQualifiedNamesRector;
use Iterator;
use Rector\Testing\PHPUnit\AbstractRectorTestCase;
use Symplify\SmartFileSystem\SmartFileInfo;
/**
* @see \Rector\PostRector\Rector\NameImportingPostRector
*/
final class DocBlockRectorTest extends AbstractRectorTestCase
{
/**
* @dataProvider provideData()
*/
public function test(SmartFileInfo $fileInfo): void
{
$this->doTestFileInfo($fileInfo);
}
/**
* @return Iterator<SmartFileInfo>
*/
public function provideData(): Iterator
{
return $this->yieldFilesFromDirectory(__DIR__ . '/FixtureDocBlock');
}
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/import_doc_block_config.php';
}
}

View File

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Rector\Tests\CodingStyle\Rector\Namespace_\ImportFullyQualifiedNamesRector\FixtureDocBlock;
namespace Rector\Tests\CodingStyle\Rector\Namespace_\ImportFullyQualifiedNamesRector\Fixture;
class SkipAlreadyClassNameInInlinedVarDoc
{

View File

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Rector\Tests\CodingStyle\Rector\Namespace_\ImportFullyQualifiedNamesRector\FixtureDocBlock;
namespace Rector\Tests\CodingStyle\Rector\Namespace_\ImportFullyQualifiedNamesRector\Fixture;
class SkipalreadyclassnameinvarDoc
{

View File

@ -1,16 +0,0 @@
<?php
declare(strict_types=1);
use Rector\Core\Configuration\Option;
use Rector\Renaming\Rector\Name\RenameClassRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void {
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::AUTO_IMPORT_NAMES, true);
$parameters->set(Option::IMPORT_DOC_BLOCKS, true);
$services = $containerConfigurator->services();
$services->set(RenameClassRector::class);
};

View File

@ -12,7 +12,6 @@ use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigura
return static function (ContainerConfigurator $containerConfigurator): void {
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::AUTO_IMPORT_NAMES, true);
$parameters->set(Option::IMPORT_DOC_BLOCKS, true);
$parameters->set(Option::APPLY_AUTO_IMPORT_NAMES_ON_CHANGED_FILES_ONLY, true);
$services = $containerConfigurator->services();

View File

@ -63,6 +63,7 @@ final class Option
public const IMPORT_SHORT_CLASSES = 'import_short_classes';
/**
* @deprecated Narrow too complex import settings to more practical use.
* @var string
*/
public const IMPORT_DOC_BLOCKS = 'import_doc_blocks';
@ -82,12 +83,6 @@ final class Option
*/
public const PARALLEL = 'parallel';
/**
* @deprecated Cache is enabled by default
* @var string
*/
public const ENABLE_CACHE = 'enable_cache';
/**
* @var string
*/

View File

@ -9,7 +9,6 @@ use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigura
return static function (ContainerConfigurator $containerConfigurator): void {
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::AUTO_IMPORT_NAMES, true);
$parameters->set(Option::IMPORT_DOC_BLOCKS, true);
$services = $containerConfigurator->services();
$services->set(ReplaceSensioRouteAnnotationWithSymfonyRector::class);