- Issue created by @mondrake
- 🇳🇱Netherlands spokje
This needs a
mglaman/phpstan-drupal
that works withphpstan/phpstan:^2.0
AFAICT - 🇧🇪Belgium gorkagr
I think also a core-dev update also is needed (https://github.com/drupal/core-dev/blob/11.0.6/composer.json) as it requires both phpstan/phpstan and mglaman/phpstan-drupal
- 🇮🇹Italy mondrake 🇮🇹
This needs a mglaman/phpstan-drupal that works with phpstan/phpstan:^2.0
Postponed on that.
- 🇳🇱Netherlands spokje
Here's the upstream issue: https://github.com/mglaman/phpstan-drupal/issues/806
- 🇦🇺Australia mstrelan
I believe this means we could remove bleeding edge from phpstan config. To be discussed if that's something we want to do though.
- 🇮🇹Italy mondrake 🇮🇹
https://github.com/mglaman/phpstan-drupal/releases/tag/2.0.0 is out, supporting PHPStan 2. This is unblocked now.
- First commit to issue fork.
- 🇯🇵Japan ptmkenny
After updating to PHPStan 2, there are two coversMethod errors:
------ ----------------------------------------------------------------- Line core/tests/Drupal/Tests/Core/Layout/LayoutPluginManagerTest.php ------ ----------------------------------------------------------------- 365 @covers value \Drupal\Core\Layout\LayoutPluginManager::getLayoutOptions Test that modules and themes can alter the list of layouts. references an invalid method. 🪪 phpunit.coversMethod ------ ----------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/tests/Drupal/Tests/Core/State/StateTest.php ------ ---------------------------------------------------------------------- 328 @covers value \Drupal\Core\State\State::delete Ensure that deleting clears some static cache. references an invalid method. 🪪 phpunit.coversMethod ------ ----------------------------------------------------------------------
and 90 missingType.generics errors:
------ ---------------------------------------------------------------------------------- Line core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php ------ ---------------------------------------------------------------------------------- 1154 Method Drupal\Tests\Core\Render\RendererPlaceholdersTest::setupThemeManagerForDetails() return type with generic class PHPUnit\Framework\MockObject\Builder\InvocationMocker does not specify its types: TMockedClass 🪪 missingType.generics ------ ----------------------------------------------------------------------------------
I propose fixing the two coversMethod errors and then ignoring missingType.generics.
- 🇳🇱Netherlands spokje
Thanks for the hard work @ptmkenny
The first two errors you mentioned are caused by there being text after the
So far example <code>core/tests/Drupal/Tests/Core/State/StateTest.php
/** * Tests both get() & delete() method. * * Here testing the key and value after deleting the key's value. * * @covers ::get * @covers ::delete * * Ensure that deleting clears some static cache. */
So if we put that last line before the
@covers ::get
PHPStan should be much happier.The
missingType.generics
are much harder to fix and we _could_ suppress them, so the behaviour on those would be the same as in PHPStan 1.x, with:parameters: ignoreErrors: - identifier: missingType.generics
https://github.com/phpstan/phpstan/blob/2.0.x/UPGRADING.md#removed-optio...
- 🇯🇵Japan ptmkenny
@spokje Ok, thanks! I fixed the @covers and updated one ignore in the baseline that is now processed differently, and I set missingType.generics to ignore.
- 🇯🇵Japan ptmkenny
The phpunit phpstan test is failing:
Component Test Does Not Extend Core Test (Drupal\PHPStan\Tests\ComponentTestDoesNotExtendCoreTest) ✔ Rule Ensure PHPStan Versions Match (Drupal\PHPStan\Tests\EnsurePHPStanVersionsMatch) ✘ Versions │ │ Failed asserting that two strings are identical. │ --- Expected │ +++ Actual │ @@ @@ │ -'1.12.12' │ +'2.0.3' │ │ /builds/issue/drupal-3486713/core/tests/PHPStan/tests/EnsurePHPStanVersionsMatchTest.php:17
That test is:
/** * Tests that PHPStan versions match. */ class EnsurePHPStanVersionsMatchTest extends TestCase { public function testVersions(): void { $test_composer = json_decode(file_get_contents(__DIR__ . '/../composer.json'), TRUE); $drupal_composer = json_decode(file_get_contents(__DIR__ . '/../../../../composer/Metapackage/PinnedDevDependencies/composer.json'), TRUE); $this->assertSame($test_composer['require-dev']['phpstan/phpstan'], $drupal_composer['require']['phpstan/phpstan']); } }
I don't understand why this test is failing, though; on my local machine, both composer.json and the metapackage PinnedDevDependencies composer.json have phpstan 2.
- 🇳🇱Netherlands spokje
Nice,
The only failing test now is an annoying one, which always gets me.
In
core/tests/PHPStan/composer.json
the version ofphpstan/phpstan
should match the version that is incomposer.json
. - 🇬🇧United Kingdom longwave UK
Is it possible to allow both PHPStan 1 and 2 in composer.json? While core can move to v2 all at once, contrib (including the CI templates) might not want to do so just yet, so allowing a downgrade might be useful.
- Merge request !10541update to PHPStan version 2 but still allow version 1 → (Open) created by ptmkenny
- 🇯🇵Japan ptmkenny
@spokje Ok, it looks like the version in
core/tests/PHPStan/composer.json
is hard-coded to the latest version, so I updated that.@longwave I created a new branch, phpstan2_with1, which allows for both PHPStan 2 and 1.
All tests are passing now in both branches, so I updated the issue summary and am setting this to "Needs review".
- 🇯🇵Japan ptmkenny
ptmkenny → changed the visibility of the branch phpstan2 to hidden.
- 🇯🇵Japan ptmkenny
@mondrake: The list of missingType.generics violations is below.
The question is whether these should be added to the baseline or ignored as a group.
The PHPStan docs on missingType.generics list over a dozen rules that could report this error. So it may be worthwhile to find a more specific rule, or to ignore a string like "return type with generic class... does not specify its types".
@spokje mentioned that it might be better to ignore them as a group in the phpstan.neon.dist.
I am happy to do it either way; what does everyone think?
------ ---------------------------------------------------------------------------------- Line composer/Plugin/Scaffold/Operations/ScaffoldFileCollection.php ------ ---------------------------------------------------------------------------------- 118 Method Drupal\Composer\Plugin\Scaffold\Operations\ScaffoldFileCollection::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------------------- ------ ------------------------------------------------------------------------------ Line core/lib/Drupal/Component/Annotation/Doctrine/StaticReflectionClass.php ------ ------------------------------------------------------------------------------ 182 Method Drupal\Component\Annotation\Doctrine\StaticReflectionClass::getInterfaces() return type with generic class ReflectionClass does not specify its types: T 🪪 missingType.generics 206 Method Drupal\Component\Annotation\Doctrine\StaticReflectionClass::getParentClass() return type with generic class ReflectionClass does not specify its types: T 🪪 missingType.generics 270 Method Drupal\Component\Annotation\Doctrine\StaticReflectionClass::getTraits() return type with generic class ReflectionClass does not specify its types: T 🪪 missingType.generics ------ ------------------------------------------------------------------------------ ------ -------------------------------------------------------------------- Line core/lib/Drupal/Component/Plugin/LazyPluginCollection.php ------ -------------------------------------------------------------------- 145 Method Drupal\Component\Plugin\LazyPluginCollection::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ -------------------------------------------------------------------- ------ --------------------------------------------------------------------- Line core/lib/Drupal/Core/Config/Schema/ArrayElement.php ------ --------------------------------------------------------------------- 136 Method Drupal\Core\Config\Schema\ArrayElement::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ --------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/lib/Drupal/Core/Config/TypedConfigManager.php ------ ----------------------------------------------------------------------- 81 Method Drupal\Core\Config\TypedConfigManager::get() return type with generic interface Drupal\Core\TypedData\TraversableTypedDataInterface does not specify its types: I, T 🪪 missingType.generics 201 Method Drupal\Core\Config\TypedConfigManager::getStaticTypeRoot() return type with generic interface Drupal\Core\TypedData\TraversableTypedDataInterface does not specify its types: I, T 🪪 missingType.generics 427 Method Drupal\Core\Config\TypedConfigManager::createFromNameAndData() return type with generic interface Drupal\Core\TypedData\TraversableTypedDataInterface does not specify its types: I, T 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ------------------------------------------------------------------------- Line core/lib/Drupal/Core/Config/TypedConfigManagerInterface.php ------ ------------------------------------------------------------------------- 26 Method Drupal\Core\Config\TypedConfigManagerInterface::get() return type with generic interface Drupal\Core\TypedData\TraversableTypedDataInterface does not specify its types: I, T 🪪 missingType.generics 88 Method Drupal\Core\Config\TypedConfigManagerInterface::createFromNameAndData() return type with generic interface Drupal\Core\TypedData\TraversableTypedDataInterface does not specify its types: I, T 🪪 missingType.generics ------ ------------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/lib/Drupal/Core/Entity/ContentEntityBase.php ------ ---------------------------------------------------------------------- 607 Method Drupal\Core\Entity\ContentEntityBase::getTranslatedField() return type with generic interface Drupal\Core\Field\FieldItemListInterface does not specify its types: T 🪪 missingType.generics 690 Method Drupal\Core\Entity\ContentEntityBase::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/lib/Drupal/Core/Entity/ContentEntityNullStorage.php ------ ---------------------------------------------------------------------- 114 Method Drupal\Core\Entity\ContentEntityNullStorage::readFieldItemsToPurge() return type with generic interface Drupal\Core\Field\FieldItemListInterface does not specify its types: T 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php ------ ---------------------------------------------------------------------- 580 Method Drupal\Core\Entity\ContentEntityStorageBase::readFieldItemsToPurge() return type with generic interface Drupal\Core\Field\FieldItemListInterface does not specify its types: T 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/lib/Drupal/Core/Entity/Plugin/DataType/ConfigEntityAdapter.php ------ ----------------------------------------------------------------------- 72 Method Drupal\Core\Entity\Plugin\DataType\ConfigEntityAdapter::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ------------------------------------------------------------------- Line core/lib/Drupal/Core/Entity/Plugin/DataType/EntityAdapter.php ------ ------------------------------------------------------------------- 165 Method Drupal\Core\Entity\Plugin\DataType\EntityAdapter::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------- ------ ------------------------------------------------------------------------- Line core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php ------ ------------------------------------------------------------------------- 1640 Method Drupal\Core\Entity\Sql\SqlContentEntityStorage::readFieldItemsToPurge() return type with generic interface Drupal\Core\Field\FieldItemListInterface does not specify its types: T 🪪 missingType.generics ------ ------------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/lib/Drupal/Core/Field/FieldTypePluginManager.php ------ ---------------------------------------------------------------------- 83 Method Drupal\Core\Field\FieldTypePluginManager::createFieldItemList() return type with generic interface Drupal\Core\Field\FieldItemListInterface does not specify its types: T 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ -------------------------------------------------------------------------- Line core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php ------ -------------------------------------------------------------------------- 34 Method Drupal\Core\Field\FieldTypePluginManagerInterface::createFieldItemList() return type with generic interface Drupal\Core\Field\FieldItemListInterface does not specify its types: T 🪪 missingType.generics ------ -------------------------------------------------------------------------- ------ ------------------------------------------------------------------------------------- Line core/lib/Drupal/Core/Plugin/Discovery/DirectoryWithMetadataDiscovery.php ------ ------------------------------------------------------------------------------------- 44 Method Drupal\Core\Plugin\Discovery\DirectoryWithMetadataDiscovery::getDirectoryIterator() return type with generic class RecursiveIteratorIterator does not specify its types: T 🪪 missingType.generics ------ ------------------------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/lib/Drupal/Core/Template/Attribute.php ------ ----------------------------------------------------------------------- 362 Method Drupal\Core\Template\Attribute::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/lib/Drupal/Core/Template/AttributeArray.php ------ ----------------------------------------------------------------------- 80 Method Drupal\Core\Template\AttributeArray::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ------------------------------------------------------------------------------------ Line core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php (in context of class Drupal\content_moderation\Plugin\Field\ModerationStateFieldItemList) ------ ------------------------------------------------------------------------------------ 129 Method Drupal\content_moderation\Plugin\Field\ModerationStateFieldItemList::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------------------------ ------ ----------------------------------------------------------------------------------- Line core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php (in context of class Drupal\entity_test\Plugin\Field\ComputedReferenceTestFieldItemList) ------ ----------------------------------------------------------------------------------- 129 Method Drupal\entity_test\Plugin\Field\ComputedReferenceTestFieldItemList::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------------------- ------ -------------------------------------------------------------------------------- Line core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php (in context of class Drupal\entity_test\Plugin\Field\ComputedTestBundleFieldItemList) ------ -------------------------------------------------------------------------------- 129 Method Drupal\entity_test\Plugin\Field\ComputedTestBundleFieldItemList::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ -------------------------------------------------------------------------------- ------ ------------------------------------------------------------------------------------- Line core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php (in context of class Drupal\entity_test\Plugin\Field\ComputedTestCacheableIntegerItemList) ------ ------------------------------------------------------------------------------------- 129 Method Drupal\entity_test\Plugin\Field\ComputedTestCacheableIntegerItemList::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------------------------- ------ ------------------------------------------------------------------------------------ Line core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php (in context of class Drupal\entity_test\Plugin\Field\ComputedTestCacheableStringItemList) ------ ------------------------------------------------------------------------------------ 129 Method Drupal\entity_test\Plugin\Field\ComputedTestCacheableStringItemList::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------------------------ ------ -------------------------------------------------------------------------- Line core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php (in context of class Drupal\entity_test\Plugin\Field\ComputedTestFieldItemList) ------ -------------------------------------------------------------------------- 129 Method Drupal\entity_test\Plugin\Field\ComputedTestFieldItemList::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ -------------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php (in context of class Drupal\path\Plugin\Field\FieldType\PathFieldItemList) ------ ---------------------------------------------------------------------- 129 Method Drupal\path\Plugin\Field\FieldType\PathFieldItemList::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php ------ ---------------------------------------------------------------------- 235 Method Drupal\Core\TypedData\Plugin\DataType\ItemList::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ------------------------------------------------------------------- Line core/lib/Drupal/Core/TypedData/Plugin/DataType/Map.php ------ ------------------------------------------------------------------- 187 Method Drupal\Core\TypedData\Plugin\DataType\Map::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/lib/Drupal/Core/TypedData/TypedData.php ------ ----------------------------------------------------------------------- 162 Method Drupal\Core\TypedData\TypedData::getRoot() return type with generic interface Drupal\Core\TypedData\TraversableTypedDataInterface does not specify its types: I, T 🪪 missingType.generics 195 Method Drupal\Core\TypedData\TypedData::getParent() return type with generic interface Drupal\Core\TypedData\TraversableTypedDataInterface does not specify its types: I, T 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/lib/Drupal/Core/TypedData/TypedDataInterface.php ------ ---------------------------------------------------------------------- 124 Method Drupal\Core\TypedData\TypedDataInterface::getParent() return type with generic interface Drupal\Core\TypedData\TraversableTypedDataInterface does not specify its types: I, T 🪪 missingType.generics 135 Method Drupal\Core\TypedData\TypedDataInterface::getRoot() return type with generic interface Drupal\Core\TypedData\TraversableTypedDataInterface does not specify its types: I, T 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/modules/jsonapi/src/JsonApiResource/Data.php ------ ----------------------------------------------------------------------- 72 Method Drupal\jsonapi\JsonApiResource\Data::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/modules/jsonapi/src/JsonApiResource/ErrorCollection.php ------ ---------------------------------------------------------------------- 50 Method Drupal\jsonapi\JsonApiResource\ErrorCollection::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ --------------------------------------------------------------------- Line core/modules/jsonapi/src/JsonApiResource/LinkCollection.php ------ --------------------------------------------------------------------- 65 Method Drupal\jsonapi\JsonApiResource\LinkCollection::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ --------------------------------------------------------------------- ------ ----------------------------------------------------------------------------- Line core/modules/jsonapi/src/JsonApiResource/ResourceObject.php ------ ----------------------------------------------------------------------------- 302 Method Drupal\jsonapi\JsonApiResource\ResourceObject::extractContentEntityFields() return type with generic interface Drupal\Core\Field\FieldItemListInterface does not specify its types: T 🪪 missingType.generics ------ ----------------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/modules/jsonapi/src/Normalizer/DataNormalizer.php ------ ----------------------------------------------------------------------- 18 Method Drupal\jsonapi\Normalizer\DataNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/modules/jsonapi/src/Normalizer/EntityDenormalizerBase.php ------ ---------------------------------------------------------------------- 77 Method Drupal\jsonapi\Normalizer\EntityDenormalizerBase::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ------------------------------------------------------------------------ Line core/modules/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php ------ ------------------------------------------------------------------------ 30 Method Drupal\jsonapi\Normalizer\EntityReferenceFieldNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------------ ------ ------------------------------------------------------------------- Line core/modules/jsonapi/src/Normalizer/FieldItemNormalizer.php ------ ------------------------------------------------------------------- 57 Method Drupal\jsonapi\Normalizer\FieldItemNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/modules/jsonapi/src/Normalizer/FieldNormalizer.php ------ ----------------------------------------------------------------------- 26 Method Drupal\jsonapi\Normalizer\FieldNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/modules/jsonapi/src/Normalizer/HttpExceptionNormalizer.php ------ ----------------------------------------------------------------------- 44 Method Drupal\jsonapi\Normalizer\HttpExceptionNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ --------------------------------------------------------------------------- Line core/modules/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php ------ --------------------------------------------------------------------------- 170 Method Drupal\jsonapi\Normalizer\JsonApiDocumentTopLevelNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ --------------------------------------------------------------------------- ------ ------------------------------------------------------------------ Line core/modules/jsonapi/src/Normalizer/LinkCollectionNormalizer.php ------ ------------------------------------------------------------------ 84 Method Drupal\jsonapi\Normalizer\LinkCollectionNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------ ------ ---------------------------------------------------------------------- Line core/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php ------ ---------------------------------------------------------------------- 18 Method Drupal\jsonapi\Normalizer\RelationshipNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php ------ ---------------------------------------------------------------------- 46 Method Drupal\jsonapi\Normalizer\ResourceIdentifierNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ------------------------------------------------------------------ Line core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php ------ ------------------------------------------------------------------ 52 Method Drupal\jsonapi\Normalizer\ResourceObjectNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------ ------ -------------------------------------------------------------------------------------------- Line core/modules/jsonapi/src/Normalizer/Value/TemporaryArrayObjectThrowingExceptions.php ------ -------------------------------------------------------------------------------------------- 106 Method Drupal\jsonapi\Normalizer\Value\TemporaryArrayObjectThrowingExceptions::getIteratorClass() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ -------------------------------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/modules/jsonapi/src/Serializer/Serializer.php ------ ---------------------------------------------------------------------- 60 Method Drupal\jsonapi\Serializer\Serializer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ----------------------------------------------------------------------------------------------- Line core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/StringNormalizer.php ------ ----------------------------------------------------------------------------------------------- 19 Method Drupal\jsonapi_test_data_type\Normalizer\StringNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------------------------------- ------ ---------------------------------------------------------------------------------------------------------- Line core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/TraversableObjectNormalizer.php ------ ---------------------------------------------------------------------------------------------------------- 18 Method Drupal\jsonapi_test_data_type\Normalizer\TraversableObjectNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------------------------------------------- ------ ------------------------------------------------------------------------------------- Line core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/TraversableObject.php ------ ------------------------------------------------------------------------------------- 17 Method Drupal\jsonapi_test_data_type\TraversableObject::getIterator() return type with generic class ArrayIterator does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------------------------- ------ ------------------------------------------------------------------------------------------------ Line core/modules/jsonapi/tests/modules/jsonapi_test_field_type/src/Normalizer/StringNormalizer.php ------ ------------------------------------------------------------------------------------------------ 19 Method Drupal\jsonapi_test_field_type\Normalizer\StringNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------------------------------------ ------ ------------------------------------------------------------------------- Line core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php ------ ------------------------------------------------------------------------- 563 Method Drupal\Tests\migrate\Unit\MigrateExecutableTest::getTestRollbackIdMap() return type with generic class Prophecy\Prophecy\ObjectProphecy does not specify its types: T 🪪 missingType.generics ------ ------------------------------------------------------------------------- ------ --------------------------------------------------------------------------------- Line core/modules/package_manager/tests/src/Kernel/ComposerInspectorTest.php ------ --------------------------------------------------------------------------------- 534 Method Drupal\Tests\package_manager\Kernel\ComposerInspectorTest::mockComposerRunner() return type with generic class Prophecy\Prophecy\ObjectProphecy does not specify its types: T 🪪 missingType.generics ------ --------------------------------------------------------------------------------- ------ --------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/ComplexDataNormalizer.php ------ --------------------------------------------------------------------- 23 Method Drupal\serialization\Normalizer\ComplexDataNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ --------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/ConfigEntityNormalizer.php ------ ---------------------------------------------------------------------- 15 Method Drupal\serialization\Normalizer\ConfigEntityNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/ContentEntityNormalizer.php ------ ----------------------------------------------------------------------- 16 Method Drupal\serialization\Normalizer\ContentEntityNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ------------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php ------ ------------------------------------------------------------------------- 35 Method Drupal\serialization\Normalizer\DateTimeIso8601Normalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------------- ------ ------------------------------------------------------------------ Line core/modules/serialization/src/Normalizer/DateTimeNormalizer.php ------ ------------------------------------------------------------------ 52 Method Drupal\serialization\Normalizer\DateTimeNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------ ------ ---------------------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php ------ ---------------------------------------------------------------------------------- 38 Method Drupal\serialization\Normalizer\EntityReferenceFieldItemNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------------------- ------ -------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/ListNormalizer.php ------ -------------------------------------------------------------------- 21 Method Drupal\serialization\Normalizer\ListNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ -------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/MarkupNormalizer.php ------ ---------------------------------------------------------------------- 15 Method Drupal\serialization\Normalizer\MarkupNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ -------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/NullNormalizer.php ------ -------------------------------------------------------------------- 30 Method Drupal\serialization\Normalizer\NullNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ -------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php ------ ----------------------------------------------------------------------- 18 Method Drupal\serialization\Normalizer\PrimitiveDataNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/TimestampItemNormalizer.php ------ ----------------------------------------------------------------------- 22 Method Drupal\serialization\Normalizer\TimestampItemNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ ------------------------------------------------------------------- Line core/modules/serialization/src/Normalizer/TypedDataNormalizer.php ------ ------------------------------------------------------------------- 15 Method Drupal\serialization\Normalizer\TypedDataNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ------------------------------------------------------------------- ------ ----------------------------------------------------------------------------------------------------------------- Line core/modules/serialization/tests/modules/field_normalization_test/src/Normalization/TextItemSillyNormalizer.php ------ ----------------------------------------------------------------------------------------------------------------- 18 Method Drupal\field_normalization_test\Normalization\TextItemSillyNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------------------------------------------------- ------ ---------------------------------------------------------------------------------------------------------------------- Line core/modules/serialization/tests/modules/test_datatype_boolean_emoji_normalizer/src/Normalizer/BooleanNormalizer.php ------ ---------------------------------------------------------------------------------------------------------------------- 19 Method Drupal\test_datatype_boolean_emoji_normalizer\Normalizer\BooleanNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ---------------------------------------------------------------------------------------------------------------------- ------ --------------------------------------------------------------------------------------------------------------------------- Line core/modules/serialization/tests/modules/test_fieldtype_boolean_emoji_normalizer/src/Normalizer/BooleanItemNormalizer.php ------ --------------------------------------------------------------------------------------------------------------------------- 19 Method Drupal\test_fieldtype_boolean_emoji_normalizer\Normalizer\BooleanItemNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ --------------------------------------------------------------------------------------------------------------------------- ------ ----------------------------------------------------------------------------------------- Line core/modules/serialization/tests/serialization_test/src/SerializationTestNormalizer.php ------ ----------------------------------------------------------------------------------------- 21 Method Drupal\serialization_test\SerializationTestNormalizer::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------------------------- ------ --------------------------------------------------------------------------------------------------- Line core/modules/serialization/tests/src/Unit/Normalizer/ContentEntityNormalizerTest.php ------ --------------------------------------------------------------------------------------------------- 158 Method Drupal\Tests\serialization\Unit\Normalizer\ContentEntityNormalizerTest::createMockFieldListItem() return type with generic interface Drupal\Core\Field\FieldItemListInterface does not specify its types: T 🪪 missingType.generics ------ --------------------------------------------------------------------------------------------------- ------ ----------------------------------------------------------------------------- Line core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php ------ ----------------------------------------------------------------------------- 95 Method Drupal\Tests\serialization\Unit\Normalizer\TestNormalizerBase::normalize() return type with generic class ArrayObject does not specify its types: TKey, TValue 🪪 missingType.generics ------ ----------------------------------------------------------------------------- ------ ------------------------------------------------------------------------------------------------------- Line core/modules/serialization/tests/src/Unit/Normalizer/TimestampItemNormalizerTest.php ------ ------------------------------------------------------------------------------------------------------- 176 Method Drupal\Tests\serialization\Unit\Normalizer\TimestampItemNormalizerTest::createTimestampItemProphecy() return type with generic class Prophecy\Prophecy\ObjectProphecy does not specify its types: T 🪪 missingType.generics ------ ------------------------------------------------------------------------------------------------------- ------ ---------------------------------------------------------------------- Line core/modules/views/tests/src/Unit/Plugin/query/SqlTest.php ------ ---------------------------------------------------------------------- 154 Method Drupal\Tests\views\Unit\Plugin\query\SqlTest::setupEntityTypes() return type with generic class Prophecy\Prophecy\ObjectProphecy does not specify its types: T 🪪 missingType.generics ------ ---------------------------------------------------------------------- ------ ---------------------------------------------------------------------------------- Line core/tests/Drupal/Tests/Core/Cache/Context/IsFrontPathCacheContextTest.php ------ ---------------------------------------------------------------------------------- 41 Method Drupal\Tests\Core\Cache\Context\IsFrontPathCacheContextTest::createPathMatcher() return type with generic class Prophecy\Prophecy\ObjectProphecy does not specify its types: T 🪪 missingType.generics ------ ---------------------------------------------------------------------------------- ------ --------------------------------------------------------------------------- Line core/tests/Drupal/Tests/Core/Entity/EntityConstraintViolationListTest.php ------ --------------------------------------------------------------------------- 105 Method Drupal\Tests\Core\Entity\EntityConstraintViolationListTest::setupEntity() return type with generic interface Drupal\Core\Field\FieldItemListInterface does not specify its types: T 🪪 missingType.generics ------ --------------------------------------------------------------------------- ------ ----------------------------------------------------------------------------------- Line core/tests/Drupal/Tests/Core/Entity/EntityFieldManagerTest.php ------ ----------------------------------------------------------------------------------- 592 Method Drupal\Tests\Core\Entity\EntityFieldManagerTest::setUpEntityWithFieldDefinition() return type with generic interface Prophecy\Prophecy\ProphecyInterface does not specify its types: T 🪪 missingType.generics ------ ----------------------------------------------------------------------------------- ------ ----------------------------------------------------------------------- Line core/tests/Drupal/Tests/Core/Entity/EntityFormTest.php ------ ----------------------------------------------------------------------- 250 Method Drupal\Tests\Core\Entity\EntityFormTest::setUpStorage() return type with generic class Prophecy\Prophecy\ObjectProphecy does not specify its types: T 🪪 missingType.generics ------ ----------------------------------------------------------------------- ------ -------------------------------------------------------------------------------- Line core/tests/Drupal/Tests/Core/Entity/Routing/DefaultHtmlRouteProviderTest.php ------ -------------------------------------------------------------------------------- 387 Method Drupal\Tests\Core\Entity\Routing\DefaultHtmlRouteProviderTest::getEntityType() return type with generic class Prophecy\Prophecy\ObjectProphecy does not specify its types: T 🪪 missingType.generics ------ -------------------------------------------------------------------------------- ------ ---------------------------------------------------------------------------------- Line core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php ------ ---------------------------------------------------------------------------------- 1154 Method Drupal\Tests\Core\Render\RendererPlaceholdersTest::setupThemeManagerForDetails() return type with generic class PHPUnit\Framework\MockObject\Builder\InvocationMocker does not specify its types: TMockedClass 🪪 missingType.generics ------ ---------------------------------------------------------------------------------- ------ ------------------------------------------------------------------------ Line core/tests/PHPStan/tests/ComponentTestDoesNotExtendCoreTestTest.php ------ ------------------------------------------------------------------------ 20 Method Drupal\PHPStan\Tests\ComponentTestDoesNotExtendCoreTestTest::getRule() return type with generic interface PHPStan\Rules\Rule does not specify its types: TNodeType 🪪 missingType.generics ------ ------------------------------------------------------------------------
- 🇳🇱Netherlands spokje
I agree, basically by default, with @mondrake.
Adding the current errors to the baseline would, as already stated by @mondrake, flag any new ones that pop up.
If we added them to be ignored by default with theparameters: ignoreErrors:
"magic" new ones would also be ignored without warning us and thus not give us the chance to fix them, or at the very least give it an attempt.So I'm on #TeamMondrake for adding them to the baseline.
- 🇯🇵Japan ptmkenny
Ok, I went to add them to the baseline, but I couldn't figure out how to do that.
First, I tried using the baseline generated by GitLab CI, but the paths are different.
Then, based on this change record → , I ran
vendor/bin/phpstan analyze --configuration=./core/phpstan.neon.dist --memory-limit=-1 --generate-baseline=core/.phpstan-baseline.php
which is the same code listed in the docs → .
However, when I did this, the generated baseline has removed the comment for the identifier from all entries:
$ignoreErrors = []; $ignoreErrors[] = [ - // identifier: missingType.return 'message' => '#^Method Drupal\\\\Composer\\\\Generator\\\\PackageGenerator\\:\\:generate\\(\\) has no return type specified\\.$#', + 'identifier' => 'missingType.return', 'count' => 1, 'path' => __DIR__ . '/../composer/Generator/PackageGenerator.php', ]; $ignoreErrors[] = [ - // identifier: missingType.return 'message' => '#^Method Drupal\\\\Composer\\\\Plugin\\\\ProjectMessage\\\\Message\\:\\:getText\\(\\) has no return type specified\\.$#', + 'identifier' => 'missingType.return', 'count' => 1, 'path' => __DIR__ . '/../composer/Plugin/ProjectMessage/Message.php', ];
I don't understand why it is doing this and how I can generate a new baseline in the same format as has already been committed.
- 🇺🇸United States nicxvan
The comment has been removed but now it's part of the array.
That's actually better in my opinion cause now it's data.
- 🇯🇵Japan ptmkenny
Ok, tests are all passing and I believe I have addressed all feedback thus far, so I am setting back to "Needs review."