mediawiki/extensions/Wikibase (main)

sourcepatches
From 9e95cf075b817ac128f199690976551ccb6f56b0 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Fri, 13 Dec 2024 07:46:37 +0000
Subject: [PATCH] build: Updating dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

composer:
* mediawiki/mediawiki-codesniffer: dev-master#fd6ecb5ffbe353507ca05387176db02f0f41f6fe → 45.0.0
  The following sniffs are failing and were disabled:
  * Generic.Files.LineLength.TooLong
  * MediaWiki.Arrays.AlphabeticArraySort.Duplicate

  The following sniffs now pass and were enabled:
  * MediaWiki.Usage.StaticClosure.StaticClosure

* mediawiki/mediawiki-phan-config: 0.14.0 → 0.15.0

npm:
* mocha: 10.2.0, ^10.2.0 → 10.8.2, ^10.2.0
  * https://github.com/advisories/GHSA-mwcw-c2x4-8c55
* nanoid: 3.3.3, 3.3.7 → 3.3.8
  * https://github.com/advisories/GHSA-mwcw-c2x4-8c55

Change-Id: Id8756f1d35a2472d348c9b4220186dc68469871e
---
 .phpcs.xml                                    |   3 +-
 client/WikibaseClient.ServiceWiring.php       | 158 ++++----
 client/WikibaseClient.datatypes.php           |  30 +-
 client/WikibaseClient.entitytypes.php         |   4 +-
 client/config/WikibaseClient.default.php      |  28 +-
 client/includes/Api/PageTerms.php             |   2 +-
 client/includes/ClientHooks.php               |   2 +-
 .../DataAccessSnakFormatterFactory.php        |   2 +-
 .../DataBridgeResourceLoaderModules.php       |   2 +-
 .../Hooks/DescriptionProviderHookHandler.php  |   2 +-
 .../includes/Hooks/ExtensionLoadHandler.php   |   2 +-
 .../LoadExtensionSchemaUpdatesHookHandler.php |   2 +-
 .../Hooks/ParserFunctionRegistrant.php        |   4 +-
 .../includes/Serializer/ClientSerializer.php  |   2 +-
 .../Specials/SpecialPagesWithBadges.php       |   2 +-
 client/includes/Store/AddUsagesForPageJob.php |   4 +-
 client/includes/Store/DescriptionLookup.php   |   6 +-
 .../Store/Sql/PagePropsEntityIdLookup.php     |   2 +-
 .../includes/Usage/Sql/EntityUsageTable.php   |   2 +-
 .../Usage/Sql/SqlSubscriptionManager.php      |   2 +-
 .../Sql/SqlUsageTrackerSchemaUpdater.php      |   2 +-
 client/includes/Usage/UsageDeduplicator.php   |   2 +-
 .../RecentChangesModificationTestBase.php     |   2 +-
 .../Changes/AffectedPagesFinderTest.php       |   2 +-
 .../includes/Changes/ChangeHandlerTest.php    |   8 +-
 .../Changes/ChangeRunCoalescerTest.php        |   2 +-
 .../includes/Changes/WikiPageUpdaterTest.php  |   2 +-
 ...ikibaseLibraryInProcessEntityCacheTest.php |   2 +-
 .../Scribunto/WikibaseLibraryTestCase.php     |   4 +-
 ...WikitextPreprocessingSnakFormatterTest.php |   2 +-
 .../integration/includes/DescriptionTest.php  |   2 +-
 .../Hooks/ChangesListLinesHandlerTest.php     |   2 +-
 .../includes/Hooks/LangLinkHandlerTest.php    |   2 +-
 .../includes/Hooks/SidebarHookHandlerTest.php |   2 +-
 .../includes/NamespaceCheckerTest.php         |   4 +-
 .../Specials/SpecialPagesWithBadgesTest.php   |   2 +-
 .../UnexpectedUnconnectedPagePrimerTest.php   |   2 +-
 .../Usage/Sql/EntityUsageTableTest.php        |   2 +-
 .../Usage/UsageLookupContractTester.php       |   2 +-
 .../Usage/UsageTrackerContractTester.php      |   2 +-
 .../Usage/UsageTrackingIntegrationTest.php    |   2 +-
 .../Usage/UsageAccumulatorContractTester.php  |   2 +-
 .../Changes/InjectRCRecordsJobTest.php        |   6 +-
 .../ClientSiteLinkTitleLookupTest.php         |   2 +-
 .../DataAccessSnakFormatterFactoryTest.php    |   2 +-
 .../LanguageAwareRendererTest.php             |   4 +-
 .../StatementGroupRendererFactoryTest.php     |   4 +-
 .../VariantsAwareRendererTest.php             |   2 +-
 .../CachingFallbackBasedTermLookupTest.php    |   6 +-
 .../Scribunto/LuaFunctionCallTrackerTest.php  |   2 +-
 .../SnakSerializationRendererTest.php         |   2 +-
 .../StatementTransclusionInteractorTest.php   |   6 +-
 .../Hooks/EditActionHookHandlerTest.php       |   6 +-
 .../Hooks/ExtensionLoadHandlerTest.php        |   2 +-
 .../Hooks/InfoActionHookHandlerTest.php       |   4 +-
 .../Hooks/LanguageLinkBadgeDisplayTest.php    |   2 +-
 .../Hooks/SiteLinksForDisplayLookupTest.php   |   2 +-
 .../Hooks/SkinAfterPortletHandlerTest.php     |   2 +-
 .../ServiceWiring/DataTypeDefinitionsTest.php |   2 +-
 .../ServiceWiring/DataTypeFactoryTest.php     |   2 +-
 .../DataValueDeserializerTest.php             |   2 +-
 .../ServiceWiring/EntityDifferTest.php        |   4 +-
 .../ServiceWiring/EntityIdComposerTest.php    |   2 +-
 .../ServiceWiring/EntityIdParserTest.php      |   2 +-
 .../EntityNamespaceLookupTest.php             |   2 +-
 .../EntityTypeDefinitionsTest.php             |   2 +-
 .../WikibaseContentLanguagesTest.php          |   2 +-
 .../includes/Store/DescriptionLookupTest.php  |  12 +-
 .../Usage/UsageTrackingSnakFormatterTest.php  |   2 +-
 composer.json                                 |   4 +-
 .../src/ByTypeDispatchingEntityIdLookup.php   |   2 +-
 .../ByTypeDispatchingEntityIdLookupTest.php   |   4 +-
 ...ypeDispatchingEntityRevisionLookupTest.php |   2 +-
 ...peDispatchingPrefetchingTermLookupTest.php |  20 +-
 lib/WikibaseLib.entitytypes.php               |  24 +-
 lib/includes/DataTypeDefinitions.php          |   2 +-
 .../Formatters/AutoCommentFormatter.php       |   2 +-
 lib/includes/LanguageFallbackChainFactory.php |   2 +-
 .../Serialization/CallbackFactory.php         |   4 +-
 .../CacheRetrievingEntityRevisionLookup.php   |   4 +-
 .../RedirectResolvingLatestRevisionLookup.php |   6 +-
 .../Store/RevisionBasedEntityLookup.php       |   6 +-
 ...evisionBasedEntityRedirectTargetLookup.php |   4 +-
 lib/includes/Store/Sql/SiteLinkTable.php      |   2 +-
 .../Terms/DatabaseTermInLangIdsAcquirer.php   |   6 +-
 .../ReplicaPrimaryAwareRecordIdsAcquirer.php  |   2 +-
 .../Sql/WikiPageEntityMetaDataLookup.php      |   2 +-
 .../wikibase/changes/src/EntityChange.php     |   2 +-
 .../changes/tests/EntityChangeTest.php        |   4 +-
 .../wikibase/changes/tests/ItemChangeTest.php |   4 +-
 .../SnakValueDeserializerTest.php             |   2 +-
 .../data-model/tests/unit/NewItem.php         |   2 +-
 lib/resources/Resources.php                   |   6 +-
 lib/tests/phpunit/DataTypeDefinitionsTest.php |   2 +-
 lib/tests/phpunit/DataValueFactoryTest.php    |   2 +-
 lib/tests/phpunit/EntityFactoryTest.php       |   4 +-
 .../phpunit/EntityRevisionLookupTestCase.php  |   4 +-
 lib/tests/phpunit/EntityTypesTest.php         |   2 +-
 ...naryOptionDispatchingSnakFormatterTest.php |   2 +-
 .../DispatchingValueFormatterTest.php         |   4 +-
 ...atterLabelDescriptionLookupFactoryTest.php |   6 +-
 .../GlobeCoordinateDetailsFormatterTest.php   |   2 +-
 .../HtmlExternalIdentifierFormatterTest.php   |   4 +-
 .../ItemPropertyIdHtmlLinkFormatterTest.php   |  14 +-
 ...sProviderEntityIdHtmlLinkFormatterTest.php |   2 +-
 .../OutputFormatSnakFormatterFactoryTest.php  |   6 +-
 .../OutputFormatValueFormatterFactoryTest.php |   6 +-
 .../PropertyValueSnakFormatterTest.php        |   2 +-
 .../QuantityDetailsFormatterTest.php          |   2 +-
 .../DataBridgeReferenceFormatterTest.php      |   2 +-
 .../Formatters/VocabularyUriFormatterTest.php |   2 +-
 .../WikibaseValueFormatterBuildersTest.php    |  10 +-
 ...ikitextExternalIdentifierFormatterTest.php |   4 +-
 ...atchingTermsLookupSearchInteractorTest.php |   8 +-
 .../LanguageFallbackChainFactoryTest.php      |   4 +-
 .../phpunit/LanguageFallbackIndicatorTest.php |   2 +-
 lib/tests/phpunit/MockRepositoryTest.php      |   2 +-
 .../phpunit/Modules/CurrentSiteModuleTest.php |   2 +-
 .../phpunit/Modules/DataTypesModuleTest.php   |   6 +-
 lib/tests/phpunit/Modules/SitesModuleTest.php |   2 +-
 .../CommaSeparatedListTest.php                |   2 +-
 .../Serialization/CallbackFactoryTest.php     |   2 +-
 .../SerializationModifierTest.php             |  10 +-
 .../ServiceBySourceAndTypeDispatcherTest.php  |   2 +-
 .../phpunit/ServiceByTypeDispatcherTest.php   |   2 +-
 lib/tests/phpunit/SimpleCacheTestCase.php     |   8 +-
 ...eDispatchingPropertyDataTypeLookupTest.php |   4 +-
 .../StatsdRecordingSimpleCacheTest.php        |   6 +-
 ...acheRetrievingEntityRevisionLookupTest.php |   2 +-
 .../Store/CachingEntityRevisionLookupTest.php |   2 +-
 .../EntityLinkTargetEntityIdLookupTest.php    |   4 +-
 ...uageFallbackLabelDescriptionLookupTest.php |   4 +-
 .../Store/LatestRevisionIdResultTest.php      |  12 +-
 .../Store/MatchingTermsLookupFactoryTest.php  |   4 +-
 ...hingWikiPageEntityMetaDataAccessorTest.php |   2 +-
 .../Store/RevisionBasedEntityLookupTest.php   |   2 +-
 .../Store/Sql/PropertyInfoTableTest.php       |   2 +-
 .../DatabaseInnerTermStoreCleanerTest.php     |   2 +-
 .../Terms/DatabaseMatchingTermsLookupTest.php |   4 +-
 .../DatabaseTermInLangIdsAcquirerTest.php     |   4 +-
 ...tabaseTermStoreWriterTestGetTermsTrait.php |   6 +-
 .../TermInLangIdsResolverFactoryTest.php      |   2 +-
 ...ypeDispatchingEntityRevisionLookupTest.php |   2 +-
 .../Store/TypeDispatchingEntityStoreTest.php  |   2 +-
 .../phpunit/TermLanguageFallbackChainTest.php |   8 +-
 .../phpunit/WikibaseContentLanguagesTest.php  |   2 +-
 lib/tests/phpunit/WikibaseSettingsTest.php    |   4 +-
 package-lock.json                             | 329 +++++++----------
 ...ratedProperties.OverrideEntityServices.php |  14 +-
 repo/WikibaseRepo.ServiceWiring.php           | 342 +++++++++---------
 repo/WikibaseRepo.datatypes.php               | 106 +++---
 repo/WikibaseRepo.entitytypes.php             |  74 ++--
 repo/config/Wikibase.default.php              |   8 +-
 repo/config/Wikibase.example.php              |   2 +-
 repo/config/Wikibase.searchindex.php          |   2 +-
 repo/includes/Api/CreateClaim.php             |   4 +-
 repo/includes/Api/EditEntity.php              |   4 +-
 repo/includes/Api/EntityTerms.php             |   2 +-
 repo/includes/Api/GetClaims.php               |   4 +-
 repo/includes/Api/LinkTitles.php              |   4 +-
 repo/includes/Api/ListSubscribers.php         |   2 +-
 repo/includes/Api/MergeItems.php              |   2 +-
 repo/includes/Api/ParseValue.php              |   2 +-
 repo/includes/Api/RemoveClaims.php            |   4 +-
 repo/includes/Api/RemoveQualifiers.php        |   4 +-
 repo/includes/Api/RemoveReferences.php        |   4 +-
 repo/includes/Api/ResultBuilder.php           |  10 +-
 repo/includes/Api/SetAliases.php              |   4 +-
 repo/includes/Api/SetClaim.php                |   4 +-
 repo/includes/Api/SetClaimValue.php           |   4 +-
 repo/includes/Api/SetQualifier.php            |   6 +-
 repo/includes/Api/SetReference.php            |   4 +-
 repo/includes/Api/SetSiteLink.php             |   2 +-
 ...patchChangeModificationNotificationJob.php |   2 +-
 .../ChangeModification/DispatchChangesJob.php |   6 +-
 .../ChangeOp/ChangeOpValidationException.php  |   2 +-
 repo/includes/ChangeOp/ChangeOps.php          |   2 +-
 repo/includes/Dumpers/DumpGenerator.php       |   2 +-
 .../EditEntity/MediaWikiEditEntity.php        |   2 +-
 .../FederatedProperties/ApiEntityLookup.php   |   2 +-
 ...ngEntityParserOutputGeneratorDecorator.php |   4 +-
 .../Formatters/EntityLinkFormatterFactory.php |   2 +-
 .../HtmlPageLinkRendererEndHookHandler.php    |   2 +-
 .../MediaWikiLocalizedTextProvider.php        |   2 +-
 repo/includes/Parsers/MwTimeIsoParser.php     |   2 +-
 repo/includes/PropertyServices.php            |   4 +-
 repo/includes/Rdf/RdfBuilder.php              |   6 +-
 repo/includes/Rdf/RdfVocabulary.php           |   4 +-
 repo/includes/RepoHooks.php                   |  12 +-
 .../ParameterizedDescriptionTrait.php         |   2 +-
 .../Specials/SpecialAvailableBadges.php       |   2 +-
 .../Specials/SpecialGoToLinkedPage.php        |   2 +-
 repo/includes/Specials/SpecialItemByTitle.php |   2 +-
 .../Specials/SpecialItemDisambiguation.php    |   2 +-
 .../Specials/SpecialListProperties.php        |   2 +-
 repo/includes/Specials/SpecialMergeItems.php  |   2 +-
 .../includes/Specials/SpecialModifyEntity.php |   2 +-
 .../Specials/SpecialRedirectEntity.php        |   2 +-
 repo/includes/Specials/SpecialSetSiteLink.php |   4 +-
 .../Store/Sql/DatabaseSchemaUpdater.php       |   6 +-
 repo/includes/SummaryFormatter.php            |   2 +-
 repo/includes/WikibasePingback.php            |   4 +-
 repo/maintenance/DumpEntities.php             |   2 +-
 repo/maintenance/ResubmitChanges.php          |   2 +-
 repo/maintenance/addUnitConversions.php       |   2 +-
 repo/maintenance/searchEntities.php           |   2 +-
 repo/maintenance/updateUnits.php              |   2 +-
 repo/resources/Resources.php                  |  20 +-
 .../PatchItem/PatchedItemValidator.php        |   2 +-
 ...ookupPropertyRevisionMetadataRetriever.php |   2 +-
 repo/rest-api/src/WbRestApi.ServiceWiring.php | 218 +++++------
 .../CreatePropertyValidatorTest.php           |   8 +-
 .../PatchItem/PatchedItemValidatorTest.php    |   8 +-
 .../PatchedPropertyValidatorTest.php          |   8 +-
 ...lsAndDescriptionsContentsValidatorTest.php |   8 +-
 .../Validation/StatementsValidatorTest.php    |   2 +-
 .../EntityUpdaterItemUpdaterTest.php          |   2 +-
 .../EntityUpdaterPropertyUpdaterTest.php      |   2 +-
 ...erCreationResponseHeaderMiddlewareTest.php |   4 +-
 .../UnexpectedErrorHandlerMiddlewareTest.php  |   4 +-
 .../includes/Actions/EditEntityActionTest.php |   2 +-
 .../Actions/HistoryEntityActionTest.php       |   4 +-
 .../includes/Api/ApiJsonFormatTest.php        |   2 +-
 .../includes/Api/CreateRedirectTest.php       |   2 +-
 ...tyClearChangeOpValidateIntegrationTest.php |   4 +-
 .../includes/Api/EntitySavingHelperTest.php   |   4 +-
 .../Api/EntityTermSearchHelperTest.php        |   2 +-
 .../includes/Api/FormatSnakValueTest.php      |  32 +-
 .../phpunit/includes/Api/MergeItemsTest.php   |   8 +-
 .../includes/Api/RemoveQualifiersTest.php     |   4 +-
 .../includes/Api/RemoveReferencesTest.php     |   4 +-
 .../includes/Api/ResultBuilderTest.php        |   6 +-
 .../includes/Api/SetClaimValueTest.php        |   2 +-
 .../Api/StatementModificationHelperTest.php   |   8 +-
 .../includes/Api/WikibaseApiTestCase.php      |   2 +-
 ...ilderBasedDataTypeValidatorFactoryTest.php |   8 +-
 ...tchChangeVisibilityNotificationJobTest.php |   4 +-
 .../ChangeOp/ChangeOpTestMockProvider.php     |   8 +-
 .../includes/ChangeOp/ChangeOpsMergeTest.php  |   2 +-
 .../includes/ChangeOp/ChangeOpsTest.php       |   6 +-
 .../AliasChangeOpDeserializationTester.php    |   2 +-
 .../FingerprintChangeOpDeserializerTest.php   |   2 +-
 ...adgeChangeOpSerializationValidatorTest.php |  10 +-
 .../SiteLinksChangeOpDeserializerTest.php     |  12 +-
 .../ChangeOp/EntityChangeOpProviderTest.php   |   8 +-
 .../ContentHandlerEntityIdLookupTest.php      |   4 +-
 .../ContentHandlerEntityTitleLookupTest.php   |   4 +-
 .../Content/DataUpdateAdapterTest.php         |   4 +-
 .../Content/EntityContentFactoryTest.php      |   4 +-
 .../Content/EntityContentTestCase.php         |   2 +-
 .../includes/Content/ItemContentTest.php      |   6 +-
 .../Diff/BasicEntityDiffVisualizerTest.php    |   2 +-
 .../Diff/ClaimDifferenceVisualizerTest.php    |   8 +-
 .../DispatchingEntityDiffVisualizerTest.php   |   4 +-
 .../Diff/EntityDiffVisualizerFactoryTest.php  |   6 +-
 .../includes/Diff/ItemDiffVisualizerTest.php  |   2 +-
 .../Dumpers/JsonDataTypeInjectorTest.php      |   2 +-
 .../Dumpers/JsonDumpGeneratorTest.php         |   6 +-
 .../includes/Dumpers/RdfDumpGeneratorTest.php |   4 +-
 .../EntityReferenceExtractorDelegatorTest.php |   4 +-
 .../StatementEntityReferenceExtractorTest.php |   2 +-
 .../phpunit/includes/EntityTypesTest.php      |   2 +-
 .../Api/RemoveClaimsTest.php                  |   2 +-
 .../Api/RemoveQualifiersTest.php              |   2 +-
 .../ApiEntitySearchHelperTest.php             |   2 +-
 ...ferenceEngineViewHeaderHookHandlerTest.php |   4 +-
 ...tityParserOutputGeneratorDecoratorTest.php |   4 +-
 .../Hooks/EditFilterHookRunnerTest.php        |   2 +-
 .../EntityLinkFormatterFactoryTest.php        |   2 +-
 ...PageLinkRendererEndHookHandlerTestBase.php |  10 +-
 .../LabelPrefetchHookHandlerTestBase.php      |   4 +-
 .../Hooks/PageHistoryPagerHookHandlerTest.php |   4 +-
 .../Hooks/RecentChangeSaveHookHandlerTest.php |   4 +-
 .../Hooks/ShowSearchHitHandlerTest.php        |   8 +-
 .../SummaryParsingPrefetchHelperTest.php      |   2 +-
 .../includes/IO/EntityIdReaderTest.php        |   2 +-
 .../Interactors/ItemMergeInteractorTest.php   |   2 +-
 .../RedirectCreationInteractorTest.php        |   2 +-
 .../Interactors/TokenCheckInteractorTest.php  |   2 +-
 .../EntityDataRequestHandlerTest.php          |   2 +-
 .../EntityDataSerializationServiceTest.php    |   4 +-
 .../LinkedData/EntityDataUriManagerTest.php   |   2 +-
 ...angeOpValidationExceptionLocalizerTest.php |   2 +-
 .../MessageParameterFormatterTest.php         |   4 +-
 .../includes/Merge/StatementsMergerTest.php   |   2 +-
 ...tchingEntityMetaTagsCreatorFactoryTest.php |   2 +-
 .../DispatchingEntityViewFactoryTest.php      |   2 +-
 .../EntityParserOutputGeneratorTestBase.php   |   6 +-
 .../ExternalLinksDataUpdaterTest.php          |   4 +-
 .../ImageLinksDataUpdaterTest.php             |   2 +-
 .../ParserOutputJsConfigBuilderTest.php       |   2 +-
 .../ReferencedEntitiesDataUpdaterTest.php     |   4 +-
 .../ParserOutput/TextInjectorTest.php         |   2 +-
 .../Parsers/TimeParserFactoryTest.php         |   4 +-
 .../includes/PropertyDataTypeChangerTest.php  |   2 +-
 .../phpunit/includes/PropertyServicesTest.php |   4 +-
 .../Rdf/FullStatementRdfBuilderTest.php       |   6 +-
 .../includes/Rdf/NTriplesRdfTestHelper.php    |   2 +-
 .../Rdf/PropertyStubRdfBuilderTest.php        |   2 +-
 .../phpunit/includes/Rdf/RdfBuilderTest.php   |   2 +-
 .../includes/Rdf/SnakRdfBuilderTest.php       |   2 +-
 .../ExternalIdentifierRdfBuilderTest.php      |   2 +-
 repo/tests/phpunit/includes/RepoHooksTest.php |  10 +-
 .../HTMLForm/HTMLAliasesFieldTest.php         |   2 +-
 .../HTMLForm/HTMLItemReferenceFieldTest.php   |   2 +-
 .../Specials/SpecialAvailableBadgesTest.php   |   2 +-
 .../Specials/SpecialEntityDataTest.php        |   2 +-
 .../Specials/SpecialGoToLinkedPageTest.php    |   8 +-
 .../Specials/SpecialItemByTitleTest.php       |   4 +-
 .../SpecialItemDisambiguationTest.php         |   4 +-
 .../Specials/SpecialListPropertiesTest.php    |   2 +-
 .../Specials/SpecialMergeItemsTest.php        |   6 +-
 .../includes/Specials/SpecialNewItemTest.php  |   4 +-
 .../Specials/SpecialNewPropertyTest.php       |   2 +-
 .../Specials/SpecialRedirectEntityTest.php    |   4 +-
 .../SpecialWikibaseRepoPageTestBase.php       |   2 +-
 .../CachingPrefetchingTermLookupTest.php      |   2 +-
 .../Store/CachingPropertyInfoTest.php         |   2 +-
 .../Store/Sql/SqlEntityIdPagerFactoryTest.php |   2 +-
 .../Store/Sql/SqlEntityIdPagerTest.php        |   2 +-
 .../Sql/SqlSiteLinkConflictLookupTest.php     |   2 +-
 .../Sql/WikiPageEntityMetaDataLookupTest.php  |   2 +-
 .../Sql/WikiPageEntityRedirectLookupTest.php  |   4 +-
 .../Store/Sql/WikiPageEntityStoreTest.php     |  10 +-
 ...eDispatchingEntityTitleStoreLookupTest.php |   2 +-
 .../WikiPageEntityRevisionLookupTest.php      |   2 +-
 ...kiPageEntityStorePermissionCheckerTest.php |   2 +-
 .../includes/ValidatorBuildersTest.php        |   4 +-
 .../CommonsMediaExistsValidatorTest.php       |   2 +-
 .../FingerprintUniquenessValidatorTest.php    |   4 +-
 .../InterWikiLinkExistsValidatorTest.php      |   2 +-
 .../includes/Validators/SnakValidatorTest.php |   2 +-
 .../Validators/StringLengthValidatorTest.php  |   2 +-
 .../ValidatorErrorLocalizerTest.php           |   2 +-
 .../includes/ValueParserFactoryTest.php       |   6 +-
 .../phpunit/maintenance/DumpJsonTest.php      |   2 +-
 .../tests/phpunit/maintenance/DumpRdfTest.php |   2 +-
 .../AllTypesEntityDeserializerTest.php        |   4 +-
 .../ContentModelMappingsTest.php              |   2 +-
 .../ServiceWiring/DataTypeDefinitionsTest.php |   2 +-
 .../DataTypeValidatorFactoryTest.php          |   2 +-
 .../EntityChangeOpProviderTest.php            |   2 +-
 .../unit/ServiceWiring/EntityDifferTest.php   |   4 +-
 .../unit/ServiceWiring/EntityFactoryTest.php  |   2 +-
 .../ServiceWiring/EntityIdComposerTest.php    |   2 +-
 .../unit/ServiceWiring/EntityIdParserTest.php |   4 +-
 .../EntityNamespaceLookupTest.php             |   2 +-
 .../unit/ServiceWiring/EntityPatcherTest.php  |   4 +-
 .../EntitySearchHelperCallbacksTest.php       |   2 +-
 .../EntityTypeDefinitionsTest.php             |   2 +-
 .../ServiceWiring/FulltextSearchTypesTest.php |   4 +-
 .../ItemVocabularyBaseUriTest.php             |   2 +-
 .../LocalEntityNamespaceLookupTest.php        |   2 +-
 .../ServiceWiring/ValueParserFactoryTest.php  |   2 +-
 .../ValueSnakRdfBuilderFactoryTest.php        |   2 +-
 .../WikibaseContentLanguagesTest.php          |   2 +-
 .../includes/Hooks/EntityDataPurgerTest.php   |   2 +-
 view/resources.php                            |   6 +-
 view/resources/templates.php                  |   2 +-
 view/src/DummyLocalizedTextProvider.php       |   2 +-
 view/src/FallbackChainModuleMethods.php       |   2 +-
 view/src/SiteLinksView.php                    |   2 +-
 .../Renderer/TermboxRemoteRenderer.php        |   2 +-
 ...ngerprintableEntityMetaTagsCreatorTest.php |   4 +-
 .../phpunit/SimpleEntityTermsViewTest.php     |   6 +-
 view/tests/phpunit/SiteLinksViewTest.php      |   2 +-
 .../phpunit/StatementGroupListViewTest.php    |   2 +-
 .../Renderer/TermboxRemoteRendererTest.php    |   2 +-
 view/tests/phpunit/TermsListViewTest.php      |   4 +-
 .../ToolbarEditSectionGeneratorTest.php       |   2 +-
 370 files changed, 1268 insertions(+), 1342 deletions(-)

diff --git a/.phpcs.xml b/.phpcs.xml
index 645bd49..8225d26 100644
--- a/.phpcs.xml
+++ b/.phpcs.xml
@@ -1,11 +1,12 @@
 <?xml version="1.0"?>
 <ruleset>
 	<rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+		<exclude name="Generic.Files.LineLength.TooLong" />
+		<exclude name="MediaWiki.Arrays.AlphabeticArraySort.Duplicate" />
 		<exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate" />
 		<exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
 		<exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
 		<exclude name="MediaWiki.Commenting.FunctionComment.MissingParamTag" />
-		<exclude name="MediaWiki.Usage.StaticClosure.StaticClosure" />
 	</rule>
 
 	<!-- Starting a function's body with an empty line can be helpful after a very large header.
diff --git a/client/WikibaseClient.ServiceWiring.php b/client/WikibaseClient.ServiceWiring.php
index 1d20831..2ad59c4 100644
--- a/client/WikibaseClient.ServiceWiring.php
+++ b/client/WikibaseClient.ServiceWiring.php
@@ -137,7 +137,7 @@ use Wikibase\Lib\WikibaseSettings;
 /** @phpcs-require-sorted-array */
 return [
 
-	'WikibaseClient.AffectedPagesFinder' => function ( MediaWikiServices $services ): AffectedPagesFinder {
+	'WikibaseClient.AffectedPagesFinder' => static function ( MediaWikiServices $services ): AffectedPagesFinder {
 		return new AffectedPagesFinder(
 			WikibaseClient::getStore( $services )->getUsageLookup(),
 			$services->getTitleFactory(),
@@ -148,11 +148,11 @@ return [
 		);
 	},
 
-	'WikibaseClient.AliasTermBuffer' => function ( MediaWikiServices $services ): AliasTermBuffer {
+	'WikibaseClient.AliasTermBuffer' => static function ( MediaWikiServices $services ): AliasTermBuffer {
 		return WikibaseClient::getPrefetchingTermLookup( $services );
 	},
 
-	'WikibaseClient.BaseDataModelDeserializerFactory' => function ( MediaWikiServices $services ): DeserializerFactory {
+	'WikibaseClient.BaseDataModelDeserializerFactory' => static function ( MediaWikiServices $services ): DeserializerFactory {
 		$dataTypeDefs = WikibaseClient::getDataTypeDefinitions( $services );
 
 		return new DeserializerFactory(
@@ -164,7 +164,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.ChangeHandler' => function ( MediaWikiServices $services ): ChangeHandler {
+	'WikibaseClient.ChangeHandler' => static function ( MediaWikiServices $services ): ChangeHandler {
 		$logger = WikibaseClient::getLogger( $services );
 
 		$pageUpdater = new WikiPageUpdater(
@@ -197,7 +197,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.ClientDomainDbFactory' => function( MediaWikiServices $services ): ClientDomainDbFactory {
+	'WikibaseClient.ClientDomainDbFactory' => static function( MediaWikiServices $services ): ClientDomainDbFactory {
 		$lbFactory = $services->getDBLoadBalancerFactory();
 
 		return new ClientDomainDbFactory(
@@ -206,7 +206,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.CompactBaseDataModelSerializerFactory' => function ( MediaWikiServices $services ): SerializerFactory {
+	'WikibaseClient.CompactBaseDataModelSerializerFactory' => static function ( MediaWikiServices $services ): SerializerFactory {
 		/* Note: Unlike in repo, we do not pass
 		 * SerializerFactory::OPTION_SERIALIZE_USE_OBJECTS_FOR_EMPTY_MAPS
 		 * because as of January 2024, Scribunto does not support stdClass objects as Lua arrays */
@@ -217,7 +217,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.CompactEntitySerializer' => function ( MediaWikiServices $services ): Serializer {
+	'WikibaseClient.CompactEntitySerializer' => static function ( MediaWikiServices $services ): Serializer {
 		$serializerFactoryCallbacks = WikibaseClient::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::SERIALIZER_FACTORY_CALLBACK );
 		$baseSerializerFactory = WikibaseClient::getCompactBaseDataModelSerializerFactory( $services );
@@ -230,13 +230,13 @@ return [
 		return new DispatchingSerializer( $serializers );
 	},
 
-	'WikibaseClient.DataAccessSettings' => function ( MediaWikiServices $services ): DataAccessSettings {
+	'WikibaseClient.DataAccessSettings' => static function ( MediaWikiServices $services ): DataAccessSettings {
 		return new DataAccessSettings(
 			WikibaseClient::getSettings( $services )->getSetting( 'maxSerializedEntitySize' )
 		);
 	},
 
-	'WikibaseClient.DataAccessSnakFormatterFactory' => function ( MediaWikiServices $services ): DataAccessSnakFormatterFactory {
+	'WikibaseClient.DataAccessSnakFormatterFactory' => static function ( MediaWikiServices $services ): DataAccessSnakFormatterFactory {
 		return new DataAccessSnakFormatterFactory(
 			WikibaseClient::getLanguageFallbackChainFactory( $services ),
 			WikibaseClient::getSnakFormatterFactory( $services ),
@@ -247,7 +247,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.DataTypeDefinitions' => function ( MediaWikiServices $services ): DataTypeDefinitions {
+	'WikibaseClient.DataTypeDefinitions' => static function ( MediaWikiServices $services ): DataTypeDefinitions {
 		$baseDataTypes = require __DIR__ . '/../lib/WikibaseLib.datatypes.php';
 		$clientDataTypes = require __DIR__ . '/WikibaseClient.datatypes.php';
 
@@ -266,13 +266,13 @@ return [
 		);
 	},
 
-	'WikibaseClient.DataTypeFactory' => function ( MediaWikiServices $services ): DataTypeFactory {
+	'WikibaseClient.DataTypeFactory' => static function ( MediaWikiServices $services ): DataTypeFactory {
 		return new DataTypeFactory(
 			WikibaseClient::getDataTypeDefinitions( $services )->getValueTypes()
 		);
 	},
 
-	'WikibaseClient.DataValueDeserializer' => function ( MediaWikiServices $services ): DataValueDeserializer {
+	'WikibaseClient.DataValueDeserializer' => static function ( MediaWikiServices $services ): DataValueDeserializer {
 		return new DataValueDeserializer( array_merge(
 			WikibaseClient::getDataTypeDefinitions( $services )->getDataValueDeserializerBuilders(),
 			[ 'unknown' => UnknownValue::class ]
@@ -285,7 +285,7 @@ return [
 	 * @warning This is for use with {@link WikibaseClient::getDefaultSnakFormatterBuilders()} during bootstrap only!
 	 * Program logic should use {@link WikibaseClient::getSnakFormatterFactory()} instead!
 	 */
-	'WikibaseClient.DefaultSnakFormatterBuilders' => function ( MediaWikiServices $services ): WikibaseSnakFormatterBuilders {
+	'WikibaseClient.DefaultSnakFormatterBuilders' => static function ( MediaWikiServices $services ): WikibaseSnakFormatterBuilders {
 		return new WikibaseSnakFormatterBuilders(
 			WikibaseClient::getDefaultValueFormatterBuilders( $services ),
 			WikibaseClient::getPropertyInfoLookup( $services ),
@@ -294,7 +294,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.DefaultValueFormatterBuilders' => function ( MediaWikiServices $services ): WikibaseValueFormatterBuilders {
+	'WikibaseClient.DefaultValueFormatterBuilders' => static function ( MediaWikiServices $services ): WikibaseValueFormatterBuilders {
 		$clientStore = WikibaseClient::getStore( $services );
 		$settings = WikibaseClient::getSettings( $services );
 		$entityTitleLookup = new ClientSiteLinkTitleLookup(
@@ -336,7 +336,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.DescriptionLookup' => function ( MediaWikiServices $services ): DescriptionLookup {
+	'WikibaseClient.DescriptionLookup' => static function ( MediaWikiServices $services ): DescriptionLookup {
 		return new DescriptionLookup(
 			WikibaseClient::getEntityIdLookup( $services ),
 			WikibaseClient::getTermBuffer( $services ),
@@ -344,7 +344,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.EntityChangeFactory' => function ( MediaWikiServices $services ): EntityChangeFactory {
+	'WikibaseClient.EntityChangeFactory' => static function ( MediaWikiServices $services ): EntityChangeFactory {
 		// TODO: take this from a setting or registry.
 		$changeClasses = [
 			Item::ENTITY_TYPE => ItemChange::class,
@@ -360,7 +360,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.EntityChangeLookup' => function ( MediaWikiServices $services ): EntityChangeLookup {
+	'WikibaseClient.EntityChangeLookup' => static function ( MediaWikiServices $services ): EntityChangeLookup {
 		return new EntityChangeLookup(
 			WikibaseClient::getEntityChangeFactory( $services ),
 			WikibaseClient::getEntityIdParser( $services ),
@@ -369,7 +369,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.EntityDiffer' => function ( MediaWikiServices $services ): EntityDiffer {
+	'WikibaseClient.EntityDiffer' => static function ( MediaWikiServices $services ): EntityDiffer {
 		$entityDiffer = new EntityDiffer();
 		$entityTypeDefinitions = WikibaseClient::getEntityTypeDefinitions( $services );
 		$builders = $entityTypeDefinitions->get( EntityTypeDefinitions::ENTITY_DIFFER_STRATEGY_BUILDER );
@@ -379,14 +379,14 @@ return [
 		return $entityDiffer;
 	},
 
-	'WikibaseClient.EntityIdComposer' => function ( MediaWikiServices $services ): EntityIdComposer {
+	'WikibaseClient.EntityIdComposer' => static function ( MediaWikiServices $services ): EntityIdComposer {
 		return new EntityIdComposer(
 			WikibaseClient::getEntityTypeDefinitions( $services )
 				->get( EntityTypeDefinitions::ENTITY_ID_COMPOSER_CALLBACK )
 		);
 	},
 
-	'WikibaseClient.EntityIdLookup' => function ( MediaWikiServices $services ): EntityIdLookup {
+	'WikibaseClient.EntityIdLookup' => static function ( MediaWikiServices $services ): EntityIdLookup {
 		$entityTypeDefinitions = WikibaseClient::getEntityTypeDefinitions( $services );
 		return new ByTypeDispatchingEntityIdLookup(
 			$entityTypeDefinitions->get( EntityTypeDefinitions::CONTENT_MODEL_ID ),
@@ -399,20 +399,20 @@ return [
 		);
 	},
 
-	'WikibaseClient.EntityIdParser' => function ( MediaWikiServices $services ): EntityIdParser {
+	'WikibaseClient.EntityIdParser' => static function ( MediaWikiServices $services ): EntityIdParser {
 		return new DispatchingEntityIdParser(
 			WikibaseClient::getEntityTypeDefinitions( $services )->getEntityIdBuilders()
 		);
 	},
 
-	'WikibaseClient.EntityLookup' => function ( MediaWikiServices $services ): EntityLookup {
+	'WikibaseClient.EntityLookup' => static function ( MediaWikiServices $services ): EntityLookup {
 		return WikibaseClient::getStore( $services )->getEntityLookup();
 	},
 
-	'WikibaseClient.EntityNamespaceLookup' => function ( MediaWikiServices $services ): EntityNamespaceLookup {
+	'WikibaseClient.EntityNamespaceLookup' => static function ( MediaWikiServices $services ): EntityNamespaceLookup {
 		return array_reduce(
 			WikibaseClient::getEntitySourceDefinitions( $services )->getSources(),
-			function ( EntityNamespaceLookup $nsLookup, DatabaseEntitySource $source ): EntityNamespaceLookup {
+			static function ( EntityNamespaceLookup $nsLookup, DatabaseEntitySource $source ): EntityNamespaceLookup {
 				return $nsLookup->merge( new EntityNamespaceLookup(
 					$source->getEntityNamespaceIds(),
 					$source->getEntitySlotNames()
@@ -422,11 +422,11 @@ return [
 		);
 	},
 
-	'WikibaseClient.EntityRevisionLookup' => function ( MediaWikiServices $services ): EntityRevisionLookup {
+	'WikibaseClient.EntityRevisionLookup' => static function ( MediaWikiServices $services ): EntityRevisionLookup {
 		return WikibaseClient::getStore( $services )->getEntityRevisionLookup();
 	},
 
-	'WikibaseClient.EntitySourceAndTypeDefinitions' => function ( MediaWikiServices $services ): EntitySourceAndTypeDefinitions {
+	'WikibaseClient.EntitySourceAndTypeDefinitions' => static function ( MediaWikiServices $services ): EntitySourceAndTypeDefinitions {
 		// note: when adding support for further entity source types here,
 		// also adjust the default 'entitySources' setting to copy sources of those types from the repo
 		return new EntitySourceAndTypeDefinitions(
@@ -435,7 +435,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.EntitySourceDefinitions' => function ( MediaWikiServices $services ): EntitySourceDefinitions {
+	'WikibaseClient.EntitySourceDefinitions' => static function ( MediaWikiServices $services ): EntitySourceDefinitions {
 		$settings = WikibaseClient::getSettings( $services );
 		$subEntityTypesMapper = new SubEntityTypesMapper( WikibaseClient::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::SUB_ENTITY_TYPES ) );
@@ -445,7 +445,7 @@ return [
 		return $configParser->newDefinitionsFromConfigArray( $settings->getSetting( 'entitySources' ), $subEntityTypesMapper );
 	},
 
-	'WikibaseClient.EntityTypeDefinitions' => function ( MediaWikiServices $services ): EntityTypeDefinitions {
+	'WikibaseClient.EntityTypeDefinitions' => static function ( MediaWikiServices $services ): EntityTypeDefinitions {
 		$baseEntityTypes = require __DIR__ . '/../lib/WikibaseLib.entitytypes.php';
 		$clientEntityTypes = require __DIR__ . '/WikibaseClient.entitytypes.php';
 
@@ -459,7 +459,7 @@ return [
 		return new EntityTypeDefinitions( $entityTypes );
 	},
 
-	'WikibaseClient.ExternalUserNames' => function ( MediaWikiServices $services ): ?ExternalUserNames {
+	'WikibaseClient.ExternalUserNames' => static function ( MediaWikiServices $services ): ?ExternalUserNames {
 		$databaseName = WikibaseClient::getItemAndPropertySource( $services )->getDatabaseName();
 		if ( $databaseName !== false ) {
 			$siteLookup = $services->getSiteLookup();
@@ -493,7 +493,7 @@ return [
 		return new ExternalUserNames( $interwikiPrefix, false );
 	},
 
-	'WikibaseClient.FallbackLabelDescriptionLookupFactory' => function (
+	'WikibaseClient.FallbackLabelDescriptionLookupFactory' => static function (
 		MediaWikiServices $services
 	): FallbackLabelDescriptionLookupFactory {
 		return new FallbackLabelDescriptionLookupFactory(
@@ -505,13 +505,13 @@ return [
 		);
 	},
 
-	'WikibaseClient.HookRunner' => function ( MediaWikiServices $services ): WikibaseClientHookRunner {
+	'WikibaseClient.HookRunner' => static function ( MediaWikiServices $services ): WikibaseClientHookRunner {
 		return new WikibaseClientHookRunner(
 			$services->getHookContainer()
 		);
 	},
 
-	'WikibaseClient.ItemAndPropertySource' => function ( MediaWikiServices $services ): EntitySource {
+	'WikibaseClient.ItemAndPropertySource' => static function ( MediaWikiServices $services ): EntitySource {
 		$itemAndPropertySourceName = WikibaseClient::getSettings( $services )->getSetting( 'itemAndPropertySourceName' );
 		$sources = WikibaseClient::getEntitySourceDefinitions( $services )->getSources();
 		foreach ( $sources as $source ) {
@@ -523,7 +523,7 @@ return [
 		throw new LogicException( 'No source configured: ' . $itemAndPropertySourceName );
 	},
 
-	'WikibaseClient.ItemSource' => function ( MediaWikiServices $services ): EntitySource {
+	'WikibaseClient.ItemSource' => static function ( MediaWikiServices $services ): EntitySource {
 		$itemSource = WikibaseClient::getEntitySourceDefinitions( $services )
 			->getDatabaseSourceForEntityType( Item::ENTITY_TYPE );
 
@@ -534,7 +534,7 @@ return [
 		return $itemSource;
 	},
 
-	'WikibaseClient.KartographerEmbeddingHandler' => function (
+	'WikibaseClient.KartographerEmbeddingHandler' => static function (
 		MediaWikiServices $services
 	): ?CachingKartographerEmbeddingHandler {
 		$settings = WikibaseClient::getSettings( $services );
@@ -551,7 +551,7 @@ return [
 		}
 	},
 
-	'WikibaseClient.LangLinkHandlerFactory' => function ( MediaWikiServices $services ): LangLinkHandlerFactory {
+	'WikibaseClient.LangLinkHandlerFactory' => static function ( MediaWikiServices $services ): LangLinkHandlerFactory {
 		return new LangLinkHandlerFactory(
 			WikibaseClient::getLanguageLinkBadgeDisplay( $services ),
 			WikibaseClient::getNamespaceChecker( $services ),
@@ -565,17 +565,17 @@ return [
 		);
 	},
 
-	'WikibaseClient.LangLinkSiteGroup' => function ( MediaWikiServices $services ): string {
+	'WikibaseClient.LangLinkSiteGroup' => static function ( MediaWikiServices $services ): string {
 		return WikibaseClient::getSettings( $services )->getSetting( 'languageLinkSiteGroup' ) ??
 			WikibaseClient::getSiteGroup( $services );
 	},
 
-	'WikibaseClient.LangLinkSiteGroups' => function ( MediaWikiServices $services ): array {
+	'WikibaseClient.LangLinkSiteGroups' => static function ( MediaWikiServices $services ): array {
 		return WikibaseClient::getSettings( $services )->getSetting( 'languageLinkAllowedSiteGroups' ) ??
 			[ WikibaseClient::getLangLinkSiteGroup( $services ) ];
 	},
 
-	'WikibaseClient.LanguageFallbackChainFactory' => function ( MediaWikiServices $services ): LanguageFallbackChainFactory {
+	'WikibaseClient.LanguageFallbackChainFactory' => static function ( MediaWikiServices $services ): LanguageFallbackChainFactory {
 		return new LanguageFallbackChainFactory(
 			WikibaseClient::getTermsLanguages( $services ),
 			$services->getLanguageFactory(),
@@ -584,21 +584,21 @@ return [
 		);
 	},
 
-	'WikibaseClient.LanguageLinkBadgeDisplay' => function ( MediaWikiServices $services ): LanguageLinkBadgeDisplay {
+	'WikibaseClient.LanguageLinkBadgeDisplay' => static function ( MediaWikiServices $services ): LanguageLinkBadgeDisplay {
 		return new LanguageLinkBadgeDisplay(
 			WikibaseClient::getSidebarLinkBadgeDisplay( $services )
 		);
 	},
 
-	'WikibaseClient.Logger' => function ( MediaWikiServices $services ): LoggerInterface {
+	'WikibaseClient.Logger' => static function ( MediaWikiServices $services ): LoggerInterface {
 		return LoggerFactory::getInstance( 'Wikibase' );
 	},
 
-	'WikibaseClient.MessageInLanguageProvider' => function ( MediaWikiServices $services ): MessageInLanguageProvider {
+	'WikibaseClient.MessageInLanguageProvider' => static function ( MediaWikiServices $services ): MessageInLanguageProvider {
 		return new MediaWikiMessageInLanguageProvider();
 	},
 
-	'WikibaseClient.MobileSite' => function ( MediaWikiServices $services ): bool {
+	'WikibaseClient.MobileSite' => static function ( MediaWikiServices $services ): bool {
 		if ( $services->has( 'MobileFrontend.Context' ) ) {
 			$mobileContext = $services->get( 'MobileFrontend.Context' );
 			return $mobileContext->shouldDisplayMobileView();
@@ -606,7 +606,7 @@ return [
 		return false;
 	},
 
-	'WikibaseClient.NamespaceChecker' => function ( MediaWikiServices $services ): NamespaceChecker {
+	'WikibaseClient.NamespaceChecker' => static function ( MediaWikiServices $services ): NamespaceChecker {
 		$settings = WikibaseClient::getSettings( $services );
 		return new NamespaceChecker(
 			$settings->getSetting( 'excludeNamespaces' ),
@@ -615,7 +615,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.OtherProjectsSidebarGeneratorFactory' => function (
+	'WikibaseClient.OtherProjectsSidebarGeneratorFactory' => static function (
 		MediaWikiServices $services
 	): OtherProjectsSidebarGeneratorFactory {
 		return new OtherProjectsSidebarGeneratorFactory(
@@ -629,7 +629,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.OtherProjectsSitesProvider' => function ( MediaWikiServices $services ): OtherProjectsSitesProvider {
+	'WikibaseClient.OtherProjectsSitesProvider' => static function ( MediaWikiServices $services ): OtherProjectsSitesProvider {
 		$settings = WikibaseClient::getSettings( $services );
 
 		return new CachingOtherProjectsSitesProvider(
@@ -645,7 +645,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.ParserOutputDataUpdater' => function ( MediaWikiServices $services ): ClientParserOutputDataUpdater {
+	'WikibaseClient.ParserOutputDataUpdater' => static function ( MediaWikiServices $services ): ClientParserOutputDataUpdater {
 		$settings = WikibaseClient::getSettings( $services );
 
 		return new ClientParserOutputDataUpdater(
@@ -658,7 +658,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.PrefetchingTermLookup' => function ( MediaWikiServices $services ): PrefetchingTermLookup {
+	'WikibaseClient.PrefetchingTermLookup' => static function ( MediaWikiServices $services ): PrefetchingTermLookup {
 		return new SourceAndTypeDispatchingPrefetchingTermLookup(
 			new ServiceBySourceAndTypeDispatcher(
 				PrefetchingTermLookup::class,
@@ -673,7 +673,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.PropertyDataTypeLookup' => function ( MediaWikiServices $services ): PropertyDataTypeLookup {
+	'WikibaseClient.PropertyDataTypeLookup' => static function ( MediaWikiServices $services ): PropertyDataTypeLookup {
 		$infoLookup = WikibaseClient::getPropertyInfoLookup( $services );
 		return new PropertyInfoDataTypeLookup(
 			$infoLookup,
@@ -682,7 +682,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.PropertyInfoLookup' => function ( MediaWikiServices $services ): PropertyInfoLookup {
+	'WikibaseClient.PropertyInfoLookup' => static function ( MediaWikiServices $services ): PropertyInfoLookup {
 		$settings = WikibaseClient::getSettings( $services );
 		$cacheKeyGroup = $settings->getSetting( 'sharedCacheKeyGroup' );
 		$cacheDuration = $settings->getSetting( 'sharedCacheDuration' );
@@ -706,7 +706,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.PropertyLabelResolver' => function ( MediaWikiServices $services ): PropertyLabelResolver {
+	'WikibaseClient.PropertyLabelResolver' => static function ( MediaWikiServices $services ): PropertyLabelResolver {
 		// Required services
 		$languageCode = $services->getContentLanguageCode()->toString();
 
@@ -742,7 +742,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.PropertyOrderProvider' => function ( MediaWikiServices $services ): CachingPropertyOrderProvider {
+	'WikibaseClient.PropertyOrderProvider' => static function ( MediaWikiServices $services ): CachingPropertyOrderProvider {
 		$title = $services->getTitleFactory()->newFromTextThrow( 'MediaWiki:Wikibase-SortedProperties' );
 		$innerProvider = new WikiPagePropertyOrderProvider( $services->getWikiPageFactory(), $title );
 
@@ -765,7 +765,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.PropertyParserFunctionRunner' => function ( MediaWikiServices $services ): Runner {
+	'WikibaseClient.PropertyParserFunctionRunner' => static function ( MediaWikiServices $services ): Runner {
 		$settings = WikibaseClient::getSettings( $services );
 		return new Runner(
 			WikibaseClient::getStatementGroupRendererFactory( $services ),
@@ -777,7 +777,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.PropertySource' => function ( MediaWikiServices $services ): EntitySource {
+	'WikibaseClient.PropertySource' => static function ( MediaWikiServices $services ): EntitySource {
 		$propertySource = WikibaseClient::getEntitySourceDefinitions( $services )
 			->getDatabaseSourceForEntityType( Property::ENTITY_TYPE );
 
@@ -788,7 +788,7 @@ return [
 		return $propertySource;
 	},
 
-	'WikibaseClient.RecentChangeFactory' => function ( MediaWikiServices $services ): RecentChangeFactory {
+	'WikibaseClient.RecentChangeFactory' => static function ( MediaWikiServices $services ): RecentChangeFactory {
 		$contentLanguage = $services->getContentLanguage();
 		$siteLookup = $services->getSiteLookup();
 
@@ -806,7 +806,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.RedirectResolvingLatestRevisionLookup' => function (
+	'WikibaseClient.RedirectResolvingLatestRevisionLookup' => static function (
 		MediaWikiServices $services
 	): RedirectResolvingLatestRevisionLookup {
 		return new RedirectResolvingLatestRevisionLookup(
@@ -814,7 +814,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.ReferenceFormatterFactory' => function ( MediaWikiServices $services ): ReferenceFormatterFactory {
+	'WikibaseClient.ReferenceFormatterFactory' => static function ( MediaWikiServices $services ): ReferenceFormatterFactory {
 		$logger = WikibaseClient::getLogger( $services );
 		return new ReferenceFormatterFactory(
 			WikibaseClient::getDataAccessSnakFormatterFactory( $services ),
@@ -827,7 +827,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.RepoDomainDbFactory' => function ( MediaWikiServices $services ): RepoDomainDbFactory {
+	'WikibaseClient.RepoDomainDbFactory' => static function ( MediaWikiServices $services ): RepoDomainDbFactory {
 		$lbFactory = $services->getDBLoadBalancerFactory();
 
 		return new RepoDomainDbFactory(
@@ -837,7 +837,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.RepoItemUriParser' => function ( MediaWikiServices $services ): EntityIdParser {
+	'WikibaseClient.RepoItemUriParser' => static function ( MediaWikiServices $services ): EntityIdParser {
 		$itemConceptUriBase = WikibaseClient::getItemSource( $services )
 			->getConceptBaseUri();
 
@@ -847,7 +847,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.RepoLinker' => function ( MediaWikiServices $services ): RepoLinker {
+	'WikibaseClient.RepoLinker' => static function ( MediaWikiServices $services ): RepoLinker {
 		$settings = WikibaseClient::getSettings( $services );
 
 		return new RepoLinker(
@@ -858,7 +858,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.RestrictedEntityLookupFactory' => function ( MediaWikiServices $services ): RestrictedEntityLookupFactory {
+	'WikibaseClient.RestrictedEntityLookupFactory' => static function ( MediaWikiServices $services ): RestrictedEntityLookupFactory {
 		$settings = WikibaseClient::getSettings( $services );
 		$disabledEntityTypesEntityLookup = new DisabledEntityTypesEntityLookup(
 			WikibaseClient::getEntityLookup( $services ),
@@ -870,11 +870,11 @@ return [
 		);
 	},
 
-	'WikibaseClient.Settings' => function ( MediaWikiServices $services ): SettingsArray {
+	'WikibaseClient.Settings' => static function ( MediaWikiServices $services ): SettingsArray {
 		return WikibaseSettings::getClientSettings();
 	},
 
-	'WikibaseClient.SidebarLinkBadgeDisplay' => function ( MediaWikiServices $services ): SidebarLinkBadgeDisplay {
+	'WikibaseClient.SidebarLinkBadgeDisplay' => static function ( MediaWikiServices $services ): SidebarLinkBadgeDisplay {
 		$badgeClassNames = WikibaseClient::getSettings( $services )->getSetting( 'badgeClassNames' );
 		$labelDescriptionLookupFactory = WikibaseClient::getFallbackLabelDescriptionLookupFactory( $services );
 		$lang = WikibaseClient::getUserLanguage( $services );
@@ -886,7 +886,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.Site' => function ( MediaWikiServices $services ): Site {
+	'WikibaseClient.Site' => static function ( MediaWikiServices $services ): Site {
 		$settings = WikibaseClient::getSettings( $services );
 		$globalId = $settings->getSetting( 'siteGlobalID' );
 		$localId = $settings->getSetting( 'siteLocalID' );
@@ -923,7 +923,7 @@ return [
 		return $site;
 	},
 
-	'WikibaseClient.SiteGroup' => function ( MediaWikiServices $services ): string {
+	'WikibaseClient.SiteGroup' => static function ( MediaWikiServices $services ): string {
 		$settings = WikibaseClient::getSettings( $services );
 		$siteGroup = $settings->getSetting( 'siteGroup' );
 
@@ -944,7 +944,7 @@ return [
 		return $siteGroup;
 	},
 
-	'WikibaseClient.SnakFormatterFactory' => function ( MediaWikiServices $services ): OutputFormatSnakFormatterFactory {
+	'WikibaseClient.SnakFormatterFactory' => static function ( MediaWikiServices $services ): OutputFormatSnakFormatterFactory {
 		return new OutputFormatSnakFormatterFactory(
 			WikibaseClient::getDataTypeDefinitions( $services )
 				->getSnakFormatterFactoryCallbacks(),
@@ -955,7 +955,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.StatementGroupRendererFactory' => function ( MediaWikiServices $services ): StatementGroupRendererFactory {
+	'WikibaseClient.StatementGroupRendererFactory' => static function ( MediaWikiServices $services ): StatementGroupRendererFactory {
 		return new StatementGroupRendererFactory(
 			WikibaseClient::getPropertyLabelResolver( $services ),
 			new SnaksFinder(),
@@ -969,7 +969,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.Store' => function ( MediaWikiServices $services ): ClientStore {
+	'WikibaseClient.Store' => static function ( MediaWikiServices $services ): ClientStore {
 		return new DirectSqlStore(
 			WikibaseClient::getEntityIdParser( $services ),
 			WikibaseClient::getEntityIdLookup( $services ),
@@ -982,22 +982,22 @@ return [
 		);
 	},
 
-	'WikibaseClient.StringNormalizer' => function ( MediaWikiServices $services ): StringNormalizer {
+	'WikibaseClient.StringNormalizer' => static function ( MediaWikiServices $services ): StringNormalizer {
 		return new StringNormalizer();
 	},
 
-	'WikibaseClient.TermBuffer' => function ( MediaWikiServices $services ): TermBuffer {
+	'WikibaseClient.TermBuffer' => static function ( MediaWikiServices $services ): TermBuffer {
 		return WikibaseClient::getPrefetchingTermLookup( $services );
 	},
 
-	'WikibaseClient.TermFallbackCache' => function ( MediaWikiServices $services ): TermFallbackCacheFacade {
+	'WikibaseClient.TermFallbackCache' => static function ( MediaWikiServices $services ): TermFallbackCacheFacade {
 		return new TermFallbackCacheFacade(
 			WikibaseClient::getTermFallbackCacheFactory( $services )->getTermFallbackCache(),
 			WikibaseClient::getSettings( $services )->getSetting( 'sharedCacheDuration' )
 		);
 	},
 
-	'WikibaseClient.TermFallbackCacheFactory' => function ( MediaWikiServices $services ): TermFallbackCacheFactory {
+	'WikibaseClient.TermFallbackCacheFactory' => static function ( MediaWikiServices $services ): TermFallbackCacheFactory {
 		$settings = WikibaseClient::getSettings( $services );
 		return new TermFallbackCacheFactory(
 			$settings->getSetting( 'sharedCacheType' ),
@@ -1010,7 +1010,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.TermInLangIdsResolverFactory' => function (
+	'WikibaseClient.TermInLangIdsResolverFactory' => static function (
 		MediaWikiServices $services
 	): TermInLangIdsResolverFactory {
 		return new TermInLangIdsResolverFactory(
@@ -1020,16 +1020,16 @@ return [
 		);
 	},
 
-	'WikibaseClient.TermLookup' => function ( MediaWikiServices $services ): TermLookup {
+	'WikibaseClient.TermLookup' => static function ( MediaWikiServices $services ): TermLookup {
 		return WikibaseClient::getPrefetchingTermLookup( $services );
 	},
 
-	'WikibaseClient.TermsLanguages' => function ( MediaWikiServices $services ): ContentLanguages {
+	'WikibaseClient.TermsLanguages' => static function ( MediaWikiServices $services ): ContentLanguages {
 		return WikibaseClient::getWikibaseContentLanguages( $services )
 			->getContentLanguages( WikibaseContentLanguages::CONTEXT_TERM );
 	},
 
-	'WikibaseClient.UsageAccumulatorFactory' => function ( MediaWikiServices $services ): UsageAccumulatorFactory {
+	'WikibaseClient.UsageAccumulatorFactory' => static function ( MediaWikiServices $services ): UsageAccumulatorFactory {
 		$usageModifierLimits = WikibaseClient::getSettings( $services )->getSetting(
 			'entityUsageModifierLimits'
 		);
@@ -1042,7 +1042,7 @@ return [
 		);
 	},
 
-	'WikibaseClient.UserLanguage' => function ( MediaWikiServices $services ): Language {
+	'WikibaseClient.UserLanguage' => static function ( MediaWikiServices $services ): Language {
 		global $wgLang;
 
 		// TODO: define a LanguageProvider service instead of using a global directly.
@@ -1057,7 +1057,7 @@ return [
 		return $wgLang;
 	},
 
-	'WikibaseClient.ValueFormatterFactory' => function ( MediaWikiServices $services ): OutputFormatValueFormatterFactory {
+	'WikibaseClient.ValueFormatterFactory' => static function ( MediaWikiServices $services ): OutputFormatValueFormatterFactory {
 		return new OutputFormatValueFormatterFactory(
 			WikibaseClient::getDataTypeDefinitions( $services )
 				->getFormatterFactoryCallbacks( DataTypeDefinitions::PREFIXED_MODE ),
@@ -1066,14 +1066,14 @@ return [
 		);
 	},
 
-	'WikibaseClient.WikibaseContentLanguages' => function ( MediaWikiServices $services ): WikibaseContentLanguages {
+	'WikibaseClient.WikibaseContentLanguages' => static function ( MediaWikiServices $services ): WikibaseContentLanguages {
 		return WikibaseContentLanguages::getDefaultInstance(
 			$services->getHookContainer(),
 			$services->getLanguageNameUtils()
 		);
 	},
 
-	'WikibaseClient.WikibaseServices' => function ( MediaWikiServices $services ): WikibaseServices {
+	'WikibaseClient.WikibaseServices' => static function ( MediaWikiServices $services ): WikibaseServices {
 		$entitySourceDefinitions = WikibaseClient::getEntitySourceDefinitions( $services );
 		$singleEntitySourceServicesFactory = new SingleEntitySourceServicesFactory(
 			WikibaseClient::getEntityIdParser( $services ),
diff --git a/client/WikibaseClient.datatypes.php b/client/WikibaseClient.datatypes.php
index 443af80..4576a5b 100644
--- a/client/WikibaseClient.datatypes.php
+++ b/client/WikibaseClient.datatypes.php
@@ -32,7 +32,7 @@ use Wikibase\Client\WikibaseClient;
 use Wikibase\DataModel\Entity\EntityIdValue;
 use Wikibase\Lib\Formatters\UnmappedEntityIdValueFormatter;
 
-return call_user_func( function() {
+return call_user_func( static function() {
 	// NOTE: 'formatter-factory-callback' callbacks act as glue between the high level interface
 	// OutputFormatValueFormatterFactory and the low level factory for validators for well
 	// known data types, the WikibaseValueFormatterBuilders class.
@@ -44,88 +44,88 @@ return call_user_func( function() {
 
 	return [
 		'VT:bad' => [
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newUnDeserializableValueFormatter( $format, $options );
 			},
 		],
 		'VT:globecoordinate' => [
 			'deserializer-builder' => GlobeCoordinateValue::class,
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newGlobeCoordinateFormatter( $format, $options );
 			},
 		],
 		'VT:monolingualtext' => [
 			'deserializer-builder' => MonolingualTextValue::class,
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newMonolingualFormatter( $format, $options );
 			},
 		],
 		'VT:quantity' => [
 			'deserializer-builder' => QuantityValue::class,
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newQuantityFormatter( $format, $options );
 			},
 		],
 		'VT:string' => [
 			'deserializer-builder' => StringValue::class,
-			'formatter-factory-callback' => function( $format ) {
+			'formatter-factory-callback' => static function( $format ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newStringFormatter( $format );
 			},
 		],
 		'PT:url' => [
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newUrlFormatter( $format, $options );
 			},
 		],
 		'PT:commonsMedia' => [
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newCommonsMediaFormatter( $format, $options );
 			},
 		],
 		'PT:geo-shape' => [
-			'formatter-factory-callback' => function( $format ) {
+			'formatter-factory-callback' => static function( $format ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newGeoShapeFormatter( $format );
 			},
 		],
 		'PT:tabular-data' => [
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newTabularDataFormatter( $format, $options );
 			},
 		],
 		'VT:time' => [
 			'deserializer-builder' => TimeValue::class,
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newTimeFormatter( $format, $options );
 			},
 		],
 		'VT:wikibase-entityid' => [
-			'deserializer-builder' => function ( $value ) {
+			'deserializer-builder' => static function ( $value ) {
 				return isset( $value['id'] )
 					? new EntityIdValue( WikibaseClient::getEntityIdParser()->parse( $value['id'] ) )
 					: EntityIdValue::newFromArray( $value );
 			},
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseClient::getDefaultValueFormatterBuilders();
 				return $factory->newEntityIdFormatter( $format, $options );
 			},
 		],
 		'VT:wikibase-unmapped-entityid' => [
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				return new UnmappedEntityIdValueFormatter();
 			},
 		],
 		'PT:external-id' => [
-			'snak-formatter-factory-callback' => function( $format ) {
+			'snak-formatter-factory-callback' => static function( $format ) {
 				$factory = WikibaseClient::getDefaultSnakFormatterBuilders();
 				return $factory->newExternalIdentifierFormatter( $format );
 			},
diff --git a/client/WikibaseClient.entitytypes.php b/client/WikibaseClient.entitytypes.php
index 8fac1fb..7b24e8d 100644
--- a/client/WikibaseClient.entitytypes.php
+++ b/client/WikibaseClient.entitytypes.php
@@ -30,7 +30,7 @@ use Wikimedia\ObjectCache\EmptyBagOStuff;
 
 return [
 	'item' => [
-		Def::PREFETCHING_TERM_LOOKUP_CALLBACK => function ( DatabaseEntitySource $entitySource ) {
+		Def::PREFETCHING_TERM_LOOKUP_CALLBACK => static function ( DatabaseEntitySource $entitySource ) {
 			$termIdsResolver = WikibaseClient::getTermInLangIdsResolverFactory()
 				->getResolverForEntitySource( $entitySource );
 
@@ -38,7 +38,7 @@ return [
 		},
 	],
 	'property' => [
-		Def::PREFETCHING_TERM_LOOKUP_CALLBACK => function ( DatabaseEntitySource $entitySource ) {
+		Def::PREFETCHING_TERM_LOOKUP_CALLBACK => static function ( DatabaseEntitySource $entitySource ) {
 			$mwServices = MediaWikiServices::getInstance();
 
 			$cacheSecret = hash( 'sha256', $mwServices->getMainConfig()->get( 'SecretKey' ) );
diff --git a/client/config/WikibaseClient.default.php b/client/config/WikibaseClient.default.php
index 8eef5a6..f1b54eb 100644
--- a/client/config/WikibaseClient.default.php
+++ b/client/config/WikibaseClient.default.php
@@ -23,7 +23,7 @@ require_once __DIR__ . '/../includes/Usage/EntityUsage.php';
  * @author Daniel Kinzler
  */
 
-return call_user_func( function() {
+return call_user_func( static function() {
 	global $wgLanguageCode;
 
 	$defaults = [
@@ -105,7 +105,7 @@ return call_user_func( function() {
 		'sharedCacheType' => $GLOBALS['wgMainCacheType'],
 
 		// Batch size for UpdateHtmlCacheJob
-		'purgeCacheBatchSize' => function ( SettingsArray $settings ) {
+		'purgeCacheBatchSize' => static function ( SettingsArray $settings ) {
 			$mainConfig = MediaWikiServices::getInstance()->getMainConfig();
 			return $settings->hasSetting( 'wikiPageUpdaterDbBatchSize' )
 				? $settings->getSetting( 'wikiPageUpdaterDbBatchSize' )
@@ -113,7 +113,7 @@ return call_user_func( function() {
 		},
 
 		// Batch size for InjectRCRecordsJob
-		'recentChangesBatchSize' => function ( SettingsArray $settings ) {
+		'recentChangesBatchSize' => static function ( SettingsArray $settings ) {
 			$mainConfig = MediaWikiServices::getInstance()->getMainConfig();
 			return $settings->hasSetting( 'wikiPageUpdaterDbBatchSize' )
 				? $settings->getSetting( 'wikiPageUpdaterDbBatchSize' )
@@ -173,12 +173,12 @@ return call_user_func( function() {
 	//      We use the pseudo-setting thisWikiIsTheRepo to store this information.
 	//      thisWikiIsTheRepo should really never be overwritten, except for testing.
 
-	$defaults['thisWikiIsTheRepo'] = function ( SettingsArray $settings ) {
+	$defaults['thisWikiIsTheRepo'] = static function ( SettingsArray $settings ) {
 		// determine whether the repo extension is present
 		return WikibaseSettings::isRepoEnabled();
 	};
 
-	$defaults['entitySources'] = function ( SettingsArray $settings ) {
+	$defaults['entitySources'] = static function ( SettingsArray $settings ) {
 		if ( $settings->getSetting( 'thisWikiIsTheRepo' ) ) {
 			// copy the repo’s effective entitySources setting
 			$entitySourceDefinitions = WikibaseRepo::getEntitySourceDefinitions();
@@ -212,7 +212,7 @@ return call_user_func( function() {
 		throw new Exception( 'entitySources must be configured for non-repo client wikis' );
 	};
 
-	$defaults['itemAndPropertySourceName'] = function ( SettingsArray $settings ) {
+	$defaults['itemAndPropertySourceName'] = static function ( SettingsArray $settings ) {
 		if ( $settings->getSetting( 'thisWikiIsTheRepo' ) ) {
 			return WikibaseRepo::getSettings()->getSetting( 'localEntitySourceName' );
 		}
@@ -220,35 +220,35 @@ return call_user_func( function() {
 		return 'local';
 	};
 
-	$defaults['repoSiteName'] = function ( SettingsArray $settings ) {
+	$defaults['repoSiteName'] = static function ( SettingsArray $settings ) {
 		// This uses $wgSitename if this wiki is the repo.  Otherwise, set this to
 		// either an i18n message key and the message will be used, if it exists.
 		// If repo site name does not need translation, then set this as a string.
 		return $settings->getSetting( 'thisWikiIsTheRepo' ) ? $GLOBALS['wgSitename'] : 'Wikibase';
 	};
 
-	$defaults['repoUrl'] = function ( SettingsArray $settings ) {
+	$defaults['repoUrl'] = static function ( SettingsArray $settings ) {
 		// use $wgServer if this wiki is the repo, otherwise default to wikidata.org
 		return $settings->getSetting( 'thisWikiIsTheRepo' ) ? $GLOBALS['wgServer'] : '//www.wikidata.org';
 	};
 
-	$defaults['repoArticlePath'] = function ( SettingsArray $settings ) {
+	$defaults['repoArticlePath'] = static function ( SettingsArray $settings ) {
 		// use $wgArticlePath if this wiki is the repo, otherwise default to /wiki/$1
 		return $settings->getSetting( 'thisWikiIsTheRepo' ) ? $GLOBALS['wgArticlePath'] : '/wiki/$1';
 	};
 
-	$defaults['repoScriptPath'] = function ( SettingsArray $settings ) {
+	$defaults['repoScriptPath'] = static function ( SettingsArray $settings ) {
 		// use $wgScriptPath if this wiki is the repo, otherwise default to /w
 		return $settings->getSetting( 'thisWikiIsTheRepo' ) ? $GLOBALS['wgScriptPath'] : '/w';
 	};
 
-	$defaults['siteGlobalID'] = function ( SettingsArray $settings ) {
+	$defaults['siteGlobalID'] = static function ( SettingsArray $settings ) {
 		// The database name is a sane default for the site ID.
 		// On Wikimedia sites, this is always correct.
 		return $GLOBALS['wgDBname'];
 	};
 
-	$defaults['repoSiteId'] = function( SettingsArray $settings ) {
+	$defaults['repoSiteId'] = static function( SettingsArray $settings ) {
 		$entitySources = $settings->getSetting( 'entitySources' );
 		$itemAndPropertySourceName = $settings->getSetting( 'itemAndPropertySourceName' );
 		$repoDatabase = $entitySources[$itemAndPropertySourceName]['repoDatabase'];
@@ -258,12 +258,12 @@ return call_user_func( function() {
 			: $repoDatabase;
 	};
 
-	$defaults['siteGroup'] = function ( SettingsArray $settings ) {
+	$defaults['siteGroup'] = static function ( SettingsArray $settings ) {
 		// by default lookup from SiteLookup, can override with setting for performance reasons
 		return null;
 	};
 
-	$defaults['otherProjectsLinks'] = function ( SettingsArray $settings ) {
+	$defaults['otherProjectsLinks'] = static function ( SettingsArray $settings ) {
 		$otherProjectsSitesProvider = WikibaseClient::getOtherProjectsSitesProvider();
 		return $otherProjectsSitesProvider->getOtherProjectsSiteIds( $settings->getSetting( 'siteLinkGroups' ) );
 	};
diff --git a/client/includes/Api/PageTerms.php b/client/includes/Api/PageTerms.php
index 648c465..fba86ed 100644
--- a/client/includes/Api/PageTerms.php
+++ b/client/includes/Api/PageTerms.php
@@ -171,7 +171,7 @@ class PageTerms extends ApiQueryBase {
 	 */
 	private function getEntityToPageMap( array $entityIds ): array {
 		$entityIdsStrings = array_map(
-			function( EntityId $id ) {
+			static function( EntityId $id ) {
 				return $id->getSerialization();
 			},
 			$entityIds
diff --git a/client/includes/ClientHooks.php b/client/includes/ClientHooks.php
index 9232f53..96bde04 100644
--- a/client/includes/ClientHooks.php
+++ b/client/includes/ClientHooks.php
@@ -240,7 +240,7 @@ final class ClientHooks {
 		return $cache->getWithSetCallback(
 			$key,
 			$cache::TTL_DAY, // when changing the TTL, also update linkItemTags in options.md
-			function () {
+			static function () {
 				$site = WikibaseClient::getSite();
 				$currentSite = [
 					'globalSiteId' => $site->getGlobalId(),
diff --git a/client/includes/DataAccess/DataAccessSnakFormatterFactory.php b/client/includes/DataAccess/DataAccessSnakFormatterFactory.php
index 042e87b..933b31b 100644
--- a/client/includes/DataAccess/DataAccessSnakFormatterFactory.php
+++ b/client/includes/DataAccess/DataAccessSnakFormatterFactory.php
@@ -149,7 +149,7 @@ class DataAccessSnakFormatterFactory {
 		return new EscapingSnakFormatter(
 			SnakFormatter::FORMAT_WIKI,
 			$snakFormatter,
-			function( $str ) {
+			static function( $str ) {
 				return $str === '' ? '' : "<span>$str</span>";
 			}
 		);
diff --git a/client/includes/DataBridge/DataBridgeResourceLoaderModules.php b/client/includes/DataBridge/DataBridgeResourceLoaderModules.php
index e7919ad..1dca291 100644
--- a/client/includes/DataBridge/DataBridgeResourceLoaderModules.php
+++ b/client/includes/DataBridge/DataBridgeResourceLoaderModules.php
@@ -77,7 +77,7 @@ class DataBridgeResourceLoaderModules implements ResourceLoaderRegisterModulesHo
 		$clientSettings = WikibaseClient::getSettings();
 		return new MediaWikiConfigModule(
 			[
-				'getconfigvalueprovider' => function () use ( $clientSettings ) {
+				'getconfigvalueprovider' => static function () use ( $clientSettings ) {
 					return new DataBridgeConfigValueProvider(
 						$clientSettings,
 						MediaWikiServices::getInstance()->getMainConfig()->get( 'EditSubmitButtonLabelPublish' )
diff --git a/client/includes/Hooks/DescriptionProviderHookHandler.php b/client/includes/Hooks/DescriptionProviderHookHandler.php
index 5e8a54a..b366842 100644
--- a/client/includes/Hooks/DescriptionProviderHookHandler.php
+++ b/client/includes/Hooks/DescriptionProviderHookHandler.php
@@ -45,7 +45,7 @@ class DescriptionProviderHookHandler implements SearchResultProvideDescriptionHo
 			$sources = [ DescriptionLookup::SOURCE_CENTRAL, DescriptionLookup::SOURCE_LOCAL ];
 		}
 
-		$pageIdTitles = array_map( function ( PageIdentity $identity ) {
+		$pageIdTitles = array_map( static function ( PageIdentity $identity ) {
 			return Title::makeTitle( $identity->getNamespace(), $identity->getDBkey() );
 		}, $pageIdentities );
 
diff --git a/client/includes/Hooks/ExtensionLoadHandler.php b/client/includes/Hooks/ExtensionLoadHandler.php
index f83b7cb..b9929fb 100644
--- a/client/includes/Hooks/ExtensionLoadHandler.php
+++ b/client/includes/Hooks/ExtensionLoadHandler.php
@@ -80,7 +80,7 @@ class ExtensionLoadHandler {
 				'WikibaseClient.BaseDataModelDeserializerFactory',
 				'WikibaseClient.ReferenceFormatterFactory',
 			],
-			'factory' => function (
+			'factory' => static function (
 				ApiMain $apiMain,
 				string $moduleName,
 				ParserFactory $parserFactory,
diff --git a/client/includes/Hooks/LoadExtensionSchemaUpdatesHookHandler.php b/client/includes/Hooks/LoadExtensionSchemaUpdatesHookHandler.php
index 74ae5a2..0239f03 100644
--- a/client/includes/Hooks/LoadExtensionSchemaUpdatesHookHandler.php
+++ b/client/includes/Hooks/LoadExtensionSchemaUpdatesHookHandler.php
@@ -47,7 +47,7 @@ class LoadExtensionSchemaUpdatesHookHandler implements LoadExtensionSchemaUpdate
 
 		$primer->setProgressReporter(
 			new CallbackMessageReporter(
-				function( $msg ) use ( $dbUpdater ) {
+				static function( $msg ) use ( $dbUpdater ) {
 					$dbUpdater->output( "\t$msg\n" );
 				}
 			)
diff --git a/client/includes/Hooks/ParserFunctionRegistrant.php b/client/includes/Hooks/ParserFunctionRegistrant.php
index 67d0597..bea8f13 100644
--- a/client/includes/Hooks/ParserFunctionRegistrant.php
+++ b/client/includes/Hooks/ParserFunctionRegistrant.php
@@ -80,7 +80,7 @@ class ParserFunctionRegistrant implements ParserFirstCallInitHook, GetDoubleUnde
 
 		$parser->setFunctionHook(
 			'property',
-			function( Parser $parser, PPFrame $frame, array $args ) {
+			static function( Parser $parser, PPFrame $frame, array $args ) {
 				return Runner::renderEscapedPlainText( $parser, $frame, $args );
 			},
 			Parser::SFH_OBJECT_ARGS
@@ -88,7 +88,7 @@ class ParserFunctionRegistrant implements ParserFirstCallInitHook, GetDoubleUnde
 
 		$parser->setFunctionHook(
 			'statements',
-			function( Parser $parser, PPFrame $frame, array $args ) {
+			static function( Parser $parser, PPFrame $frame, array $args ) {
 				return Runner::renderRichWikitext( $parser, $frame, $args );
 			},
 			Parser::SFH_OBJECT_ARGS
diff --git a/client/includes/Serializer/ClientSerializer.php b/client/includes/Serializer/ClientSerializer.php
index 437e2ff..bda885e 100644
--- a/client/includes/Serializer/ClientSerializer.php
+++ b/client/includes/Serializer/ClientSerializer.php
@@ -50,7 +50,7 @@ abstract class ClientSerializer implements Serializer {
 	protected function omitEmptyArrays( array $serialization ) {
 		return array_filter(
 			$serialization,
-			function( $value ) {
+			static function( $value ) {
 				return $value !== [];
 			}
 		);
diff --git a/client/includes/Specials/SpecialPagesWithBadges.php b/client/includes/Specials/SpecialPagesWithBadges.php
index 3c5ab96..3a9434b 100644
--- a/client/includes/Specials/SpecialPagesWithBadges.php
+++ b/client/includes/Specials/SpecialPagesWithBadges.php
@@ -144,7 +144,7 @@ class SpecialPagesWithBadges extends QueryPage {
 	private function getOptionsArray() {
 		/** @var ItemId[] $badgeItemIds */
 		$badgeItemIds = array_map(
-			function( $badgeId ) {
+			static function( $badgeId ) {
 				return new ItemId( $badgeId );
 			},
 			$this->badgeIds
diff --git a/client/includes/Store/AddUsagesForPageJob.php b/client/includes/Store/AddUsagesForPageJob.php
index 8cc6a9c..398d128 100644
--- a/client/includes/Store/AddUsagesForPageJob.php
+++ b/client/includes/Store/AddUsagesForPageJob.php
@@ -38,7 +38,7 @@ class AddUsagesForPageJob extends Job {
 	 */
 	public static function newSpec( Title $title, array $usages ) {
 		// NOTE: Map EntityUsage objects to scalar arrays, for JSON serialization in the job queue.
-		$usages = array_map( function ( EntityUsage $usage ) {
+		$usages = array_map( static function ( EntityUsage $usage ) {
 			return $usage->asArray();
 		}, $usages );
 
@@ -98,7 +98,7 @@ class AddUsagesForPageJob extends Job {
 	private function getUsages() {
 		// Turn serialized usage info into EntityUsage objects
 		$idParser = $this->idParser;
-		$usages = array_map( function ( array $usageArray ) use ( $idParser ) {
+		$usages = array_map( static function ( array $usageArray ) use ( $idParser ) {
 			// This is the inverse of EntityUsage::asArray()
 			return new EntityUsage(
 				$idParser->parse( $usageArray['entityId'] ),
diff --git a/client/includes/Store/DescriptionLookup.php b/client/includes/Store/DescriptionLookup.php
index aa468e8..6d77a1e 100644
--- a/client/includes/Store/DescriptionLookup.php
+++ b/client/includes/Store/DescriptionLookup.php
@@ -70,7 +70,7 @@ class DescriptionLookup {
 	 *   will be omitted.
 	 */
 	public function getDescriptions( array $titles, $sources, &$actualSources = null ) {
-		$pageIds = array_map( function ( Title $title ) {
+		$pageIds = array_map( static function ( Title $title ) {
 			return $title->getArticleID();
 		}, $titles );
 		$titlesByPageId = array_combine( $pageIds, $titles );
@@ -143,7 +143,7 @@ class DescriptionLookup {
 			return [];
 		}
 
-		$languages = array_unique( array_map( function ( Title $title ) {
+		$languages = array_unique( array_map( static function ( Title $title ) {
 			return $title->getPageLanguage()->getCode();
 		}, $titlesByPageId ) );
 
@@ -154,7 +154,7 @@ class DescriptionLookup {
 			$languages
 		);
 
-		$pageIdsByEntityId = array_flip( array_map( function ( EntityId $entityId ) {
+		$pageIdsByEntityId = array_flip( array_map( static function ( EntityId $entityId ) {
 			return $entityId->getSerialization();
 		}, $entityIdsByPageId ) );
 		$descriptionsByPageId = [];
diff --git a/client/includes/Store/Sql/PagePropsEntityIdLookup.php b/client/includes/Store/Sql/PagePropsEntityIdLookup.php
index b8d1f06..9b55212 100644
--- a/client/includes/Store/Sql/PagePropsEntityIdLookup.php
+++ b/client/includes/Store/Sql/PagePropsEntityIdLookup.php
@@ -44,7 +44,7 @@ class PagePropsEntityIdLookup implements EntityIdLookup {
 	 * @return EntityId[]
 	 */
 	public function getEntityIds( array $titles ): array {
-		$pages = array_filter( $titles, function( Title $title ): bool {
+		$pages = array_filter( $titles, static function( Title $title ): bool {
 			return $title->canExist();
 		} );
 		return array_map( [ $this->idParser, 'parse' ],
diff --git a/client/includes/Usage/Sql/EntityUsageTable.php b/client/includes/Usage/Sql/EntityUsageTable.php
index 3e44324..5fc15fd 100644
--- a/client/includes/Usage/Sql/EntityUsageTable.php
+++ b/client/includes/Usage/Sql/EntityUsageTable.php
@@ -217,7 +217,7 @@ class EntityUsageTable {
 	 * @return string[]
 	 */
 	private function getEntityIdStrings( array $entityIds ): array {
-		return array_map( function( EntityId $id ) {
+		return array_map( static function( EntityId $id ) {
 			return $id->getSerialization();
 		}, $entityIds );
 	}
diff --git a/client/includes/Usage/Sql/SqlSubscriptionManager.php b/client/includes/Usage/Sql/SqlSubscriptionManager.php
index 1369ba9..0ea33ed 100644
--- a/client/includes/Usage/Sql/SqlSubscriptionManager.php
+++ b/client/includes/Usage/Sql/SqlSubscriptionManager.php
@@ -37,7 +37,7 @@ class SqlSubscriptionManager implements SubscriptionManager {
 	 * @return string[]
 	 */
 	private function idsToString( array $entityIds ): array {
-		return array_map( function( EntityId $id ) {
+		return array_map( static function( EntityId $id ) {
 			return $id->getSerialization();
 		}, $entityIds );
 	}
diff --git a/client/includes/Usage/Sql/SqlUsageTrackerSchemaUpdater.php b/client/includes/Usage/Sql/SqlUsageTrackerSchemaUpdater.php
index 6601559..eacc291 100644
--- a/client/includes/Usage/Sql/SqlUsageTrackerSchemaUpdater.php
+++ b/client/includes/Usage/Sql/SqlUsageTrackerSchemaUpdater.php
@@ -56,7 +56,7 @@ class SqlUsageTrackerSchemaUpdater implements LoadExtensionSchemaUpdatesHook {
 
 		$primer->setProgressReporter(
 			new CallbackMessageReporter(
-				function( $msg ) use ( $dbUpdater ) {
+				static function( $msg ) use ( $dbUpdater ) {
 					$dbUpdater->output( "\t$msg\n" );
 				}
 			)
diff --git a/client/includes/Usage/UsageDeduplicator.php b/client/includes/Usage/UsageDeduplicator.php
index 6c53753..899b1d0 100644
--- a/client/includes/Usage/UsageDeduplicator.php
+++ b/client/includes/Usage/UsageDeduplicator.php
@@ -114,7 +114,7 @@ class UsageDeduplicator {
 
 		array_walk_recursive(
 			$structuredUsages,
-			function ( EntityUsage $usage ) use ( &$usages ) {
+			static function ( EntityUsage $usage ) use ( &$usages ) {
 				$usages[$usage->getIdentityString()] = $usage;
 			}
 		);
diff --git a/client/tests/phpunit/integration/includes/ChangeModification/RecentChangesModificationTestBase.php b/client/tests/phpunit/integration/includes/ChangeModification/RecentChangesModificationTestBase.php
index 8caf9d6..9d2bc3a 100644
--- a/client/tests/phpunit/integration/includes/ChangeModification/RecentChangesModificationTestBase.php
+++ b/client/tests/phpunit/integration/includes/ChangeModification/RecentChangesModificationTestBase.php
@@ -27,7 +27,7 @@ abstract class RecentChangesModificationTestBase extends MediaWikiIntegrationTes
 	protected function revisionIdentifiersToJson( array $revisionIdentifiers ): string {
 		return json_encode(
 			array_map(
-				function ( RepoRevisionIdentifier $revisionIdentifier ) {
+				static function ( RepoRevisionIdentifier $revisionIdentifier ) {
 					return $revisionIdentifier->toArray();
 				},
 				$revisionIdentifiers
diff --git a/client/tests/phpunit/integration/includes/Changes/AffectedPagesFinderTest.php b/client/tests/phpunit/integration/includes/Changes/AffectedPagesFinderTest.php
index 12bc0c0..baeaf39 100644
--- a/client/tests/phpunit/integration/includes/Changes/AffectedPagesFinderTest.php
+++ b/client/tests/phpunit/integration/includes/Changes/AffectedPagesFinderTest.php
@@ -50,7 +50,7 @@ class AffectedPagesFinderTest extends MediaWikiIntegrationTestCase {
 		$titleFactory = $this->createPartialMock( TitleFactory::class, [ 'newFromText' ] );
 
 		$titleFactory->method( 'newFromText' )
-			->willReturnCallback( function( $text, $defaultNs = \NS_MAIN ) {
+			->willReturnCallback( static function( $text, $defaultNs = \NS_MAIN ) {
 				$title = Title::newFromText( $text, $defaultNs );
 
 				if ( !$title ) {
diff --git a/client/tests/phpunit/integration/includes/Changes/ChangeHandlerTest.php b/client/tests/phpunit/integration/includes/Changes/ChangeHandlerTest.php
index 11cc26a..1f3af8b 100644
--- a/client/tests/phpunit/integration/includes/Changes/ChangeHandlerTest.php
+++ b/client/tests/phpunit/integration/includes/Changes/ChangeHandlerTest.php
@@ -167,11 +167,11 @@ class ChangeHandlerTest extends MediaWikiIntegrationTestCase {
 		];
 
 		$testHooks = [
-			'WikibaseHandleChange' => function( Change $change ) use ( $spy ) {
+			'WikibaseHandleChange' => static function( Change $change ) use ( $spy ) {
 				$spy->handleChangeCallCount++;
 				return true;
 			},
-			'WikibaseHandleChanges' => function( array $changes ) use ( $spy ) {
+			'WikibaseHandleChanges' => static function( array $changes ) use ( $spy ) {
 				$spy->handleChangesCallCount++;
 				return true;
 			},
@@ -233,7 +233,7 @@ class ChangeHandlerTest extends MediaWikiIntegrationTestCase {
 		$titleFactory = $this->createPartialMock( TitleFactory::class, [ 'newFromText' ] );
 
 		$titleFactory->method( 'newFromText' )
-			->willReturnCallback( function( $text, $defaultNs = \NS_MAIN ) use ( $pageIdsByTitle ) {
+			->willReturnCallback( static function( $text, $defaultNs = \NS_MAIN ) use ( $pageIdsByTitle ) {
 				$title = Title::newFromText( $text, $defaultNs );
 
 				if ( !$title ) {
@@ -321,7 +321,7 @@ class ChangeHandlerTest extends MediaWikiIntegrationTestCase {
 		$usageLookup = $this->createMock( UsageLookup::class );
 		$usageLookup->method( 'getPagesUsing' )
 			->willReturnCallback(
-				function( $ids, $aspects ) use ( $siteLinkLookup ) {
+				static function( $ids, $aspects ) use ( $siteLinkLookup ) {
 					$pages = [];
 
 					foreach ( $ids as $id ) {
diff --git a/client/tests/phpunit/integration/includes/Changes/ChangeRunCoalescerTest.php b/client/tests/phpunit/integration/includes/Changes/ChangeRunCoalescerTest.php
index 0463a95..9875f2e 100644
--- a/client/tests/phpunit/integration/includes/Changes/ChangeRunCoalescerTest.php
+++ b/client/tests/phpunit/integration/includes/Changes/ChangeRunCoalescerTest.php
@@ -400,7 +400,7 @@ class ChangeRunCoalescerTest extends MediaWikiIntegrationTestCase {
 
 	private function getChangeIds( array $changes ) {
 		return array_map(
-			function( Change $change ) {
+			static function( Change $change ) {
 				return $change->getId();
 			},
 			$changes
diff --git a/client/tests/phpunit/integration/includes/Changes/WikiPageUpdaterTest.php b/client/tests/phpunit/integration/includes/Changes/WikiPageUpdaterTest.php
index 7937e5d..70ad34e 100644
--- a/client/tests/phpunit/integration/includes/Changes/WikiPageUpdaterTest.php
+++ b/client/tests/phpunit/integration/includes/Changes/WikiPageUpdaterTest.php
@@ -206,7 +206,7 @@ class WikiPageUpdaterTest extends MediaWikiIntegrationTestCase {
 		$jobQueueGroup->expects( $this->atLeastOnce() )
 			->method( 'lazyPush' )
 			->with( $this->isInstanceOf( RefreshLinksJob::class ) )
-			->willReturnCallback( function( Job $job ) use ( &$pages, &$rootJobParams ) {
+			->willReturnCallback( static function( Job $job ) use ( &$pages, &$rootJobParams ) {
 				$pages[] = $job->getTitle()->getPrefixedDBkey();
 				$rootJobParams = $job->getRootJobParams();
 			} );
diff --git a/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikibaseLibraryInProcessEntityCacheTest.php b/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikibaseLibraryInProcessEntityCacheTest.php
index 7525e49..39d2da3 100644
--- a/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikibaseLibraryInProcessEntityCacheTest.php
+++ b/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikibaseLibraryInProcessEntityCacheTest.php
@@ -38,7 +38,7 @@ class WikibaseLibraryInProcessEntityCacheTest extends WikibaseLibraryTestCase {
 		$entityLookup->expects( $this->exactly( 20 ) )
 			->method( 'getEntity' )
 			->willReturnCallback(
-				function( ItemId $id ) {
+				static function( ItemId $id ) {
 					return new Item( $id );
 				}
 			);
diff --git a/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikibaseLibraryTestCase.php b/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikibaseLibraryTestCase.php
index 990928c..f0164af 100644
--- a/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikibaseLibraryTestCase.php
+++ b/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikibaseLibraryTestCase.php
@@ -148,7 +148,7 @@ abstract class WikibaseLibraryTestCase extends LuaEngineTestBase {
 	private function overridePropertyLabelResolver(): void {
 		$propertyLabelResolver = $this->createMock( PropertyLabelResolver::class );
 		$propertyLabelResolver->method( 'getPropertyIdsForLabels' )
-			->willReturnCallback( function ( array $labels ): array {
+			->willReturnCallback( static function ( array $labels ): array {
 				if ( in_array( 'LuaTestStringProperty', $labels ) ) {
 					return [
 						'LuaTestStringProperty' => new NumericPropertyId( 'P342' ),
@@ -168,7 +168,7 @@ abstract class WikibaseLibraryTestCase extends LuaEngineTestBase {
 		if ( !in_array( 'maplink', $engine->getParser()->getTags() ) ) {
 			$engine->getParser()->setHook(
 				'maplink',
-				function() {
+				static function() {
 					return 'THIS-IS-A-MAP';
 				}
 			);
diff --git a/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikitextPreprocessingSnakFormatterTest.php b/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikitextPreprocessingSnakFormatterTest.php
index 6544c80..5114749 100644
--- a/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikitextPreprocessingSnakFormatterTest.php
+++ b/client/tests/phpunit/integration/includes/DataAccess/Scribunto/WikitextPreprocessingSnakFormatterTest.php
@@ -57,7 +57,7 @@ class WikitextPreprocessingSnakFormatterTest extends MediaWikiIntegrationTestCas
 		$parser = $this->getServiceContainer()->getParserFactory()->create();
 		$parser->setHook(
 			'stripme',
-			function() {
+			static function() {
 				return '!STRIPME_WIKITEXT!';
 			}
 		);
diff --git a/client/tests/phpunit/integration/includes/DescriptionTest.php b/client/tests/phpunit/integration/includes/DescriptionTest.php
index 1fafeb4..2d4d709 100644
--- a/client/tests/phpunit/integration/includes/DescriptionTest.php
+++ b/client/tests/phpunit/integration/includes/DescriptionTest.php
@@ -264,7 +264,7 @@ class DescriptionTest extends MediaWikiIntegrationTestCase {
 				use ( $expectedPageIds, $expectedSources, $descriptionsToReturn, $sourcesToReturn ) {
 					/** @var Title[] $titles */
 					/** @var string|string[] $sourcesToReturn */
-					$pageIds = array_values( array_map( function ( Title $title ) {
+					$pageIds = array_values( array_map( static function ( Title $title ) {
 						return $title->getArticleID();
 					}, $titles ) );
 					// Should be a sort-insensitive check but everything is sorted anyway.
diff --git a/client/tests/phpunit/integration/includes/Hooks/ChangesListLinesHandlerTest.php b/client/tests/phpunit/integration/includes/Hooks/ChangesListLinesHandlerTest.php
index aa76683..f0d9bb2 100644
--- a/client/tests/phpunit/integration/includes/Hooks/ChangesListLinesHandlerTest.php
+++ b/client/tests/phpunit/integration/includes/Hooks/ChangesListLinesHandlerTest.php
@@ -189,7 +189,7 @@ class ChangesListLinesHandlerTest extends MediaWikiIntegrationTestCase {
 		$changesList = $this->createMock( OldChangesList::class );
 		$changesList->expects( $this->once() )
 			->method( 'recentChangesFlags' )
-			->willReturnCallback( function ( $flags, $sep ) {
+			->willReturnCallback( static function ( $flags, $sep ) {
 				return implode( ',', array_keys( $flags, true ) );
 			} );
 		$changesList->method( 'getUser' )
diff --git a/client/tests/phpunit/integration/includes/Hooks/LangLinkHandlerTest.php b/client/tests/phpunit/integration/includes/Hooks/LangLinkHandlerTest.php
index b76951c..5efc0b3 100644
--- a/client/tests/phpunit/integration/includes/Hooks/LangLinkHandlerTest.php
+++ b/client/tests/phpunit/integration/includes/Hooks/LangLinkHandlerTest.php
@@ -135,7 +135,7 @@ class LangLinkHandlerTest extends MediaWikiIntegrationTestCase {
 
 			// strip "wiki" suffix
 			$key = preg_replace( '/wiki$/', '', $link->getSiteId() );
-			$badgesByPrefix[$key] = array_map( function( ItemId $id ) {
+			$badgesByPrefix[$key] = array_map( static function( ItemId $id ) {
 				return $id->getSerialization();
 			}, $badges );
 		}
diff --git a/client/tests/phpunit/integration/includes/Hooks/SidebarHookHandlerTest.php b/client/tests/phpunit/integration/includes/Hooks/SidebarHookHandlerTest.php
index f8b1977..da6474a 100644
--- a/client/tests/phpunit/integration/includes/Hooks/SidebarHookHandlerTest.php
+++ b/client/tests/phpunit/integration/includes/Hooks/SidebarHookHandlerTest.php
@@ -96,7 +96,7 @@ class SidebarHookHandlerTest extends MediaWikiIntegrationTestCase {
 
 		$handler->onSidebarBeforeOutput( $skin, $sidebar );
 
-		$sidebarFilteredForWikibaseLink = array_filter( $sidebar['wikibase-otherprojects'], function( $link ){
+		$sidebarFilteredForWikibaseLink = array_filter( $sidebar['wikibase-otherprojects'], static function( $link ){
 			return $link['id'] === 't-wikibase';
 		} );
 		$this->assertCount( 1, $sidebarFilteredForWikibaseLink );
diff --git a/client/tests/phpunit/integration/includes/NamespaceCheckerTest.php b/client/tests/phpunit/integration/includes/NamespaceCheckerTest.php
index 4a22b5a..1f1051d 100644
--- a/client/tests/phpunit/integration/includes/NamespaceCheckerTest.php
+++ b/client/tests/phpunit/integration/includes/NamespaceCheckerTest.php
@@ -90,11 +90,11 @@ class NamespaceCheckerTest extends MediaWikiIntegrationTestCase {
 		// actual test (maybe spillover from a different test?).  Work around the issue with
 		// callbacks until the actual problem is resolved.
 		return [
-			[ [], [], function () {
+			[ [], [], static function () {
 				return MediaWikiServices::getInstance()->getNamespaceInfo()->getValidNamespaces();
 			} ], // #0
 			[ [], [ NS_MAIN ], [ NS_MAIN ] ], // #1
-			[ [ NS_USER_TALK ], [], function () {
+			[ [ NS_USER_TALK ], [], static function () {
 				return array_diff(
 					MediaWikiServices::getInstance()->getNamespaceInfo()->getValidNamespaces(),
 					[ NS_USER_TALK ]
diff --git a/client/tests/phpunit/integration/includes/Specials/SpecialPagesWithBadgesTest.php b/client/tests/phpunit/integration/includes/Specials/SpecialPagesWithBadgesTest.php
index d125287..b7ebe05 100644
--- a/client/tests/phpunit/integration/includes/Specials/SpecialPagesWithBadgesTest.php
+++ b/client/tests/phpunit/integration/includes/Specials/SpecialPagesWithBadgesTest.php
@@ -31,7 +31,7 @@ class SpecialPagesWithBadgesTest extends SpecialPageTestBase {
 	private function getLabelDescriptionLookupFactory(): FallbackLabelDescriptionLookupFactory {
 		$labelLookup = $this->createMock( FallbackLabelDescriptionLookup::class );
 		$labelLookup->method( 'getLabel' )
-			->willReturnCallback( function( ItemId $id ): ?TermFallback {
+			->willReturnCallback( static function( ItemId $id ): ?TermFallback {
 				return new TermFallback(
 					'en',
 					'Label of ' . $id->getSerialization(),
diff --git a/client/tests/phpunit/integration/includes/Store/Sql/UnexpectedUnconnectedPagePrimerTest.php b/client/tests/phpunit/integration/includes/Store/Sql/UnexpectedUnconnectedPagePrimerTest.php
index d5714fb..b192623 100644
--- a/client/tests/phpunit/integration/includes/Store/Sql/UnexpectedUnconnectedPagePrimerTest.php
+++ b/client/tests/phpunit/integration/includes/Store/Sql/UnexpectedUnconnectedPagePrimerTest.php
@@ -45,7 +45,7 @@ class UnexpectedUnconnectedPagePrimerTest extends MediaWikiIntegrationTestCase {
 	}
 
 	public static function insertPagePropProvider(): array {
-		$convertToLegacy = function( $row ) {
+		$convertToLegacy = static function( $row ) {
 			if ( $row[1] === 'unexpectedUnconnectedPage' ) {
 				// The value doesn't matter and to make sure we actually need a change,
 				// don't use -$this->getDefaultWikitextNS() (as that could be 0).
diff --git a/client/tests/phpunit/integration/includes/Usage/Sql/EntityUsageTableTest.php b/client/tests/phpunit/integration/includes/Usage/Sql/EntityUsageTableTest.php
index 131f859..d6de942 100644
--- a/client/tests/phpunit/integration/includes/Usage/Sql/EntityUsageTableTest.php
+++ b/client/tests/phpunit/integration/includes/Usage/Sql/EntityUsageTableTest.php
@@ -142,7 +142,7 @@ class EntityUsageTableTest extends MediaWikiIntegrationTestCase {
 	}
 
 	private function getUsageStrings( array $usages ) {
-		$strings = array_map( function ( EntityUsage $usage ) {
+		$strings = array_map( static function ( EntityUsage $usage ) {
 			return $usage->getIdentityString();
 		}, array_values( $usages ) );
 
diff --git a/client/tests/phpunit/integration/includes/Usage/UsageLookupContractTester.php b/client/tests/phpunit/integration/includes/Usage/UsageLookupContractTester.php
index 97d63a1..a82593f 100644
--- a/client/tests/phpunit/integration/includes/Usage/UsageLookupContractTester.php
+++ b/client/tests/phpunit/integration/includes/Usage/UsageLookupContractTester.php
@@ -194,7 +194,7 @@ class UsageLookupContractTester {
 	 * @return string[]
 	 */
 	public function getUsageStrings( array $usages ) {
-		$strings = array_map( function( EntityUsage $usage ) {
+		$strings = array_map( static function( EntityUsage $usage ) {
 			return $usage->getIdentityString();
 		}, $usages );
 
diff --git a/client/tests/phpunit/integration/includes/Usage/UsageTrackerContractTester.php b/client/tests/phpunit/integration/includes/Usage/UsageTrackerContractTester.php
index 001d907..b25b375 100644
--- a/client/tests/phpunit/integration/includes/Usage/UsageTrackerContractTester.php
+++ b/client/tests/phpunit/integration/includes/Usage/UsageTrackerContractTester.php
@@ -156,7 +156,7 @@ class UsageTrackerContractTester {
 	 */
 	public function getUsageStrings( array $usages ) {
 		return array_values(
-			array_map( function( EntityUsage $usage ) {
+			array_map( static function( EntityUsage $usage ) {
 				return $usage->getIdentityString();
 			}, $usages )
 		);
diff --git a/client/tests/phpunit/integration/includes/Usage/UsageTrackingIntegrationTest.php b/client/tests/phpunit/integration/includes/Usage/UsageTrackingIntegrationTest.php
index 3e4fa0b..57dd0dc 100644
--- a/client/tests/phpunit/integration/includes/Usage/UsageTrackingIntegrationTest.php
+++ b/client/tests/phpunit/integration/includes/Usage/UsageTrackingIntegrationTest.php
@@ -160,7 +160,7 @@ class UsageTrackingIntegrationTest extends MediaWikiIntegrationTestCase {
 	 * @return string[]
 	 */
 	private function getUsageStrings( array $usages ) {
-		$strings = array_map( function ( EntityUsage $usage ) {
+		$strings = array_map( static function ( EntityUsage $usage ) {
 			return $usage->getIdentityString();
 		}, $usages );
 
diff --git a/client/tests/phpunit/mocks/Usage/UsageAccumulatorContractTester.php b/client/tests/phpunit/mocks/Usage/UsageAccumulatorContractTester.php
index 8bda06e..85480ca 100644
--- a/client/tests/phpunit/mocks/Usage/UsageAccumulatorContractTester.php
+++ b/client/tests/phpunit/mocks/Usage/UsageAccumulatorContractTester.php
@@ -164,7 +164,7 @@ class UsageAccumulatorContractTester {
 	 */
 	private function getIdentityStrings( array $usages ) {
 		return array_values(
-			array_map( function( EntityUsage $usage ) {
+			array_map( static function( EntityUsage $usage ) {
 				return $usage->getIdentityString();
 			}, $usages )
 		);
diff --git a/client/tests/phpunit/unit/includes/Changes/InjectRCRecordsJobTest.php b/client/tests/phpunit/unit/includes/Changes/InjectRCRecordsJobTest.php
index 48fe5c4..59b6fec 100644
--- a/client/tests/phpunit/unit/includes/Changes/InjectRCRecordsJobTest.php
+++ b/client/tests/phpunit/unit/includes/Changes/InjectRCRecordsJobTest.php
@@ -56,7 +56,7 @@ class InjectRCRecordsJobTest extends TestCase {
 		}
 
 		$changeLookup->method( 'loadByChangeIds' )
-			->willReturnCallback( function ( $ids ) use ( $changes ) {
+			->willReturnCallback( static function ( $ids ) use ( $changes ) {
 				return array_values( array_intersect_key( $changes, array_flip( $ids ) ) );
 			} );
 
@@ -388,7 +388,7 @@ class InjectRCRecordsJobTest extends TestCase {
 	 */
 	private function getTitleIDs( array $titles ): array {
 		return array_map(
-			function( Title $title ) {
+			static function( Title $title ) {
 				return $title->getArticleID();
 			},
 			$titles
@@ -402,7 +402,7 @@ class InjectRCRecordsJobTest extends TestCase {
 	 */
 	private function getTitleDBKeys( array $titles ): array {
 		return array_map(
-			function( Title $title ) {
+			static function( Title $title ) {
 				return $title->getPrefixedDBkey();
 			},
 			$titles
diff --git a/client/tests/phpunit/unit/includes/DataAccess/ClientSiteLinkTitleLookupTest.php b/client/tests/phpunit/unit/includes/DataAccess/ClientSiteLinkTitleLookupTest.php
index 461955b..72f72f5 100644
--- a/client/tests/phpunit/unit/includes/DataAccess/ClientSiteLinkTitleLookupTest.php
+++ b/client/tests/phpunit/unit/includes/DataAccess/ClientSiteLinkTitleLookupTest.php
@@ -31,7 +31,7 @@ class ClientSiteLinkTitleLookupTest extends \PHPUnit\Framework\TestCase {
 		$siteLinkLookup = $this->createMock( SiteLinkLookup::class );
 		$siteLinkLookup->method( 'getLinks' )
 			->with( [ $id->getNumericId() ], [ $clientSiteId ] )
-			->willReturnCallback( function ( array $numericIds, array $siteIds ) {
+			->willReturnCallback( static function ( array $numericIds, array $siteIds ) {
 				// TODO: SiteLinkLookup::getLinks does have a bad, bad interface.
 				return $siteIds === [ 'dewiki' ] ? [ [ 1 => 'Berlin' ] ] : [];
 			} );
diff --git a/client/tests/phpunit/unit/includes/DataAccess/DataAccessSnakFormatterFactoryTest.php b/client/tests/phpunit/unit/includes/DataAccess/DataAccessSnakFormatterFactoryTest.php
index 66e99e6..011452c 100644
--- a/client/tests/phpunit/unit/includes/DataAccess/DataAccessSnakFormatterFactoryTest.php
+++ b/client/tests/phpunit/unit/includes/DataAccess/DataAccessSnakFormatterFactoryTest.php
@@ -74,7 +74,7 @@ class DataAccessSnakFormatterFactoryTest extends \PHPUnit\Framework\TestCase {
 		$snakFormatter = $this->createMock( SnakFormatter::class );
 
 		$snakFormatter->method( 'formatSnak' )
-			->willReturnCallback( function( PropertyValueSnak $snak ) {
+			->willReturnCallback( static function( PropertyValueSnak $snak ) {
 				return $snak->getDataValue()->getValue();
 			} );
 
diff --git a/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/LanguageAwareRendererTest.php b/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/LanguageAwareRendererTest.php
index a61a949..5f07430 100644
--- a/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/LanguageAwareRendererTest.php
+++ b/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/LanguageAwareRendererTest.php
@@ -212,7 +212,7 @@ class LanguageAwareRendererTest extends \PHPUnit\Framework\TestCase {
 		$propertyIdResolver = $this->createMock( PropertyIdResolver::class );
 
 		$propertyIdResolver->method( 'resolvePropertyId' )
-			->willReturnCallback( function( $propertyLabelOrId, $languageCode ) {
+			->willReturnCallback( static function( $propertyLabelOrId, $languageCode ) {
 				throw new PropertyLabelNotResolvedException( $propertyLabelOrId, $languageCode );
 			} );
 
@@ -240,7 +240,7 @@ class LanguageAwareRendererTest extends \PHPUnit\Framework\TestCase {
 
 		$snakFormatter->method( 'formatSnak' )
 			->willReturnCallback(
-				function ( Snak $snak ) {
+				static function ( Snak $snak ) {
 					if ( $snak instanceof PropertyValueSnak ) {
 						$value = $snak->getDataValue();
 						if ( $value instanceof StringValue ) {
diff --git a/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/StatementGroupRendererFactoryTest.php b/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/StatementGroupRendererFactoryTest.php
index a107c2f..3bde14b 100644
--- a/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/StatementGroupRendererFactoryTest.php
+++ b/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/StatementGroupRendererFactoryTest.php
@@ -260,7 +260,7 @@ class StatementGroupRendererFactoryTest extends \PHPUnit\Framework\TestCase {
 		$snakListFinder = $this->createMock( SnaksFinder::class );
 
 		$snakListFinder->method( 'findSnaks' )
-			->willReturnCallback( function(
+			->willReturnCallback( static function(
 				StatementListProvider $statementListProvider,
 				NumericPropertyId $propertyId,
 				?array $acceptableRanks
@@ -295,7 +295,7 @@ class StatementGroupRendererFactoryTest extends \PHPUnit\Framework\TestCase {
 		$entityLookup = $this->createMock( EntityLookup::class );
 
 		$entityLookup->method( 'getEntity' )
-			->willReturnCallback( function ( EntityId $id ) {
+			->willReturnCallback( static function ( EntityId $id ) {
 				return new Item( $id );
 			} );
 
diff --git a/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/VariantsAwareRendererTest.php b/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/VariantsAwareRendererTest.php
index 25a4f7d..475dfeb 100644
--- a/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/VariantsAwareRendererTest.php
+++ b/client/tests/phpunit/unit/includes/DataAccess/ParserFunctions/VariantsAwareRendererTest.php
@@ -92,7 +92,7 @@ class VariantsAwareRendererTest extends \PHPUnit\Framework\TestCase {
 
 		$languageRenderer->method( 'render' )
 			->willReturnCallback(
-				function ( EntityId $entityId, $propertyLabelOrId ) use ( $languageCode ) {
+				static function ( EntityId $entityId, $propertyLabelOrId ) use ( $languageCode ) {
 					if ( $propertyLabelOrId === 'url' ) {
 						return 'http://wikipedia.de';
 					}
diff --git a/client/tests/phpunit/unit/includes/DataAccess/Scribunto/CachingFallbackBasedTermLookupTest.php b/client/tests/phpunit/unit/includes/DataAccess/Scribunto/CachingFallbackBasedTermLookupTest.php
index 9303999..b33708e 100644
--- a/client/tests/phpunit/unit/includes/DataAccess/Scribunto/CachingFallbackBasedTermLookupTest.php
+++ b/client/tests/phpunit/unit/includes/DataAccess/Scribunto/CachingFallbackBasedTermLookupTest.php
@@ -166,12 +166,12 @@ class CachingFallbackBasedTermLookupTest extends TestCase {
 			],
 		];
 
-		$datasetLabels = array_map( function( $testCase ) {
+		$datasetLabels = array_map( static function( $testCase ) {
 			$testCase[] = TermTypes::TYPE_LABEL;
 			return $testCase;
 		}, $dataset );
 
-		$datasetDescriptions = array_map( function( $testCase ) {
+		$datasetDescriptions = array_map( static function( $testCase ) {
 			$testCase[] = TermTypes::TYPE_DESCRIPTION;
 			return $testCase;
 		}, $dataset );
@@ -292,7 +292,7 @@ class CachingFallbackBasedTermLookupTest extends TestCase {
 		$enTerm = self::getTermFallback( 'cat', 'en' );
 
 		$this->contentLanguages->method( 'hasLanguage' )
-			->willReturnCallback( function ( $languageCode ) {
+			->willReturnCallback( static function ( $languageCode ) {
 				return $languageCode === 'en';
 			} );
 		$this->mockHasContentLanguage( true );
diff --git a/client/tests/phpunit/unit/includes/DataAccess/Scribunto/LuaFunctionCallTrackerTest.php b/client/tests/phpunit/unit/includes/DataAccess/Scribunto/LuaFunctionCallTrackerTest.php
index 6318c82..0155c88 100644
--- a/client/tests/phpunit/unit/includes/DataAccess/Scribunto/LuaFunctionCallTrackerTest.php
+++ b/client/tests/phpunit/unit/includes/DataAccess/Scribunto/LuaFunctionCallTrackerTest.php
@@ -63,7 +63,7 @@ class LuaFunctionCallTrackerTest extends \PHPUnit\Framework\TestCase {
 		$statsdFactory->expects( $this->exactly( count( $expected ) ) )
 			->method( 'updateCount' )
 				->with( $this->isType( 'string' ), 1 / $trackLuaFunctionCallsSampleRate )
-			->willReturnCallback( function ( $key ) use ( &$keyBuffer ) {
+			->willReturnCallback( static function ( $key ) use ( &$keyBuffer ) {
 				$keyBuffer[] = $key;
 			} );
 
diff --git a/client/tests/phpunit/unit/includes/DataAccess/Scribunto/SnakSerializationRendererTest.php b/client/tests/phpunit/unit/includes/DataAccess/Scribunto/SnakSerializationRendererTest.php
index 8f47162..54581f7 100644
--- a/client/tests/phpunit/unit/includes/DataAccess/Scribunto/SnakSerializationRendererTest.php
+++ b/client/tests/phpunit/unit/includes/DataAccess/Scribunto/SnakSerializationRendererTest.php
@@ -44,7 +44,7 @@ class SnakSerializationRendererTest extends \PHPUnit\Framework\TestCase {
 	private function getSnakRenderer() {
 		$snakFormatter = $this->createMock( SnakFormatter::class );
 		$snakFormatter->method( 'formatSnak' )
-			->willReturnCallback( function ( PropertyValueSnak $snak ) {
+			->willReturnCallback( static function ( PropertyValueSnak $snak ) {
 				$value = $snak->getDataValue();
 				if ( $value instanceof EntityIdValue ) {
 					return $value->getEntityId()->getSerialization();
diff --git a/client/tests/phpunit/unit/includes/DataAccess/StatementTransclusionInteractorTest.php b/client/tests/phpunit/unit/includes/DataAccess/StatementTransclusionInteractorTest.php
index 0ff271c..30b0541 100644
--- a/client/tests/phpunit/unit/includes/DataAccess/StatementTransclusionInteractorTest.php
+++ b/client/tests/phpunit/unit/includes/DataAccess/StatementTransclusionInteractorTest.php
@@ -198,7 +198,7 @@ class StatementTransclusionInteractorTest extends \PHPUnit\Framework\TestCase {
 		$propertyIdResolver = $this->createMock( PropertyIdResolver::class );
 
 		$propertyIdResolver->method( 'resolvePropertyId' )
-			->willReturnCallback( function( $propertyLabelOrId, $languageCode ) {
+			->willReturnCallback( static function( $propertyLabelOrId, $languageCode ) {
 				throw new PropertyLabelNotResolvedException( $propertyLabelOrId, $languageCode );
 			} );
 
@@ -216,7 +216,7 @@ class StatementTransclusionInteractorTest extends \PHPUnit\Framework\TestCase {
 		$lookup = $this->createMock( EntityRevisionLookup::class );
 
 		$lookup->method( 'getEntityRevision' )
-			->willReturnCallback( function( EntityId $entityId ) {
+			->willReturnCallback( static function( EntityId $entityId ) {
 				switch ( $entityId->getSerialization() ) {
 					case 'Q42':
 						return new EntityRevision( new Item( new ItemId( 'Q42' ) ) );
@@ -243,7 +243,7 @@ class StatementTransclusionInteractorTest extends \PHPUnit\Framework\TestCase {
 
 		$snakFormatter->method( 'formatSnak' )
 			->willReturnCallback(
-				function ( Snak $snak ) {
+				static function ( Snak $snak ) {
 					if ( $snak instanceof PropertyValueSnak ) {
 						$value = $snak->getDataValue();
 						if ( $value instanceof StringValue ) {
diff --git a/client/tests/phpunit/unit/includes/Hooks/EditActionHookHandlerTest.php b/client/tests/phpunit/unit/includes/Hooks/EditActionHookHandlerTest.php
index 0b86c55..cdaf3c0 100644
--- a/client/tests/phpunit/unit/includes/Hooks/EditActionHookHandlerTest.php
+++ b/client/tests/phpunit/unit/includes/Hooks/EditActionHookHandlerTest.php
@@ -47,7 +47,7 @@ class EditActionHookHandlerTest extends \PHPUnit\Framework\TestCase {
 	}
 
 	public static function handleProvider() {
-		$expectedEditFormText = function ( IContextSource $context, string $link ) {
+		$expectedEditFormText = static function ( IContextSource $context, string $link ) {
 			$explanation = $context->msg( 'wikibase-pageinfo-entity-usage' )->escaped();
 			$header = '<div class="wikibase-entity-usage"><div class="wikibase-entityusage-explanation">';
 			$header .= "<p>$explanation\n</p></div>";
@@ -95,7 +95,7 @@ class EditActionHookHandlerTest extends \PHPUnit\Framework\TestCase {
 			->getMock();
 
 		$repoLinker->method( 'buildEntityLink' )
-			->willReturnCallback( function (
+			->willReturnCallback( static function (
 				EntityId $entityId,
 				array $classes = [],
 				$text = null
@@ -146,7 +146,7 @@ class EditActionHookHandlerTest extends \PHPUnit\Framework\TestCase {
 		$lookup = $this->createMock( FallbackLabelDescriptionLookup::class );
 
 		$lookup->method( 'getLabel' )
-			->willReturnCallback( function ( EntityId $entityId ) {
+			->willReturnCallback( static function ( EntityId $entityId ) {
 				switch ( $entityId->getSerialization() ) {
 					case 'Q4':
 						return new Term( 'en', 'Berlin' );
diff --git a/client/tests/phpunit/unit/includes/Hooks/ExtensionLoadHandlerTest.php b/client/tests/phpunit/unit/includes/Hooks/ExtensionLoadHandlerTest.php
index 2076576..468a514 100644
--- a/client/tests/phpunit/unit/includes/Hooks/ExtensionLoadHandlerTest.php
+++ b/client/tests/phpunit/unit/includes/Hooks/ExtensionLoadHandlerTest.php
@@ -27,7 +27,7 @@ class ExtensionLoadHandlerTest extends TestCase {
 	private function getFauxHookContainer( &$hooks ) {
 		$container = $this->createMock( HookContainer::class );
 		$container->method( 'register' )->willReturnCallback(
-			function ( $name, $handler ) use ( &$hooks ) {
+			static function ( $name, $handler ) use ( &$hooks ) {
 				$hooks[$name][] = $handler;
 			}
 		);
diff --git a/client/tests/phpunit/unit/includes/Hooks/InfoActionHookHandlerTest.php b/client/tests/phpunit/unit/includes/Hooks/InfoActionHookHandlerTest.php
index b999754..b9ebd8e 100644
--- a/client/tests/phpunit/unit/includes/Hooks/InfoActionHookHandlerTest.php
+++ b/client/tests/phpunit/unit/includes/Hooks/InfoActionHookHandlerTest.php
@@ -183,7 +183,7 @@ class InfoActionHookHandlerTest extends \PHPUnit\Framework\TestCase {
 			->getMock();
 
 		$repoLinker->method( 'buildEntityLink' )
-			->willReturnCallback( function (
+			->willReturnCallback( static function (
 				EntityId $entityId,
 				array $classes = [],
 				$text = null
@@ -265,7 +265,7 @@ class InfoActionHookHandlerTest extends \PHPUnit\Framework\TestCase {
 		$lookup = $this->createMock( FallbackLabelDescriptionLookup::class );
 
 		$lookup->method( 'getLabel' )
-			->willReturnCallback( function ( EntityId $entityId ) {
+			->willReturnCallback( static function ( EntityId $entityId ) {
 				switch ( $entityId->getSerialization() ) {
 					case 'Q4':
 						return new Term( 'en', 'Berlin' );
diff --git a/client/tests/phpunit/unit/includes/Hooks/LanguageLinkBadgeDisplayTest.php b/client/tests/phpunit/unit/includes/Hooks/LanguageLinkBadgeDisplayTest.php
index ea02bf4..e9cf710 100644
--- a/client/tests/phpunit/unit/includes/Hooks/LanguageLinkBadgeDisplayTest.php
+++ b/client/tests/phpunit/unit/includes/Hooks/LanguageLinkBadgeDisplayTest.php
@@ -33,7 +33,7 @@ class LanguageLinkBadgeDisplayTest extends \PHPUnit\Framework\TestCase {
 		$labelLookup = $this->createMock( LabelDescriptionLookup::class );
 
 		$labelLookup->method( 'getLabel' )
-			->willReturnCallback( function( EntityId $entityId ) {
+			->willReturnCallback( static function( EntityId $entityId ) {
 				switch ( $entityId->getSerialization() ) {
 					case 'Q3':
 						return new Term( 'de', 'Lesenswerter Artikel' );
diff --git a/client/tests/phpunit/unit/includes/Hooks/SiteLinksForDisplayLookupTest.php b/client/tests/phpunit/unit/includes/Hooks/SiteLinksForDisplayLookupTest.php
index b0a8f52..ee8cdeb 100644
--- a/client/tests/phpunit/unit/includes/Hooks/SiteLinksForDisplayLookupTest.php
+++ b/client/tests/phpunit/unit/includes/Hooks/SiteLinksForDisplayLookupTest.php
@@ -116,7 +116,7 @@ class SiteLinksForDisplayLookupTest extends \MediaWikiUnitTestCase {
 				$links->toArray(),
 				$usageAccumulator,
 			] )
-			->willReturnCallback( function ( string $hook, array $args ) {
+			->willReturnCallback( static function ( string $hook, array $args ) {
 				$links = &$args[1];
 				$links['frwikisource'] = new SiteLink( 'frwikisource', 'FooSource' );
 				$links['enwiki'] = new SiteLink( 'enwiki', 'Foo en', [ new ItemId( 'Q42' ) ] );
diff --git a/client/tests/phpunit/unit/includes/Hooks/SkinAfterPortletHandlerTest.php b/client/tests/phpunit/unit/includes/Hooks/SkinAfterPortletHandlerTest.php
index 2bae9aa..d2d6a67 100644
--- a/client/tests/phpunit/unit/includes/Hooks/SkinAfterPortletHandlerTest.php
+++ b/client/tests/phpunit/unit/includes/Hooks/SkinAfterPortletHandlerTest.php
@@ -157,7 +157,7 @@ class SkinAfterPortletHandlerTest extends TestCase {
 		$context->method( 'getLanguage' )
 			->willReturn( $lang );
 		$context->method( 'msg' )
-			->willReturnCallback( function ( $key ) use ( $lang ) {
+			->willReturnCallback( static function ( $key ) use ( $lang ) {
 				return ( new RawMessage( "($key)" ) )->inLanguage( $lang );
 			} );
 		$context->method( 'getConfig' )
diff --git a/client/tests/phpunit/unit/includes/ServiceWiring/DataTypeDefinitionsTest.php b/client/tests/phpunit/unit/includes/ServiceWiring/DataTypeDefinitionsTest.php
index e22efc6..f58caeb 100644
--- a/client/tests/phpunit/unit/includes/ServiceWiring/DataTypeDefinitionsTest.php
+++ b/client/tests/phpunit/unit/includes/ServiceWiring/DataTypeDefinitionsTest.php
@@ -35,7 +35,7 @@ class DataTypeDefinitionsTest extends ServiceWiringTestCase {
 
 	public function testRunsHook(): void {
 		$this->configureHookContainer( [
-			'WikibaseClientDataTypes' => [ function ( array &$dataTypes ) {
+			'WikibaseClientDataTypes' => [ static function ( array &$dataTypes ) {
 				$dataTypes['PT:test'] = [ 'value-type' => 'string' ];
 			} ],
 		] );
diff --git a/client/tests/phpunit/unit/includes/ServiceWiring/DataTypeFactoryTest.php b/client/tests/phpunit/unit/includes/ServiceWiring/DataTypeFactoryTest.php
index fb010b2..979cdb8 100644
--- a/client/tests/phpunit/unit/includes/ServiceWiring/DataTypeFactoryTest.php
+++ b/client/tests/phpunit/unit/includes/ServiceWiring/DataTypeFactoryTest.php
@@ -24,7 +24,7 @@ class DataTypeFactoryTest extends ServiceWiringTestCase {
 
 		$this->mockService( 'WikibaseClient.DataTypeDefinitions',
 			new DataTypeDefinitions( array_fill_keys(
-				array_map( function ( $dataTypeId ) {
+				array_map( static function ( $dataTypeId ) {
 					return 'PT:' . $dataTypeId;
 				}, $mockDataTypeIds ),
 				[ 'value-type' => 'string' ]
diff --git a/client/tests/phpunit/unit/includes/ServiceWiring/DataValueDeserializerTest.php b/client/tests/phpunit/unit/includes/ServiceWiring/DataValueDeserializerTest.php
index 704990c..d6b6dc0 100644
--- a/client/tests/phpunit/unit/includes/ServiceWiring/DataValueDeserializerTest.php
+++ b/client/tests/phpunit/unit/includes/ServiceWiring/DataValueDeserializerTest.php
@@ -33,7 +33,7 @@ class DataValueDeserializerTest extends ServiceWiringTestCase {
 			'wikibase-entityid',
 		];
 
-		yield from array_map( function ( $dataValue ) {
+		yield from array_map( static function ( $dataValue ) {
 			return [ $dataValue ];
 		}, $dataValues );
 	}
diff --git a/client/tests/phpunit/unit/includes/ServiceWiring/EntityDifferTest.php b/client/tests/phpunit/unit/includes/ServiceWiring/EntityDifferTest.php
index 445b499..4806d7d 100644
--- a/client/tests/phpunit/unit/includes/ServiceWiring/EntityDifferTest.php
+++ b/client/tests/phpunit/unit/includes/ServiceWiring/EntityDifferTest.php
@@ -26,13 +26,13 @@ class EntityDifferTest extends ServiceWiringTestCase {
 		$this->mockService( 'WikibaseClient.EntityTypeDefinitions',
 			new EntityTypeDefinitions( [
 				'test1' => [
-					EntityTypeDefinitions::ENTITY_DIFFER_STRATEGY_BUILDER => function () use ( &$calls1, $strategy1 ) {
+					EntityTypeDefinitions::ENTITY_DIFFER_STRATEGY_BUILDER => static function () use ( &$calls1, $strategy1 ) {
 						$calls1++;
 						return $strategy1;
 					},
 				],
 				'test2' => [
-					EntityTypeDefinitions::ENTITY_DIFFER_STRATEGY_BUILDER => function () use ( &$calls2, $strategy2 ) {
+					EntityTypeDefinitions::ENTITY_DIFFER_STRATEGY_BUILDER => static function () use ( &$calls2, $strategy2 ) {
 						$calls2++;
 						return $strategy2;
 					},
diff --git a/client/tests/phpunit/unit/includes/ServiceWiring/EntityIdComposerTest.php b/client/tests/phpunit/unit/includes/ServiceWiring/EntityIdComposerTest.php
index 3d350bc..d6f89c3 100644
--- a/client/tests/phpunit/unit/includes/ServiceWiring/EntityIdComposerTest.php
+++ b/client/tests/phpunit/unit/includes/ServiceWiring/EntityIdComposerTest.php
@@ -22,7 +22,7 @@ class EntityIdComposerTest extends ServiceWiringTestCase {
 		$this->mockService( 'WikibaseClient.EntityTypeDefinitions',
 			new EntityTypeDefinitions( [
 				'test' => [
-					EntityTypeDefinitions::ENTITY_ID_COMPOSER_CALLBACK => function ( $uniquePart ) {
+					EntityTypeDefinitions::ENTITY_ID_COMPOSER_CALLBACK => static function ( $uniquePart ) {
 						return new ItemId( 'Q' . $uniquePart );
 					},
 				],
diff --git a/client/tests/phpunit/unit/includes/ServiceWiring/EntityIdParserTest.php b/client/tests/phpunit/unit/includes/ServiceWiring/EntityIdParserTest.php
index 64b298c..8c983b8 100644
--- a/client/tests/phpunit/unit/includes/ServiceWiring/EntityIdParserTest.php
+++ b/client/tests/phpunit/unit/includes/ServiceWiring/EntityIdParserTest.php
@@ -18,7 +18,7 @@ use Wikibase\Lib\EntityTypeDefinitions;
  */
 class EntityIdParserTest extends ServiceWiringTestCase {
 	private function makeIdBuilder( $prefix ): callable {
-		return function ( $serialization ) use ( $prefix ) {
+		return static function ( $serialization ) use ( $prefix ) {
 			return new ItemId( 'Q' . $prefix . substr( $serialization, 1 ) );
 		};
 	}
diff --git a/client/tests/phpunit/unit/includes/ServiceWiring/EntityNamespaceLookupTest.php b/client/tests/phpunit/unit/includes/ServiceWiring/EntityNamespaceLookupTest.php
index decf7ee..5f11a8c 100644
--- a/client/tests/phpunit/unit/includes/ServiceWiring/EntityNamespaceLookupTest.php
+++ b/client/tests/phpunit/unit/includes/ServiceWiring/EntityNamespaceLookupTest.php
@@ -21,7 +21,7 @@ class EntityNamespaceLookupTest extends ServiceWiringTestCase {
 
 	private function getEntitySources( array ...$entityNSDefinitions ): EntitySourceDefinitions {
 		return new EntitySourceDefinitions( array_map(
-			function ( array $nsDefinitions, int $idx ): DatabaseEntitySource {
+			static function ( array $nsDefinitions, int $idx ): DatabaseEntitySource {
 				return new DatabaseEntitySource(
 					'test-' . $idx,
 					false,
diff --git a/client/tests/phpunit/unit/includes/ServiceWiring/EntityTypeDefinitionsTest.php b/client/tests/phpunit/unit/includes/ServiceWiring/EntityTypeDefinitionsTest.php
index 5c111c0..a4feff1 100644
--- a/client/tests/phpunit/unit/includes/ServiceWiring/EntityTypeDefinitionsTest.php
+++ b/client/tests/phpunit/unit/includes/ServiceWiring/EntityTypeDefinitionsTest.php
@@ -24,7 +24,7 @@ class EntityTypeDefinitionsTest extends ServiceWiringTestCase {
 
 	public function testRunsHook(): void {
 		$this->configureHookContainer( [
-			'WikibaseClientEntityTypes' => [ function ( array &$entityTypes ) {
+			'WikibaseClientEntityTypes' => [ static function ( array &$entityTypes ) {
 				$entityTypes['test'] = [];
 			} ],
 		] );
diff --git a/client/tests/phpunit/unit/includes/ServiceWiring/WikibaseContentLanguagesTest.php b/client/tests/phpunit/unit/includes/ServiceWiring/WikibaseContentLanguagesTest.php
index e451453..daad11d 100644
--- a/client/tests/phpunit/unit/includes/ServiceWiring/WikibaseContentLanguagesTest.php
+++ b/client/tests/phpunit/unit/includes/ServiceWiring/WikibaseContentLanguagesTest.php
@@ -21,7 +21,7 @@ class WikibaseContentLanguagesTest extends ServiceWiringTestCase {
 	public function testConstruction() {
 		$testLanguages = new StaticContentLanguages( [ 'test' ] );
 		$this->configureHookContainer( [
-			'WikibaseContentLanguages' => [ function ( array &$contentLanguages ) use ( $testLanguages ) {
+			'WikibaseContentLanguages' => [ static function ( array &$contentLanguages ) use ( $testLanguages ) {
 				$contentLanguages['test'] = $testLanguages;
 			} ],
 		] );
diff --git a/client/tests/phpunit/unit/includes/Store/DescriptionLookupTest.php b/client/tests/phpunit/unit/includes/Store/DescriptionLookupTest.php
index f416454..89d91ff 100644
--- a/client/tests/phpunit/unit/includes/Store/DescriptionLookupTest.php
+++ b/client/tests/phpunit/unit/includes/Store/DescriptionLookupTest.php
@@ -201,13 +201,13 @@ class DescriptionLookupTest extends TestCase {
 		$pageProps = $this->createMock( PageProps::class );
 		$pageProps->method( 'getProperties' )
 			->with( $this->anything(), DescriptionLookup::LOCAL_PROPERTY_NAME )
-			->willReturnCallback( function ( $titlesByPageId ) use ( $localDescriptions ) {
-				return array_filter( array_map( function ( Title $title ) use ( $localDescriptions ) {
+			->willReturnCallback( static function ( $titlesByPageId ) use ( $localDescriptions ) {
+				return array_filter( array_map( static function ( Title $title ) use ( $localDescriptions ) {
 					if ( !array_key_exists( $title->getArticleID(), $localDescriptions ) ) {
 						return null;
 					}
 					return $localDescriptions[$title->getArticleID()];
-				}, $titlesByPageId ), function ( $description ) {
+				}, $titlesByPageId ), static function ( $description ) {
 					return $description !== null;
 				} );
 			} );
@@ -230,8 +230,8 @@ class DescriptionLookupTest extends TestCase {
 		$idLookup = $this->getMockBuilder( EntityIdLookup::class )
 			->getMockForAbstractClass();
 		$idLookup->method( 'getEntityIds' )
-			->willReturnCallback( function ( $titlesByPageId ) use ( $centralDescriptions ) {
-				return array_filter( array_map( function ( Title $title ) use ( $centralDescriptions ) {
+			->willReturnCallback( static function ( $titlesByPageId ) use ( $centralDescriptions ) {
+				return array_filter( array_map( static function ( Title $title ) use ( $centralDescriptions ) {
 					if ( !array_key_exists( $title->getArticleID(), $centralDescriptions ) ) {
 						return null;
 					}
@@ -258,7 +258,7 @@ class DescriptionLookupTest extends TestCase {
 		$termBuffer = $this->createMock( TermBuffer::class );
 		$termBuffer->method( 'getPrefetchedTerm' )
 			->willReturnCallback(
-				function ( $entityId, $termType, $langCode ) use ( $centralDescriptions ) {
+				static function ( $entityId, $termType, $langCode ) use ( $centralDescriptions ) {
 					$pageId = (int)substr( $entityId->getSerialization(), 1 );
 					$description = $centralDescriptions[$pageId];
 					if ( is_array( $description ) ) {
diff --git a/client/tests/phpunit/unit/includes/Usage/UsageTrackingSnakFormatterTest.php b/client/tests/phpunit/unit/includes/Usage/UsageTrackingSnakFormatterTest.php
index b608641..ad44acd 100644
--- a/client/tests/phpunit/unit/includes/Usage/UsageTrackingSnakFormatterTest.php
+++ b/client/tests/phpunit/unit/includes/Usage/UsageTrackingSnakFormatterTest.php
@@ -94,7 +94,7 @@ class UsageTrackingSnakFormatterTest extends \PHPUnit\Framework\TestCase {
 		$parser = $this->createMock( EntityIdParser::class );
 		$parser->expects( $this->once() )
 			->method( 'parse' )
-			->willReturnCallback( function ( $id ) {
+			->willReturnCallback( static function ( $id ) {
 				return $id === '1' ? null : new ItemId( $id );
 			} );
 
diff --git a/composer.json b/composer.json
index 91be112..33bcde5 100644
--- a/composer.json
+++ b/composer.json
@@ -42,8 +42,8 @@
 		"swaggest/json-diff": "^3.11.0"
 	},
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "dev-master#fd6ecb5ffbe353507ca05387176db02f0f41f6fe",
-		"mediawiki/mediawiki-phan-config": "0.14.0",
+		"mediawiki/mediawiki-codesniffer": "45.0.0",
+		"mediawiki/mediawiki-phan-config": "0.15.0",
 		"mediawiki/minus-x": "1.1.3",
 		"php-parallel-lint/php-console-highlighter": "1.0.0",
 		"php-parallel-lint/php-parallel-lint": "1.4.0",
diff --git a/data-access/src/ByTypeDispatchingEntityIdLookup.php b/data-access/src/ByTypeDispatchingEntityIdLookup.php
index b5f867e..d9d523b 100644
--- a/data-access/src/ByTypeDispatchingEntityIdLookup.php
+++ b/data-access/src/ByTypeDispatchingEntityIdLookup.php
@@ -60,7 +60,7 @@ class ByTypeDispatchingEntityIdLookup implements EntityIdLookup {
 			$results = array_replace( $results, $entityIds );
 		}
 
-		return array_filter( $results, function ( $id ) {
+		return array_filter( $results, static function ( $id ) {
 			return $id instanceof EntityId;
 		} );
 	}
diff --git a/data-access/tests/phpunit/ByTypeDispatchingEntityIdLookupTest.php b/data-access/tests/phpunit/ByTypeDispatchingEntityIdLookupTest.php
index 255d2dd..f5e834a 100644
--- a/data-access/tests/phpunit/ByTypeDispatchingEntityIdLookupTest.php
+++ b/data-access/tests/phpunit/ByTypeDispatchingEntityIdLookupTest.php
@@ -65,7 +65,7 @@ class ByTypeDispatchingEntityIdLookupTest extends TestCase {
 		$lookup = $this->createMock( EntityIdLookup::class );
 		$lookup
 			->method( 'getEntityIds' )
-			->willReturnCallback( function ( $titles ) use ( $map ) {
+			->willReturnCallback( static function ( $titles ) use ( $map ) {
 				$results = [];
 				foreach ( $titles as $title ) {
 					$dbKey = $title->getPrefixedDBkey();
@@ -77,7 +77,7 @@ class ByTypeDispatchingEntityIdLookupTest extends TestCase {
 			} );
 		$lookup
 			->method( 'getEntityIdForTitle' )
-			->willReturnCallback( function ( $title ) use ( $map ) {
+			->willReturnCallback( static function ( $title ) use ( $map ) {
 				return $map[$title->getPrefixedDBkey()] ?? null;
 			} );
 		return $lookup;
diff --git a/data-access/tests/phpunit/ByTypeDispatchingEntityRevisionLookupTest.php b/data-access/tests/phpunit/ByTypeDispatchingEntityRevisionLookupTest.php
index 8728d41..a59e484 100644
--- a/data-access/tests/phpunit/ByTypeDispatchingEntityRevisionLookupTest.php
+++ b/data-access/tests/phpunit/ByTypeDispatchingEntityRevisionLookupTest.php
@@ -129,7 +129,7 @@ class ByTypeDispatchingEntityRevisionLookupTest extends TestCase {
 		$shouldNotBeCalled = function () {
 			$this->fail( 'Should not be called' );
 		};
-		$returnTrue = function () {
+		$returnTrue = static function () {
 			return true;
 		};
 
diff --git a/data-access/tests/phpunit/SourceAndTypeDispatchingPrefetchingTermLookupTest.php b/data-access/tests/phpunit/SourceAndTypeDispatchingPrefetchingTermLookupTest.php
index 1fe9296..48703cd 100644
--- a/data-access/tests/phpunit/SourceAndTypeDispatchingPrefetchingTermLookupTest.php
+++ b/data-access/tests/phpunit/SourceAndTypeDispatchingPrefetchingTermLookupTest.php
@@ -46,9 +46,9 @@ class SourceAndTypeDispatchingPrefetchingTermLookupTest extends TestCase {
 
 		$this->callbacks = [
 			'some-source' => [
-				'item' => function () use ( $itemPrefetchingLookup ) { return $itemPrefetchingLookup;
+				'item' => static function () use ( $itemPrefetchingLookup ) { return $itemPrefetchingLookup;
 				},
-				'property' => function () use ( $propertyPrefetchingLookup ) { return $propertyPrefetchingLookup;
+				'property' => static function () use ( $propertyPrefetchingLookup ) { return $propertyPrefetchingLookup;
 				},
 			],
 		];
@@ -71,9 +71,9 @@ class SourceAndTypeDispatchingPrefetchingTermLookupTest extends TestCase {
 
 		$this->callbacks = [
 			'some-source' => [
-				'item' => function () use ( $itemPrefetchingLookup ) { return $itemPrefetchingLookup;
+				'item' => static function () use ( $itemPrefetchingLookup ) { return $itemPrefetchingLookup;
 				},
-				'property' => function () use ( $propertyPrefetchingLookup ) { return $propertyPrefetchingLookup;
+				'property' => static function () use ( $propertyPrefetchingLookup ) { return $propertyPrefetchingLookup;
 				},
 			],
 		];
@@ -95,9 +95,9 @@ class SourceAndTypeDispatchingPrefetchingTermLookupTest extends TestCase {
 
 		$this->callbacks = [
 			'some-source' => [
-				'item' => function () use ( $itemPrefetchingLookup ) { return $itemPrefetchingLookup;
+				'item' => static function () use ( $itemPrefetchingLookup ) { return $itemPrefetchingLookup;
 				},
-				'property' => function () use ( $propertyPrefetchingLookup ) { return $propertyPrefetchingLookup;
+				'property' => static function () use ( $propertyPrefetchingLookup ) { return $propertyPrefetchingLookup;
 				},
 			],
 		];
@@ -118,7 +118,7 @@ class SourceAndTypeDispatchingPrefetchingTermLookupTest extends TestCase {
 
 		$this->callbacks = [
 			'some-source' => [
-				'item' => function () use ( $itemPrefetchingLookup ) { return $itemPrefetchingLookup;
+				'item' => static function () use ( $itemPrefetchingLookup ) { return $itemPrefetchingLookup;
 				},
 			],
 		];
@@ -136,7 +136,7 @@ class SourceAndTypeDispatchingPrefetchingTermLookupTest extends TestCase {
 
 		$this->callbacks = [
 			'some-source' => [
-				'item' => function () use ( $innerLookup ) { return $innerLookup;
+				'item' => static function () use ( $innerLookup ) { return $innerLookup;
 				},
 			],
 		];
@@ -155,7 +155,7 @@ class SourceAndTypeDispatchingPrefetchingTermLookupTest extends TestCase {
 
 		$this->callbacks = [
 			'some-source' => [
-				'item' => function () use ( $innerLookup ) { return $innerLookup;
+				'item' => static function () use ( $innerLookup ) { return $innerLookup;
 				},
 			],
 		];
@@ -173,7 +173,7 @@ class SourceAndTypeDispatchingPrefetchingTermLookupTest extends TestCase {
 
 		$this->callbacks = [
 			'some-source' => [
-				'item' => function () use ( $innerLookup ) { return $innerLookup;
+				'item' => static function () use ( $innerLookup ) { return $innerLookup;
 				},
 			],
 		];
diff --git a/lib/WikibaseLib.entitytypes.php b/lib/WikibaseLib.entitytypes.php
index 5e44661..8cbe481 100644
--- a/lib/WikibaseLib.entitytypes.php
+++ b/lib/WikibaseLib.entitytypes.php
@@ -27,44 +27,44 @@ use Wikibase\Lib\EntityTypeDefinitions as Def;
 
 return [
 	'item' => [
-		Def::SERIALIZER_FACTORY_CALLBACK => function( SerializerFactory $serializerFactory ) {
+		Def::SERIALIZER_FACTORY_CALLBACK => static function( SerializerFactory $serializerFactory ) {
 			return $serializerFactory->newItemSerializer();
 		},
-		Def::DESERIALIZER_FACTORY_CALLBACK => function( DeserializerFactory $deserializerFactory ) {
+		Def::DESERIALIZER_FACTORY_CALLBACK => static function( DeserializerFactory $deserializerFactory ) {
 			return $deserializerFactory->newItemDeserializer();
 		},
 		Def::ENTITY_ID_PATTERN => ItemId::PATTERN,
-		Def::ENTITY_ID_BUILDER => function( $serialization ) {
+		Def::ENTITY_ID_BUILDER => static function( $serialization ) {
 			return new ItemId( $serialization );
 		},
-		Def::ENTITY_ID_COMPOSER_CALLBACK => function( $uniquePart ) {
+		Def::ENTITY_ID_COMPOSER_CALLBACK => static function( $uniquePart ) {
 			return new ItemId( 'Q' . $uniquePart );
 		},
-		Def::ENTITY_DIFFER_STRATEGY_BUILDER => function() {
+		Def::ENTITY_DIFFER_STRATEGY_BUILDER => static function() {
 			return new ItemDiffer();
 		},
-		Def::ENTITY_PATCHER_STRATEGY_BUILDER => function() {
+		Def::ENTITY_PATCHER_STRATEGY_BUILDER => static function() {
 			return new ItemPatcher();
 		},
 	],
 	'property' => [
-		Def::SERIALIZER_FACTORY_CALLBACK => function( SerializerFactory $serializerFactory ) {
+		Def::SERIALIZER_FACTORY_CALLBACK => static function( SerializerFactory $serializerFactory ) {
 			return $serializerFactory->newPropertySerializer();
 		},
-		Def::DESERIALIZER_FACTORY_CALLBACK => function( DeserializerFactory $deserializerFactory ) {
+		Def::DESERIALIZER_FACTORY_CALLBACK => static function( DeserializerFactory $deserializerFactory ) {
 			return $deserializerFactory->newPropertyDeserializer();
 		},
 		Def::ENTITY_ID_PATTERN => NumericPropertyId::PATTERN,
-		Def::ENTITY_ID_BUILDER => function( $serialization ) {
+		Def::ENTITY_ID_BUILDER => static function( $serialization ) {
 			return new NumericPropertyId( $serialization );
 		},
-		Def::ENTITY_ID_COMPOSER_CALLBACK => function( $uniquePart ) {
+		Def::ENTITY_ID_COMPOSER_CALLBACK => static function( $uniquePart ) {
 			return new NumericPropertyId( 'P' . $uniquePart );
 		},
-		Def::ENTITY_DIFFER_STRATEGY_BUILDER => function() {
+		Def::ENTITY_DIFFER_STRATEGY_BUILDER => static function() {
 			return new PropertyDiffer();
 		},
-		Def::ENTITY_PATCHER_STRATEGY_BUILDER => function() {
+		Def::ENTITY_PATCHER_STRATEGY_BUILDER => static function() {
 			return new PropertyPatcher();
 		},
 	],
diff --git a/lib/includes/DataTypeDefinitions.php b/lib/includes/DataTypeDefinitions.php
index d055f0d..650d5e8 100644
--- a/lib/includes/DataTypeDefinitions.php
+++ b/lib/includes/DataTypeDefinitions.php
@@ -384,7 +384,7 @@ class DataTypeDefinitions {
 	 */
 	public function getRdfDataTypes() {
 		return array_map(
-			function ( $dataType ) {
+			static function ( $dataType ) {
 				if ( is_callable( $dataType ) ) {
 					$dataType = ( $dataType )();
 				}
diff --git a/lib/includes/Formatters/AutoCommentFormatter.php b/lib/includes/Formatters/AutoCommentFormatter.php
index 143ef88..ab91703 100644
--- a/lib/includes/Formatters/AutoCommentFormatter.php
+++ b/lib/includes/Formatters/AutoCommentFormatter.php
@@ -98,7 +98,7 @@ class AutoCommentFormatter {
 			return null;
 		}
 
-		$args = array_map( function ( $arg ) {
+		$args = array_map( static function ( $arg ) {
 			// MediaWiki HTML-escaped the auto-comment already,
 			// undo that, then wikitext-escape the args for the message
 			// (no message requires formatted params and some args are user-controlled)
diff --git a/lib/includes/LanguageFallbackChainFactory.php b/lib/includes/LanguageFallbackChainFactory.php
index a311942..bea5bc8 100644
--- a/lib/includes/LanguageFallbackChainFactory.php
+++ b/lib/includes/LanguageFallbackChainFactory.php
@@ -287,7 +287,7 @@ class LanguageFallbackChainFactory {
 
 		$babelCategoryNames = array_filter(
 			$wgBabelCategoryNames,
-			function( $category ) {
+			static function( $category ) {
 				return $category !== false;
 			}
 		);
diff --git a/lib/includes/Serialization/CallbackFactory.php b/lib/includes/Serialization/CallbackFactory.php
index b649453..618b9a0 100644
--- a/lib/includes/Serialization/CallbackFactory.php
+++ b/lib/includes/Serialization/CallbackFactory.php
@@ -23,7 +23,7 @@ class CallbackFactory {
 	 * @return callable
 	 */
 	public function getCallbackToIndexTags( $tagName ) {
-		return function( $array ) use ( $tagName ) {
+		return static function( $array ) use ( $tagName ) {
 			if ( is_array( $array ) ) {
 				ApiResult::setIndexedTagName( $array, $tagName );
 			}
@@ -40,7 +40,7 @@ class CallbackFactory {
 	 * @return callable
 	 */
 	public function getCallbackToSetArrayType( $type, $kvpKeyName = null ) {
-		return function( $array ) use ( $type, $kvpKeyName ) {
+		return static function( $array ) use ( $type, $kvpKeyName ) {
 			if ( is_array( $array ) ) {
 				ApiResult::setArrayType( $array, $type, $kvpKeyName );
 			}
diff --git a/lib/includes/Store/CacheRetrievingEntityRevisionLookup.php b/lib/includes/Store/CacheRetrievingEntityRevisionLookup.php
index fd11508..9672943 100644
--- a/lib/includes/Store/CacheRetrievingEntityRevisionLookup.php
+++ b/lib/includes/Store/CacheRetrievingEntityRevisionLookup.php
@@ -101,11 +101,11 @@ class CacheRetrievingEntityRevisionLookup implements EntityRevisionLookup {
 		if ( $entityRevision !== null ) {
 			if ( $revisionId === 0 && $this->shouldVerifyRevision ) {
 				$latestRevisionIdResult = $this->lookup->getLatestRevisionId( $entityId, $mode );
-				$returnFalse = function () {
+				$returnFalse = static function () {
 					return false;
 				};
 
-				$latestRevision = $latestRevisionIdResult->onConcreteRevision( function ( $revId ) {
+				$latestRevision = $latestRevisionIdResult->onConcreteRevision( static function ( $revId ) {
 					return $revId;
 				} )
 					->onRedirect( $returnFalse )
diff --git a/lib/includes/Store/RedirectResolvingLatestRevisionLookup.php b/lib/includes/Store/RedirectResolvingLatestRevisionLookup.php
index 65d5010..09b7f6b 100644
--- a/lib/includes/Store/RedirectResolvingLatestRevisionLookup.php
+++ b/lib/includes/Store/RedirectResolvingLatestRevisionLookup.php
@@ -34,12 +34,12 @@ class RedirectResolvingLatestRevisionLookup {
 		}
 
 		$revisionIdResult = $this->revisionLookup->getLatestRevisionId( $entityId );
-		$returnNull = function () {
+		$returnNull = static function () {
 			return null;
 		};
 
 		$resolutionResult = $revisionIdResult
-			->onConcreteRevision( function ( $revisionId ) use ( $entityId ) {
+			->onConcreteRevision( static function ( $revisionId ) use ( $entityId ) {
 				return [ $revisionId, $entityId ];
 			} )
 			->onNonexistentEntity( $returnNull )
@@ -47,7 +47,7 @@ class RedirectResolvingLatestRevisionLookup {
 				return $this->revisionLookup->getLatestRevisionId( $redirectsTo )
 					->onNonexistentEntity( $returnNull )
 					->onRedirect( $returnNull )
-					->onConcreteRevision( function ( $revisionId ) use ( $redirectsTo ) {
+					->onConcreteRevision( static function ( $revisionId ) use ( $redirectsTo ) {
 						return [ $revisionId, $redirectsTo ];
 					} )
 					->map();
diff --git a/lib/includes/Store/RevisionBasedEntityLookup.php b/lib/includes/Store/RevisionBasedEntityLookup.php
index d01df62..5c5cb6f 100644
--- a/lib/includes/Store/RevisionBasedEntityLookup.php
+++ b/lib/includes/Store/RevisionBasedEntityLookup.php
@@ -63,10 +63,10 @@ class RevisionBasedEntityLookup implements EntityLookup {
 	 * @return bool
 	 */
 	public function hasEntity( EntityId $entityId ) {
-		$returnFalse = function () {
+		$returnFalse = static function () {
 			return false;
 		};
-		$returnTrue = function () {
+		$returnTrue = static function () {
 			return true;
 		};
 
@@ -77,7 +77,7 @@ class RevisionBasedEntityLookup implements EntityLookup {
 				->onConcreteRevision( $returnTrue )
 				->onNonexistentEntity( $returnFalse )
 				// @phan-suppress-next-line PhanPluginNeverReturnFunction
-				->onRedirect( function ( $revisionId, EntityId $redirectsTo ) use ( $entityId ) {
+				->onRedirect( static function ( $revisionId, EntityId $redirectsTo ) use ( $entityId ) {
 
 					throw new UnresolvedEntityRedirectException( $entityId, $redirectsTo );
 				} )
diff --git a/lib/includes/Store/RevisionBasedEntityRedirectTargetLookup.php b/lib/includes/Store/RevisionBasedEntityRedirectTargetLookup.php
index f570840..0b838c9 100644
--- a/lib/includes/Store/RevisionBasedEntityRedirectTargetLookup.php
+++ b/lib/includes/Store/RevisionBasedEntityRedirectTargetLookup.php
@@ -20,7 +20,7 @@ class RevisionBasedEntityRedirectTargetLookup implements EntityRedirectTargetLoo
 	 * @inheritDoc
 	 */
 	public function getRedirectForEntityId( EntityId $entityId, $forUpdate = '' ): ?EntityId {
-		$returnNull = function () {
+		$returnNull = static function () {
 			return null;
 		};
 
@@ -31,7 +31,7 @@ class RevisionBasedEntityRedirectTargetLookup implements EntityRedirectTargetLoo
 		return $this->entityRevisionLookup->getLatestRevisionId( $entityId, $lookupMode )
 			->onNonexistentEntity( $returnNull )
 			->onConcreteRevision( $returnNull )
-			->onRedirect( function ( $revision, EntityId $redirectTarget ) {
+			->onRedirect( static function ( $revision, EntityId $redirectTarget ) {
 				return $redirectTarget;
 			} )
 			->map();
diff --git a/lib/includes/Store/Sql/SiteLinkTable.php b/lib/includes/Store/Sql/SiteLinkTable.php
index 4590a7e..0e3b55b 100644
--- a/lib/includes/Store/Sql/SiteLinkTable.php
+++ b/lib/includes/Store/Sql/SiteLinkTable.php
@@ -73,7 +73,7 @@ class SiteLinkTable implements SiteLinkStore {
 		return array_udiff(
 			$siteLinks1,
 			$siteLinks2,
-			function( SiteLink $a, SiteLink $b ) {
+			static function( SiteLink $a, SiteLink $b ) {
 				$result = strcmp( $a->getSiteId(), $b->getSiteId() );
 
 				if ( $result === 0 ) {
diff --git a/lib/includes/Store/Sql/Terms/DatabaseTermInLangIdsAcquirer.php b/lib/includes/Store/Sql/Terms/DatabaseTermInLangIdsAcquirer.php
index ec7525d..210d907 100644
--- a/lib/includes/Store/Sql/Terms/DatabaseTermInLangIdsAcquirer.php
+++ b/lib/includes/Store/Sql/Terms/DatabaseTermInLangIdsAcquirer.php
@@ -118,13 +118,13 @@ class DatabaseTermInLangIdsAcquirer implements TermInLangIdsAcquirer {
 	) {
 		$texts = [];
 
-		array_walk_recursive( $termsArray, function ( $text ) use ( &$texts ) {
+		array_walk_recursive( $termsArray, static function ( $text ) use ( &$texts ) {
 			$texts[] = $text;
 		} );
 
 		$textIds = $this->acquireTextIds( $texts, $textIdsAcquirer );
 
-		array_walk_recursive( $termsArray, function ( &$text ) use ( $textIds ) {
+		array_walk_recursive( $termsArray, static function ( &$text ) use ( $textIds ) {
 			$text = $textIds[$text];
 		} );
 
@@ -354,7 +354,7 @@ class DatabaseTermInLangIdsAcquirer implements TermInLangIdsAcquirer {
 				}
 
 				return array_map(
-					function ( $record, $idToRestore ) {
+					static function ( $record, $idToRestore ) {
 						$record['wbtl_id'] = $idToRestore;
 						return $record;
 					},
diff --git a/lib/includes/Store/Sql/Terms/Util/ReplicaPrimaryAwareRecordIdsAcquirer.php b/lib/includes/Store/Sql/Terms/Util/ReplicaPrimaryAwareRecordIdsAcquirer.php
index c7f833b..6bdab7c 100644
--- a/lib/includes/Store/Sql/Terms/Util/ReplicaPrimaryAwareRecordIdsAcquirer.php
+++ b/lib/includes/Store/Sql/Terms/Util/ReplicaPrimaryAwareRecordIdsAcquirer.php
@@ -244,7 +244,7 @@ class ReplicaPrimaryAwareRecordIdsAcquirer {
 	 * @return array
 	 */
 	private function findExistingRecords( IReadableDatabase $db, array $neededRecords ): array {
-		$recordsSelectConditions = array_map( function ( $record ) use ( $db ) {
+		$recordsSelectConditions = array_map( static function ( $record ) use ( $db ) {
 			return $db->andExpr( $record );
 		}, $neededRecords );
 
diff --git a/lib/includes/Store/Sql/WikiPageEntityMetaDataLookup.php b/lib/includes/Store/Sql/WikiPageEntityMetaDataLookup.php
index 6c31589..998deee 100644
--- a/lib/includes/Store/Sql/WikiPageEntityMetaDataLookup.php
+++ b/lib/includes/Store/Sql/WikiPageEntityMetaDataLookup.php
@@ -284,7 +284,7 @@ class WikiPageEntityMetaDataLookup implements WikiPageEntityMetaDataAccessor {
 		);
 
 		return array_map(
-			function ( $revisionInformation ) {
+			static function ( $revisionInformation ) {
 				if ( !is_object( $revisionInformation ) ) {
 					return $revisionInformation;
 				}
diff --git a/lib/packages/wikibase/changes/src/EntityChange.php b/lib/packages/wikibase/changes/src/EntityChange.php
index 7fa8407..0acb5bf 100644
--- a/lib/packages/wikibase/changes/src/EntityChange.php
+++ b/lib/packages/wikibase/changes/src/EntityChange.php
@@ -178,7 +178,7 @@ class EntityChange extends DiffChange {
 		if ( defined( 'MW_PHPUNIT_TEST' ) ) {
 			array_walk_recursive(
 				$info,
-				function ( $v ) {
+				static function ( $v ) {
 					if ( is_object( $v ) ) {
 						throw new UnexpectedValueException( "Refusing to serialize PHP object of type " .
 							get_class( $v ) );
diff --git a/lib/packages/wikibase/changes/tests/EntityChangeTest.php b/lib/packages/wikibase/changes/tests/EntityChangeTest.php
index 986f36c..b969e50 100644
--- a/lib/packages/wikibase/changes/tests/EntityChangeTest.php
+++ b/lib/packages/wikibase/changes/tests/EntityChangeTest.php
@@ -42,13 +42,13 @@ class EntityChangeTest extends ChangeRowTest {
 
 		$changes = array_filter(
 			TestChanges::getChanges(),
-			function( EntityChange $change ) use ( $rowClass ) {
+			static function( EntityChange $change ) use ( $rowClass ) {
 				return is_a( $change, $rowClass );
 			}
 		);
 
 		$cases = array_map(
-			function( EntityChange $change ) {
+			static function( EntityChange $change ) {
 				return [ $change ];
 			},
 			$changes );
diff --git a/lib/packages/wikibase/changes/tests/ItemChangeTest.php b/lib/packages/wikibase/changes/tests/ItemChangeTest.php
index 02371f1..51b091c 100644
--- a/lib/packages/wikibase/changes/tests/ItemChangeTest.php
+++ b/lib/packages/wikibase/changes/tests/ItemChangeTest.php
@@ -33,12 +33,12 @@ class ItemChangeTest extends EntityChangeTest {
 	public static function itemChangeProvider() {
 		$changes = array_filter(
 			TestChanges::getChanges(),
-			function( EntityChange $change ) {
+			static function( EntityChange $change ) {
 				return ( $change instanceof ItemChange );
 			}
 		);
 
-		$cases = array_map( function( ItemChange $change ) {
+		$cases = array_map( static function( ItemChange $change ) {
 			return [ $change ];
 		},
 		$changes );
diff --git a/lib/packages/wikibase/data-model-serialization/tests/unit/Deserializers/SnakValueDeserializerTest.php b/lib/packages/wikibase/data-model-serialization/tests/unit/Deserializers/SnakValueDeserializerTest.php
index 3e8a170..c0bc9c3 100644
--- a/lib/packages/wikibase/data-model-serialization/tests/unit/Deserializers/SnakValueDeserializerTest.php
+++ b/lib/packages/wikibase/data-model-serialization/tests/unit/Deserializers/SnakValueDeserializerTest.php
@@ -56,7 +56,7 @@ class SnakValueDeserializerTest extends TestCase {
 
 	public function testGivenBuilderThrows_rethrowsAsDeserializationException(): void {
 		$deserializer = $this->newDeserializer( [
-			'PT:throwy-type' => function () {
+			'PT:throwy-type' => static function () {
 				throw new InvalidArgumentException( 'builder unhappy' );
 			},
 		] );
diff --git a/lib/packages/wikibase/data-model/tests/unit/NewItem.php b/lib/packages/wikibase/data-model/tests/unit/NewItem.php
index 3559da3..64a1a5c 100644
--- a/lib/packages/wikibase/data-model/tests/unit/NewItem.php
+++ b/lib/packages/wikibase/data-model/tests/unit/NewItem.php
@@ -187,7 +187,7 @@ class NewItem {
 	public function andSiteLink( $siteId, $pageName, $badges = null ) {
 		$copy = clone $this;
 		if ( $badges !== null ) {
-			$badges = array_map( function ( $badge ) {
+			$badges = array_map( static function ( $badge ) {
 				return $badge instanceof ItemId ? $badge : new ItemId( $badge );
 			}, (array)$badges );
 		}
diff --git a/lib/resources/Resources.php b/lib/resources/Resources.php
index 3e72738..81ef4d8 100644
--- a/lib/resources/Resources.php
+++ b/lib/resources/Resources.php
@@ -17,7 +17,7 @@ use Wikibase\Repo\WikibaseRepo;
  *
  * @codeCoverageIgnoreStart
  */
-return call_user_func( function() {
+return call_user_func( static function() {
 	$moduleTemplate = [
 		'localBasePath' => __DIR__,
 		'remoteExtPath' => 'Wikibase/lib/resources',
@@ -26,7 +26,7 @@ return call_user_func( function() {
 	$modules = [
 
 		'mw.config.values.wbCurrentSiteDetails' => $moduleTemplate + [
-			'factory' => function () {
+			'factory' => static function () {
 				return new CurrentSiteModule(
 					WikibaseSettings::isClientEnabled() ? WikibaseClient::getSettings() : null,
 					WikibaseSettings::isRepoEnabled() ? WikibaseRepo::getSettings() : null,
@@ -41,7 +41,7 @@ return call_user_func( function() {
 		],
 
 		'mw.config.values.wbSiteDetails' => $moduleTemplate + [
-			'factory' => function () {
+			'factory' => static function () {
 				return new SitesModule(
 					WikibaseSettings::isClientEnabled() ? WikibaseClient::getSettings() : null,
 					WikibaseSettings::isRepoEnabled() ? WikibaseRepo::getSettings() : null,
diff --git a/lib/tests/phpunit/DataTypeDefinitionsTest.php b/lib/tests/phpunit/DataTypeDefinitionsTest.php
index 58cb5b9..5be8cf8 100644
--- a/lib/tests/phpunit/DataTypeDefinitionsTest.php
+++ b/lib/tests/phpunit/DataTypeDefinitionsTest.php
@@ -42,7 +42,7 @@ class DataTypeDefinitionsTest extends \PHPUnit\Framework\TestCase {
 			'PT:bar' => [
 				'value-type' => 'BAR',
 				'formatter-factory-callback' => 'DataTypeDefinitionsTest::getBarFormatter',
-				'rdf-data-type' => function () {
+				'rdf-data-type' => static function () {
 					return 'acme-test-2';
 				},
 			],
diff --git a/lib/tests/phpunit/DataValueFactoryTest.php b/lib/tests/phpunit/DataValueFactoryTest.php
index c1cfe67..73256c0 100644
--- a/lib/tests/phpunit/DataValueFactoryTest.php
+++ b/lib/tests/phpunit/DataValueFactoryTest.php
@@ -21,7 +21,7 @@ class DataValueFactoryTest extends \PHPUnit\Framework\TestCase {
 	public function newInstance() {
 		$deserializer = $this->createMock( Deserializer::class );
 		$deserializer->method( 'deserialize' )
-			->willReturnCallback( function( array $data ) {
+			->willReturnCallback( static function( array $data ) {
 				if ( $data['type'] === 'string' ) {
 					return 'success';
 				}
diff --git a/lib/tests/phpunit/EntityFactoryTest.php b/lib/tests/phpunit/EntityFactoryTest.php
index a561030..711b7ff 100644
--- a/lib/tests/phpunit/EntityFactoryTest.php
+++ b/lib/tests/phpunit/EntityFactoryTest.php
@@ -21,10 +21,10 @@ class EntityFactoryTest extends \PHPUnit\Framework\TestCase {
 
 	private function getEntityFactory() {
 		$instantiators = [
-			'item' => function() {
+			'item' => static function() {
 				return new Item();
 			},
-			'property' => function() {
+			'property' => static function() {
 				return Property::newFromType( 'string' );
 			},
 		];
diff --git a/lib/tests/phpunit/EntityRevisionLookupTestCase.php b/lib/tests/phpunit/EntityRevisionLookupTestCase.php
index 733f229..0b5c824 100644
--- a/lib/tests/phpunit/EntityRevisionLookupTestCase.php
+++ b/lib/tests/phpunit/EntityRevisionLookupTestCase.php
@@ -185,7 +185,7 @@ abstract class EntityRevisionLookupTestCase extends MediaWikiIntegrationTestCase
 		$result = $lookup->getLatestRevisionId( $id );
 		$gotRevisionId = $result->onRedirect( $shouldNotBeCalled )
 			->onNonexistentEntity( $shouldNotBeCalled )
-			->onConcreteRevision( function ( $revId ) {
+			->onConcreteRevision( static function ( $revId ) {
 				return $revId;
 			} )
 			->map();
@@ -209,7 +209,7 @@ abstract class EntityRevisionLookupTestCase extends MediaWikiIntegrationTestCase
 		$result = $lookup->getLatestRevisionId( $itemId );
 		$gotRevision = $result->onRedirect( $shouldNotBeCalled )
 			->onNonexistentEntity(
-				function () {
+				static function () {
 					return 'non-existent';
 				}
 			)
diff --git a/lib/tests/phpunit/EntityTypesTest.php b/lib/tests/phpunit/EntityTypesTest.php
index ac495ed..a6f04d5 100644
--- a/lib/tests/phpunit/EntityTypesTest.php
+++ b/lib/tests/phpunit/EntityTypesTest.php
@@ -61,7 +61,7 @@ class EntityTypesTest extends \PHPUnit\Framework\TestCase {
 
 	public static function provideEntityTypes() {
 		return array_map(
-			function( $entityType ) {
+			static function( $entityType ) {
 				return [ $entityType ];
 			},
 			array_keys( self::getRegistry() )
diff --git a/lib/tests/phpunit/Formatters/BinaryOptionDispatchingSnakFormatterTest.php b/lib/tests/phpunit/Formatters/BinaryOptionDispatchingSnakFormatterTest.php
index a008448..da0699a 100644
--- a/lib/tests/phpunit/Formatters/BinaryOptionDispatchingSnakFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/BinaryOptionDispatchingSnakFormatterTest.php
@@ -110,7 +110,7 @@ class BinaryOptionDispatchingSnakFormatterTest extends \PHPUnit\Framework\TestCa
 	private function getPropertyDataTypeLookup() {
 		$propertyDataTypeLookup = $this->createMock( PropertyDataTypeLookup::class );
 		$propertyDataTypeLookup->method( 'getDataTypeIdForProperty' )
-			->willReturnCallback( function( NumericPropertyId $propertyId ) {
+			->willReturnCallback( static function( NumericPropertyId $propertyId ) {
 				switch ( $propertyId->getSerialization() ) {
 					case 'P1':
 						return 'special';
diff --git a/lib/tests/phpunit/Formatters/DispatchingValueFormatterTest.php b/lib/tests/phpunit/Formatters/DispatchingValueFormatterTest.php
index b9c9066..1414d85 100644
--- a/lib/tests/phpunit/Formatters/DispatchingValueFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/DispatchingValueFormatterTest.php
@@ -61,7 +61,7 @@ class DispatchingValueFormatterTest extends \PHPUnit\Framework\TestCase {
 	}
 
 	public static function formatProvider() {
-		$formattersFactory = function ( self $self ) {
+		$formattersFactory = static function ( self $self ) {
 			$stringFormatter = $self->createMock( ValueFormatter::class );
 			$stringFormatter->method( 'format' )
 				->willReturn( 'VT:string' );
@@ -120,7 +120,7 @@ class DispatchingValueFormatterTest extends \PHPUnit\Framework\TestCase {
 	}
 
 	public static function formatValueProvider() {
-		$formattersFactory = function ( self $self ) {
+		$formattersFactory = static function ( self $self ) {
 			$stringFormatter = $self->createMock( ValueFormatter::class );
 			$stringFormatter->method( 'format' )
 				->willReturn( 'VT:string' );
diff --git a/lib/tests/phpunit/Formatters/FormatterLabelDescriptionLookupFactoryTest.php b/lib/tests/phpunit/Formatters/FormatterLabelDescriptionLookupFactoryTest.php
index 44a0dcf..f978656 100644
--- a/lib/tests/phpunit/Formatters/FormatterLabelDescriptionLookupFactoryTest.php
+++ b/lib/tests/phpunit/Formatters/FormatterLabelDescriptionLookupFactoryTest.php
@@ -56,11 +56,11 @@ class FormatterLabelDescriptionLookupFactoryTest extends \PHPUnit\Framework\Test
 	}
 
 	public static function provideGetLabelDescriptionLookup() {
-		$termLookupFactory = function ( self $self ) {
+		$termLookupFactory = static function ( self $self ) {
 			$termLookup = $self->createMock( TermLookup::class );
 
 			$termLookup->method( 'getLabel' )
-				->willReturnCallback( function ( $item, $language ) {
+				->willReturnCallback( static function ( $item, $language ) {
 					if ( $language === 'de' ) {
 						return 'Kätzchen';
 					}
@@ -74,7 +74,7 @@ class FormatterLabelDescriptionLookupFactoryTest extends \PHPUnit\Framework\Test
 			return $termLookup;
 		};
 
-		$getDeChChain = function ( self $self ) {
+		$getDeChChain = static function ( self $self ) {
 			$stubContentLanguages = $self->createStub( ContentLanguages::class );
 			$stubContentLanguages->method( 'hasLanguage' )
 				->willReturn( true );
diff --git a/lib/tests/phpunit/Formatters/GlobeCoordinateDetailsFormatterTest.php b/lib/tests/phpunit/Formatters/GlobeCoordinateDetailsFormatterTest.php
index ef915a8..aaaf4d3 100644
--- a/lib/tests/phpunit/Formatters/GlobeCoordinateDetailsFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/GlobeCoordinateDetailsFormatterTest.php
@@ -26,7 +26,7 @@ class GlobeCoordinateDetailsFormatterTest extends \PHPUnit\Framework\TestCase {
 	private function newFormatter( ?FormatterOptions $options = null ) {
 		$vocabularyUriFormatter = $this->createMock( ValueFormatter::class );
 		$vocabularyUriFormatter->method( 'format' )
-			->willReturnCallback( function( $value ) {
+			->willReturnCallback( static function( $value ) {
 				return preg_match( '@^http://www\.wikidata\.org/entity/(.*)@', $value, $matches )
 					? "formatted-globe-{$matches[1]}"
 					: $value;
diff --git a/lib/tests/phpunit/Formatters/HtmlExternalIdentifierFormatterTest.php b/lib/tests/phpunit/Formatters/HtmlExternalIdentifierFormatterTest.php
index 82b2988..39c9764 100644
--- a/lib/tests/phpunit/Formatters/HtmlExternalIdentifierFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/HtmlExternalIdentifierFormatterTest.php
@@ -24,11 +24,11 @@ use Wikimedia\Assert\ParameterTypeException;
 class HtmlExternalIdentifierFormatterTest extends \PHPUnit\Framework\TestCase {
 
 	public static function provideFormatSnak() {
-		$formatterUrlExpanderFactory = function ( self $self ) {
+		$formatterUrlExpanderFactory = static function ( self $self ) {
 			$formatterUrlExpander = $self->createMock( SnakUrlExpander::class );
 
 			$formatterUrlExpander->method( 'expandUrl' )
-				->willReturnCallback( function( PropertyValueSnak $snak ) {
+				->willReturnCallback( static function( PropertyValueSnak $snak ) {
 					if ( $snak->getPropertyId()->getSerialization() === 'P1' ) {
 						$value = $snak->getDataValue()->getValue();
 						return 'http://acme.test/stuff/' . wfUrlencode( $value );
diff --git a/lib/tests/phpunit/Formatters/ItemPropertyIdHtmlLinkFormatterTest.php b/lib/tests/phpunit/Formatters/ItemPropertyIdHtmlLinkFormatterTest.php
index 8039b16..e2b7967 100644
--- a/lib/tests/phpunit/Formatters/ItemPropertyIdHtmlLinkFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/ItemPropertyIdHtmlLinkFormatterTest.php
@@ -72,7 +72,7 @@ class ItemPropertyIdHtmlLinkFormatterTest extends MediaWikiIntegrationTestCase {
 
 		$this->languageNameLookup->method( 'getName' )
 			->willReturnCallback(
-				function ( $languageCode ) use ( &$currentUserLanguage ) {
+				static function ( $languageCode ) use ( &$currentUserLanguage ) {
 					$languageNamesIn = [
 						'en' => [
 							'en' => 'English',
@@ -475,7 +475,7 @@ class ItemPropertyIdHtmlLinkFormatterTest extends MediaWikiIntegrationTestCase {
 		$this->labelDescriptionLookup->method( 'getLabel' )
 			->with( $id )
 			->willReturnCallback(
-				function () use (
+				static function () use (
 					$labelLanguage,
 					$labelText,
 					$testCase
@@ -547,16 +547,16 @@ class ItemPropertyIdHtmlLinkFormatterTest extends MediaWikiIntegrationTestCase {
 		$isLocal = true;
 		$isRedirect = false;
 		$prefixedTitleText = $itemId;
-		$title->method( 'isLocal' )->willReturnCallback( function () use ( &$isLocal ) {
+		$title->method( 'isLocal' )->willReturnCallback( static function () use ( &$isLocal ) {
 			return $isLocal;
 		} );
-		$title->method( 'isRedirect' )->willReturnCallback( function () use ( &$isRedirect ) {
+		$title->method( 'isRedirect' )->willReturnCallback( static function () use ( &$isRedirect ) {
 			return $isRedirect;
 		} );
 		$title->method( 'isKnown' )->willReturn( true );
 		$title->method( 'isRedirect' )->willReturn( false );
 		$title->method( 'getLocalURL' )->willReturn( $this->itemPageUrl( $itemId ) );
-		$title->method( 'getPrefixedText' )->willReturnCallback( function () use ( &$prefixedTitleText ) {
+		$title->method( 'getPrefixedText' )->willReturnCallback( static function () use ( &$prefixedTitleText ) {
 			return $prefixedTitleText;
 		} );
 
@@ -623,13 +623,13 @@ class ItemPropertyIdHtmlLinkFormatterTest extends MediaWikiIntegrationTestCase {
 		$title = $this->createMock( Title::class );
 		$isLocal = true;
 		$prefixedTitleText = $propertyId;
-		$title->method( 'isLocal' )->willReturnCallback( function () use ( &$isLocal ) {
+		$title->method( 'isLocal' )->willReturnCallback( static function () use ( &$isLocal ) {
 			return $isLocal;
 		} );
 		$title->method( 'isKnown' )->willReturn( true );
 		$title->method( 'isRedirect' )->willReturn( false );
 		$title->method( 'getLocalURL' )->willReturn( $this->propertyPageUrl( $propertyId ) );
-		$title->method( 'getPrefixedText' )->willReturnCallback( function () use ( &$prefixedTitleText ) {
+		$title->method( 'getPrefixedText' )->willReturnCallback( static function () use ( &$prefixedTitleText ) {
 			return $prefixedTitleText;
 		} );
 
diff --git a/lib/tests/phpunit/Formatters/LabelsProviderEntityIdHtmlLinkFormatterTest.php b/lib/tests/phpunit/Formatters/LabelsProviderEntityIdHtmlLinkFormatterTest.php
index e710b55..314f680 100644
--- a/lib/tests/phpunit/Formatters/LabelsProviderEntityIdHtmlLinkFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/LabelsProviderEntityIdHtmlLinkFormatterTest.php
@@ -222,7 +222,7 @@ class LabelsProviderEntityIdHtmlLinkFormatterTest extends MediaWikiIntegrationTe
 		$languageNameLookup = $this->createMock( LanguageNameLookup::class );
 		$languageNameLookup->method( 'getNameForTerms' )
 			->willReturnCallback(
-				function ( $languageCode ) {
+				static function ( $languageCode ) {
 					$names = [
 						'de' => 'Deutsch',
 						'de-at' => 'Österreichisches Deutsch',
diff --git a/lib/tests/phpunit/Formatters/OutputFormatSnakFormatterFactoryTest.php b/lib/tests/phpunit/Formatters/OutputFormatSnakFormatterFactoryTest.php
index d6d3e69..538f9ad 100644
--- a/lib/tests/phpunit/Formatters/OutputFormatSnakFormatterFactoryTest.php
+++ b/lib/tests/phpunit/Formatters/OutputFormatSnakFormatterFactoryTest.php
@@ -62,7 +62,7 @@ class OutputFormatSnakFormatterFactoryTest extends \PHPUnit\Framework\TestCase {
 
 		$messageInLanguageProvider = $this->createMock( MessageInLanguageProvider::class );
 		$messageInLanguageProvider->method( 'msgInLang' )
-			->willReturnCallback( function ( $key, $lang, ...$params ) use ( $languageFactory ) {
+			->willReturnCallback( static function ( $key, $lang, ...$params ) use ( $languageFactory ) {
 				// ignore $lang, always use qqx
 				return new Message( $key, $params, $languageFactory->getLanguage( 'qqx' ) );
 			} );
@@ -86,7 +86,7 @@ class OutputFormatSnakFormatterFactoryTest extends \PHPUnit\Framework\TestCase {
 
 		$mock->method( 'format' )
 			->willReturnCallback(
-				function( DataValue $value ) use ( $format ) {
+				static function( DataValue $value ) use ( $format ) {
 					return strval( $value->getValue() ) . ' (' . $format . ')';
 				}
 			);
@@ -104,7 +104,7 @@ class OutputFormatSnakFormatterFactoryTest extends \PHPUnit\Framework\TestCase {
 
 		$mock->method( 'formatSnak' )
 			->willReturnCallback(
-				function( Snak $snak ) use ( $format ) {
+				static function( Snak $snak ) use ( $format ) {
 					$s = $snak->getType() . '/' . $snak->getPropertyId();
 
 					if ( $snak instanceof PropertyValueSnak ) {
diff --git a/lib/tests/phpunit/Formatters/OutputFormatValueFormatterFactoryTest.php b/lib/tests/phpunit/Formatters/OutputFormatValueFormatterFactoryTest.php
index 07e65dd..aa3e8d6 100644
--- a/lib/tests/phpunit/Formatters/OutputFormatValueFormatterFactoryTest.php
+++ b/lib/tests/phpunit/Formatters/OutputFormatValueFormatterFactoryTest.php
@@ -61,10 +61,10 @@ class OutputFormatValueFormatterFactoryTest extends \PHPUnit\Framework\TestCase
 
 	private function newOutputFormatValueFormatterFactory() {
 		$factoryCallbacks = [
-			'VT:string' => function( $format, FormatterOptions $options ) {
+			'VT:string' => static function( $format, FormatterOptions $options ) {
 				return new StringFormatter();
 			},
-			'PT:url' => function( $format, FormatterOptions $options ) {
+			'PT:url' => static function( $format, FormatterOptions $options ) {
 				return new StringFormatter();
 			},
 		];
@@ -168,7 +168,7 @@ class OutputFormatValueFormatterFactoryTest extends \PHPUnit\Framework\TestCase
 		$factory = $this->newOutputFormatValueFormatterFactory();
 		$factory->setFormatterFactoryCallback(
 			'VT:wikibase-entityid',
-			function () {
+			static function () {
 				return new EntityIdValueFormatter( new PlainEntityIdFormatter() );
 			}
 		);
diff --git a/lib/tests/phpunit/Formatters/PropertyValueSnakFormatterTest.php b/lib/tests/phpunit/Formatters/PropertyValueSnakFormatterTest.php
index 0c88511..a5cdf4e 100644
--- a/lib/tests/phpunit/Formatters/PropertyValueSnakFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/PropertyValueSnakFormatterTest.php
@@ -142,7 +142,7 @@ class PropertyValueSnakFormatterTest extends \PHPUnit\Framework\TestCase {
 	}
 
 	public static function formatSnakProvider() {
-		$dispatchingFormatterFactory = function ( self $self ) {
+		$dispatchingFormatterFactory = static function ( self $self ) {
 			$formatters = [
 				'VT:bad' => new UnDeserializableValueFormatter( new FormatterOptions() ),
 				'VT:string' => $self->getMockFormatter( 'VT:string' ),
diff --git a/lib/tests/phpunit/Formatters/QuantityDetailsFormatterTest.php b/lib/tests/phpunit/Formatters/QuantityDetailsFormatterTest.php
index 403ee36..2aef61b 100644
--- a/lib/tests/phpunit/Formatters/QuantityDetailsFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/QuantityDetailsFormatterTest.php
@@ -28,7 +28,7 @@ class QuantityDetailsFormatterTest extends \PHPUnit\Framework\TestCase {
 	private function newFormatter( ?NumberLocalizer $numberLocalizer = null ) {
 		$vocabularyUriFormatter = $this->createMock( ValueFormatter::class );
 		$vocabularyUriFormatter->method( 'format' )
-			->willReturnCallback( function( $value ) {
+			->willReturnCallback( static function( $value ) {
 				return preg_match( '@^http://www\.wikidata\.org/entity/(.*)@', $value, $matches )
 					? $matches[1]
 					: $value;
diff --git a/lib/tests/phpunit/Formatters/Reference/DataBridgeReferenceFormatterTest.php b/lib/tests/phpunit/Formatters/Reference/DataBridgeReferenceFormatterTest.php
index b7d6866..741c347 100644
--- a/lib/tests/phpunit/Formatters/Reference/DataBridgeReferenceFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/Reference/DataBridgeReferenceFormatterTest.php
@@ -67,7 +67,7 @@ class DataBridgeReferenceFormatterTest extends TestCase {
 	private function stringSnakFormatter(): SnakFormatter {
 		$snakFormatter = $this->createMock( SnakFormatter::class );
 		$snakFormatter->method( 'formatSnak' )
-			->willReturnCallback( function ( PropertyValueSnak $snak ) {
+			->willReturnCallback( static function ( PropertyValueSnak $snak ) {
 				return (string)$snak->getDataValue()->getValue();
 			} );
 		return $snakFormatter;
diff --git a/lib/tests/phpunit/Formatters/VocabularyUriFormatterTest.php b/lib/tests/phpunit/Formatters/VocabularyUriFormatterTest.php
index 6ca1876..7b15362 100644
--- a/lib/tests/phpunit/Formatters/VocabularyUriFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/VocabularyUriFormatterTest.php
@@ -40,7 +40,7 @@ class VocabularyUriFormatterTest extends \PHPUnit\Framework\TestCase {
 	public function testFormat( $unit, $expected ) {
 		$labelLookup = $this->createMock( LabelDescriptionLookup::class );
 		$labelLookup->method( 'getLabel' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				if ( $id->getSerialization() === 'Q112233' ) {
 					throw new LabelDescriptionLookupException( $id, 'No such label!' );
 				}
diff --git a/lib/tests/phpunit/Formatters/WikibaseValueFormatterBuildersTest.php b/lib/tests/phpunit/Formatters/WikibaseValueFormatterBuildersTest.php
index 0289ff8..42a41ff 100644
--- a/lib/tests/phpunit/Formatters/WikibaseValueFormatterBuildersTest.php
+++ b/lib/tests/phpunit/Formatters/WikibaseValueFormatterBuildersTest.php
@@ -78,7 +78,7 @@ class WikibaseValueFormatterBuildersTest extends MediaWikiIntegrationTestCase {
 		$termLookup = $this->createMock( TermLookup::class );
 
 		$termLookup->method( 'getLabel' )
-			->willReturnCallback( function ( EntityId $id, $language ) {
+			->willReturnCallback( static function ( EntityId $id, $language ) {
 				switch ( $language ) {
 					case 'de':
 						return 'Name für ' . $id->getSerialization();
@@ -88,7 +88,7 @@ class WikibaseValueFormatterBuildersTest extends MediaWikiIntegrationTestCase {
 			} );
 
 		$termLookup->method( 'getLabels' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				return [
 					'de' => 'Name für ' . $id->getSerialization(),
 					'en' => 'Label for ' . $id->getSerialization(),
@@ -104,13 +104,13 @@ class WikibaseValueFormatterBuildersTest extends MediaWikiIntegrationTestCase {
 
 		$urlLookup = $this->createMock( EntityUrlLookup::class );
 		$urlLookup->method( 'getLinkUrl' )
-			->willReturnCallback( function ( EntityId $id ) {
+			->willReturnCallback( static function ( EntityId $id ) {
 				return '/wiki/' . $id->getSerialization();
 			} );
 
 		$redirectResolvingLatestRevisionLookup = $this->createStub( RedirectResolvingLatestRevisionLookup::class );
 		$redirectResolvingLatestRevisionLookup->method( 'lookupLatestRevisionResolvingRedirect' )
-			->willReturnCallback( function ( EntityId $id ) {
+			->willReturnCallback( static function ( EntityId $id ) {
 				return [
 					123, // some non-null revision id
 					$id,
@@ -180,7 +180,7 @@ class WikibaseValueFormatterBuildersTest extends MediaWikiIntegrationTestCase {
 
 		$titleLookup->method( 'getTitleForId' )
 			->willReturnCallback(
-				function ( EntityId $id ) {
+				static function ( EntityId $id ) {
 					return Title::makeTitle( NS_MAIN, $id->getSerialization() );
 				}
 			);
diff --git a/lib/tests/phpunit/Formatters/WikitextExternalIdentifierFormatterTest.php b/lib/tests/phpunit/Formatters/WikitextExternalIdentifierFormatterTest.php
index 6f4df25..fa39893 100644
--- a/lib/tests/phpunit/Formatters/WikitextExternalIdentifierFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/WikitextExternalIdentifierFormatterTest.php
@@ -24,10 +24,10 @@ use Wikimedia\Assert\ParameterTypeException;
 class WikitextExternalIdentifierFormatterTest extends \PHPUnit\Framework\TestCase {
 
 	public static function provideFormatSnak() {
-		$formatterUrlExpanderFactory = function ( self $self ) {
+		$formatterUrlExpanderFactory = static function ( self $self ) {
 			$expander = $self->createMock( SnakUrlExpander::class );
 			$expander->method( 'expandUrl' )
-				->willReturnCallback( function ( PropertyValueSnak $snak ) {
+				->willReturnCallback( static function ( PropertyValueSnak $snak ) {
 					$value = $snak->getDataValue()->getValue();
 
 					switch ( $snak->getPropertyId()->getSerialization() ) {
diff --git a/lib/tests/phpunit/Interactors/MatchingTermsLookupSearchInteractorTest.php b/lib/tests/phpunit/Interactors/MatchingTermsLookupSearchInteractorTest.php
index 6ed971f..1e936ec 100644
--- a/lib/tests/phpunit/Interactors/MatchingTermsLookupSearchInteractorTest.php
+++ b/lib/tests/phpunit/Interactors/MatchingTermsLookupSearchInteractorTest.php
@@ -84,7 +84,7 @@ class MatchingTermsLookupSearchInteractorTest extends \PHPUnit\Framework\TestCas
 	private function getMockPrefetchingTermLookup() {
 		$mock = $this->createMock( PrefetchingTermLookup::class );
 		$mock->method( 'getLabels' )
-			->willReturnCallback( function( EntityId $entityId, $languageCodes ) {
+			->willReturnCallback( static function( EntityId $entityId, $languageCodes ) {
 				$labels = [];
 				foreach ( $languageCodes as $languageCode ) {
 					$labels[$languageCode] = 'label-' . $languageCode . '-' . $entityId->getSerialization();
@@ -93,7 +93,7 @@ class MatchingTermsLookupSearchInteractorTest extends \PHPUnit\Framework\TestCas
 			}
 			);
 		$mock->method( 'getDescriptions' )
-			->willReturnCallback( function( EntityId $entityId, $languageCodes ) {
+			->willReturnCallback( static function( EntityId $entityId, $languageCodes ) {
 				$descriptions = [];
 				foreach ( $languageCodes as $languageCode ) {
 					$descriptions[$languageCode] =
@@ -129,14 +129,14 @@ class MatchingTermsLookupSearchInteractorTest extends \PHPUnit\Framework\TestCas
 	public function getMockLanguageFallbackChainFromLanguage( $langCode ) {
 		$mockFallbackChain = $this->createMock( TermLanguageFallbackChain::class );
 		$mockFallbackChain->method( 'getFetchLanguageCodes' )
-			->willReturnCallback( function () use( $langCode ) {
+			->willReturnCallback( static function () use( $langCode ) {
 				if ( $langCode === 'en-gb' || $langCode === 'en-ca' ) {
 					return [ $langCode, 'en' ];
 				}
 				return [ $langCode ]; // no fallback for everything else...
 			} );
 		$mockFallbackChain->method( 'extractPreferredValue' )
-			->willReturnCallback( function( $data ) {
+			->willReturnCallback( static function( $data ) {
 				foreach ( $data as $languageCode => $value ) {
 					return [
 						'value' => $value,
diff --git a/lib/tests/phpunit/LanguageFallbackChainFactoryTest.php b/lib/tests/phpunit/LanguageFallbackChainFactoryTest.php
index 1dc4e02..6ba313a 100644
--- a/lib/tests/phpunit/LanguageFallbackChainFactoryTest.php
+++ b/lib/tests/phpunit/LanguageFallbackChainFactoryTest.php
@@ -38,14 +38,14 @@ class LanguageFallbackChainFactoryTest extends MediaWikiIntegrationTestCase {
 	 */
 	private function assertChainEquals( array $expectedItems, array $chain ) {
 		// format both chains into a string for a nice message in case of assertion failure
-		$expectedChain = implode( ',', array_map( function ( $expected ) {
+		$expectedChain = implode( ',', array_map( static function ( $expected ) {
 			if ( is_array( $expected ) ) {
 				return "{$expected[0]}({$expected[1]})";
 			} else {
 				return $expected;
 			}
 		}, $expectedItems ) );
-		$actualChain = implode( ',', array_map( function ( LanguageWithConversion $actual ) {
+		$actualChain = implode( ',', array_map( static function ( LanguageWithConversion $actual ) {
 			if ( $actual->getSourceLanguageCode() === null ) {
 				return $actual->getLanguageCode();
 			} else {
diff --git a/lib/tests/phpunit/LanguageFallbackIndicatorTest.php b/lib/tests/phpunit/LanguageFallbackIndicatorTest.php
index 7dfaa65..2b02c77 100644
--- a/lib/tests/phpunit/LanguageFallbackIndicatorTest.php
+++ b/lib/tests/phpunit/LanguageFallbackIndicatorTest.php
@@ -21,7 +21,7 @@ class LanguageFallbackIndicatorTest extends \PHPUnit\Framework\TestCase {
 	private function getIndicator() {
 		$languageNameLookup = $this->createMock( LanguageNameLookup::class );
 		$languageNameLookup->method( 'getNameForTerms' )
-			->willReturnCallback( function( $languageCode ) {
+			->willReturnCallback( static function( $languageCode ) {
 				$names = [
 						'de' => 'Deutsch',
 						'de-at' => 'Österreichisches Deutsch',
diff --git a/lib/tests/phpunit/MockRepositoryTest.php b/lib/tests/phpunit/MockRepositoryTest.php
index 8557bf4..574c39b 100644
--- a/lib/tests/phpunit/MockRepositoryTest.php
+++ b/lib/tests/phpunit/MockRepositoryTest.php
@@ -691,7 +691,7 @@ class MockRepositoryTest extends TestCase {
 			->onNonexistentEntity( $failTest )
 			->onConcreteRevision( $failTest )
 			->onRedirect(
-				function ( $revisionId, $targetId ) {
+				static function ( $revisionId, $targetId ) {
 					return [ $revisionId, $targetId ];
 				}
 			)
diff --git a/lib/tests/phpunit/Modules/CurrentSiteModuleTest.php b/lib/tests/phpunit/Modules/CurrentSiteModuleTest.php
index f9b9ccf..84e376e 100644
--- a/lib/tests/phpunit/Modules/CurrentSiteModuleTest.php
+++ b/lib/tests/phpunit/Modules/CurrentSiteModuleTest.php
@@ -30,7 +30,7 @@ class CurrentSiteModuleTest extends \PHPUnit\Framework\TestCase {
 	private function getContext(): Context {
 		$context = $this->createMock( Context::class );
 		$context->method( 'msg' )
-			->willReturnCallback( function ( $key ) {
+			->willReturnCallback( static function ( $key ) {
 				return new RawMessage( "($key)" );
 			} );
 
diff --git a/lib/tests/phpunit/Modules/DataTypesModuleTest.php b/lib/tests/phpunit/Modules/DataTypesModuleTest.php
index f8f1011..d8821f6 100644
--- a/lib/tests/phpunit/Modules/DataTypesModuleTest.php
+++ b/lib/tests/phpunit/Modules/DataTypesModuleTest.php
@@ -22,7 +22,7 @@ class DataTypesModuleTest extends \PHPUnit\Framework\TestCase {
 		$validResourceDefinitions = [
 			[
 				'datatypesconfigvarname' => 'foo',
-				'datatypefactory' => function() {
+				'datatypefactory' => static function() {
 					return new DataTypeFactory( [] );
 				},
 			],
@@ -49,7 +49,7 @@ class DataTypesModuleTest extends \PHPUnit\Framework\TestCase {
 
 		$validDefinition = [
 			'datatypesconfigvarname' => 'foo',
-			'datatypefactory' => function() {
+			'datatypefactory' => static function() {
 				return new DataTypeFactory( [] );
 			},
 		];
@@ -84,7 +84,7 @@ class DataTypesModuleTest extends \PHPUnit\Framework\TestCase {
 				array_merge(
 					$validDefinition,
 					[
-						'datatypefactory' => function() {
+						'datatypefactory' => static function() {
 							return null;
 						},
 					]
diff --git a/lib/tests/phpunit/Modules/SitesModuleTest.php b/lib/tests/phpunit/Modules/SitesModuleTest.php
index 1586cc9..6497b30 100644
--- a/lib/tests/phpunit/Modules/SitesModuleTest.php
+++ b/lib/tests/phpunit/Modules/SitesModuleTest.php
@@ -30,7 +30,7 @@ class SitesModuleTest extends \PHPUnit\Framework\TestCase {
 	private function getContext(): Context {
 		$context = $this->createMock( Context::class );
 		$context->method( 'msg' )
-			->willReturnCallback( function ( $key ) {
+			->willReturnCallback( static function ( $key ) {
 				return new RawMessage( "($key)" );
 			} );
 
diff --git a/lib/tests/phpunit/ParserFunctions/CommaSeparatedListTest.php b/lib/tests/phpunit/ParserFunctions/CommaSeparatedListTest.php
index 515e2dc..4068542 100644
--- a/lib/tests/phpunit/ParserFunctions/CommaSeparatedListTest.php
+++ b/lib/tests/phpunit/ParserFunctions/CommaSeparatedListTest.php
@@ -25,7 +25,7 @@ class CommaSeparatedListTest extends \PHPUnit\Framework\TestCase {
 
 	public function testHandle() {
 		$language = $this->createMock( Language::class );
-		$language->method( 'commaList' )->willReturnCallback( function ( $words ) {
+		$language->method( 'commaList' )->willReturnCallback( static function ( $words ) {
 			return implode( ', ', $words );
 		} );
 		$parser = $this->createMock( Parser::class );
diff --git a/lib/tests/phpunit/Serialization/CallbackFactoryTest.php b/lib/tests/phpunit/Serialization/CallbackFactoryTest.php
index e63b712..4e1b4d3 100644
--- a/lib/tests/phpunit/Serialization/CallbackFactoryTest.php
+++ b/lib/tests/phpunit/Serialization/CallbackFactoryTest.php
@@ -94,7 +94,7 @@ class CallbackFactoryTest extends \PHPUnit\Framework\TestCase {
 		$parser = $this->createMock( EntityIdParser::class );
 		$parser->expects( $this->once() )
 			->method( 'parse' )
-			->willReturnCallback( function ( string $id ) {
+			->willReturnCallback( static function ( string $id ) {
 				return new NumericPropertyId( $id );
 			} );
 
diff --git a/lib/tests/phpunit/Serialization/SerializationModifierTest.php b/lib/tests/phpunit/Serialization/SerializationModifierTest.php
index abfa4c4..6253413 100644
--- a/lib/tests/phpunit/Serialization/SerializationModifierTest.php
+++ b/lib/tests/phpunit/Serialization/SerializationModifierTest.php
@@ -25,7 +25,7 @@ class SerializationModifierTest extends \PHPUnit\Framework\TestCase {
 		return [
 			[
 				'',
-				function( $value ) {
+				static function( $value ) {
 					$value['foo'] = 'bar';
 					return $value;
 				},
@@ -34,7 +34,7 @@ class SerializationModifierTest extends \PHPUnit\Framework\TestCase {
 			],
 			[
 				'foo/*',
-				function( $value ) {
+				static function( $value ) {
 					if ( isset( $value['a'] ) ) {
 						unset( $value['a'] );
 						$value['removed'] = true;
@@ -57,7 +57,7 @@ class SerializationModifierTest extends \PHPUnit\Framework\TestCase {
 			],
 			[
 				'entities/*/claims/*/*/references/*/snaks/*/type',
-				function( $value ) {
+				static function( $value ) {
 					if ( $value === 'bar' ) {
 						$value = 'BAR';
 					}
@@ -191,11 +191,11 @@ class SerializationModifierTest extends \PHPUnit\Framework\TestCase {
 	}
 
 	public static function provideCallbacks(): iterable {
-		$typeEntityCallback = function ( $value ) {
+		$typeEntityCallback = static function ( $value ) {
 			$value['type'] = 'entity';
 			return $value;
 		};
-		$typeLabelCallback = function ( $value ) {
+		$typeLabelCallback = static function ( $value ) {
 			$value['type'] = 'label';
 			return $value;
 		};
diff --git a/lib/tests/phpunit/ServiceBySourceAndTypeDispatcherTest.php b/lib/tests/phpunit/ServiceBySourceAndTypeDispatcherTest.php
index 5479125..2e7a07e 100644
--- a/lib/tests/phpunit/ServiceBySourceAndTypeDispatcherTest.php
+++ b/lib/tests/phpunit/ServiceBySourceAndTypeDispatcherTest.php
@@ -39,7 +39,7 @@ class ServiceBySourceAndTypeDispatcherTest extends TestCase {
 	}
 
 	private static function getSomeServiceReturningCallback( $fakeServiceToReturn = null ) {
-		return function () use ( $fakeServiceToReturn ) {
+		return static function () use ( $fakeServiceToReturn ) {
 			return $fakeServiceToReturn ?? new stdClass();
 		};
 	}
diff --git a/lib/tests/phpunit/ServiceByTypeDispatcherTest.php b/lib/tests/phpunit/ServiceByTypeDispatcherTest.php
index 025e79b..009b6df 100644
--- a/lib/tests/phpunit/ServiceByTypeDispatcherTest.php
+++ b/lib/tests/phpunit/ServiceByTypeDispatcherTest.php
@@ -27,7 +27,7 @@ class ServiceByTypeDispatcherTest extends TestCase {
 	}
 
 	private static function getSomeServiceReturningCallback( $fakeServiceToReturn = null ) {
-		return function () use ( $fakeServiceToReturn ) {
+		return static function () use ( $fakeServiceToReturn ) {
 			return $fakeServiceToReturn ?? new stdClass();
 		};
 	}
diff --git a/lib/tests/phpunit/SimpleCacheTestCase.php b/lib/tests/phpunit/SimpleCacheTestCase.php
index b4be5ae..7375c63 100644
--- a/lib/tests/phpunit/SimpleCacheTestCase.php
+++ b/lib/tests/phpunit/SimpleCacheTestCase.php
@@ -283,7 +283,7 @@ abstract class SimpleCacheTestCase extends TestCase {
 			$this->markTestSkipped( $this->skippedTests[__FUNCTION__] );
 		}
 
-		$gen = function () {
+		$gen = static function () {
 			yield 'key0' => 'value0';
 			yield 'key1' => 'value1';
 		};
@@ -327,7 +327,7 @@ abstract class SimpleCacheTestCase extends TestCase {
 			$this->markTestSkipped( $this->skippedTests[__FUNCTION__] );
 		}
 
-		$gen = function () {
+		$gen = static function () {
 			yield 1 => 'key0';
 			yield 1 => 'key1';
 		};
@@ -371,7 +371,7 @@ abstract class SimpleCacheTestCase extends TestCase {
 			$this->markTestSkipped( $this->skippedTests[__FUNCTION__] );
 		}
 
-		$gen = function () {
+		$gen = static function () {
 			yield 1 => 'key0';
 			yield 1 => 'key1';
 		};
@@ -463,7 +463,7 @@ abstract class SimpleCacheTestCase extends TestCase {
 			$this->markTestSkipped( $this->skippedTests[__FUNCTION__] );
 		}
 
-		$values = function () use ( $key ) {
+		$values = static function () use ( $key ) {
 			yield 'key1' => 'foo';
 			yield $key => 'bar';
 			yield 'key2' => 'baz';
diff --git a/lib/tests/phpunit/SourceDispatchingPropertyDataTypeLookupTest.php b/lib/tests/phpunit/SourceDispatchingPropertyDataTypeLookupTest.php
index 898d2e3..84945f3 100644
--- a/lib/tests/phpunit/SourceDispatchingPropertyDataTypeLookupTest.php
+++ b/lib/tests/phpunit/SourceDispatchingPropertyDataTypeLookupTest.php
@@ -54,7 +54,7 @@ class SourceDispatchingPropertyDataTypeLookupTest extends TestCase {
 			->willReturn( $dataTypeId );
 
 		$this->lookupCallbacks = [
-			$propertySourceName => function () use ( $propertyDataTypeLookup ) {
+			$propertySourceName => static function () use ( $propertyDataTypeLookup ) {
 				return $propertyDataTypeLookup;
 			},
 		];
@@ -78,7 +78,7 @@ class SourceDispatchingPropertyDataTypeLookupTest extends TestCase {
 
 		$calls = 0;
 		$this->lookupCallbacks = [
-			$propertySourceName => function () use ( &$calls, $propertyDataTypeLookup ) {
+			$propertySourceName => static function () use ( &$calls, $propertyDataTypeLookup ) {
 				$calls++;
 				return $propertyDataTypeLookup;
 			},
diff --git a/lib/tests/phpunit/StatsdRecordingSimpleCacheTest.php b/lib/tests/phpunit/StatsdRecordingSimpleCacheTest.php
index 554bf89..c89c59c 100644
--- a/lib/tests/phpunit/StatsdRecordingSimpleCacheTest.php
+++ b/lib/tests/phpunit/StatsdRecordingSimpleCacheTest.php
@@ -30,7 +30,7 @@ class StatsdRecordingSimpleCacheTest extends \PHPUnit\Framework\TestCase {
 		$innerCache->expects( $this->once() )
 			->method( 'get' )
 			->with( 'nonexistingkey' )
-			->willReturnCallback( function( $a, $default ) {
+			->willReturnCallback( static function( $a, $default ) {
 				return $default;
 			} );
 
@@ -62,7 +62,7 @@ class StatsdRecordingSimpleCacheTest extends \PHPUnit\Framework\TestCase {
 		$innerCache->expects( $this->once() )
 			->method( 'getMultiple' )
 			->with( [ 'key', 'key1', 'key2' ] )
-			->willReturnCallback( function( $a, $default ) {
+			->willReturnCallback( static function( $a, $default ) {
 				return [ 'key' => 'cachedValue', 'key1' => $default, 'key2' => $default ];
 			} );
 
@@ -114,7 +114,7 @@ class StatsdRecordingSimpleCacheTest extends \PHPUnit\Framework\TestCase {
 		$innerCache->expects( $this->once() )
 			->method( 'getMultiple' )
 			->with( [ 'key1', 'key2' ] )
-			->willReturnCallback( function( $a, $default ) {
+			->willReturnCallback( static function( $a, $default ) {
 				return [ 'key1' => 'cachehit', 'key2' => $default ];
 			} );
 
diff --git a/lib/tests/phpunit/Store/CacheRetrievingEntityRevisionLookupTest.php b/lib/tests/phpunit/Store/CacheRetrievingEntityRevisionLookupTest.php
index 99ff819..3d3f447 100644
--- a/lib/tests/phpunit/Store/CacheRetrievingEntityRevisionLookupTest.php
+++ b/lib/tests/phpunit/Store/CacheRetrievingEntityRevisionLookupTest.php
@@ -156,7 +156,7 @@ class CacheRetrievingEntityRevisionLookupTest extends EntityRevisionLookupTestCa
 
 		return $result->onNonexistentEntity( $shouldNotBeCalled )
 			->onRedirect( $shouldNotBeCalled )
-			->onConcreteRevision( function ( $revId ) {
+			->onConcreteRevision( static function ( $revId ) {
 				return $revId;
 			} )
 			->map();
diff --git a/lib/tests/phpunit/Store/CachingEntityRevisionLookupTest.php b/lib/tests/phpunit/Store/CachingEntityRevisionLookupTest.php
index e3decd1..2090347 100644
--- a/lib/tests/phpunit/Store/CachingEntityRevisionLookupTest.php
+++ b/lib/tests/phpunit/Store/CachingEntityRevisionLookupTest.php
@@ -257,7 +257,7 @@ class CachingEntityRevisionLookupTest extends EntityRevisionLookupTestCase {
 
 		return $result->onNonexistentEntity( $shouldNotBeCalled )
 			->onRedirect( $shouldNotBeCalled )
-			->onConcreteRevision( function ( $revId ) {
+			->onConcreteRevision( static function ( $revId ) {
 				return $revId;
 			} )
 			->map();
diff --git a/lib/tests/phpunit/Store/EntityLinkTargetEntityIdLookupTest.php b/lib/tests/phpunit/Store/EntityLinkTargetEntityIdLookupTest.php
index 921ddaa..c6fec03 100644
--- a/lib/tests/phpunit/Store/EntityLinkTargetEntityIdLookupTest.php
+++ b/lib/tests/phpunit/Store/EntityLinkTargetEntityIdLookupTest.php
@@ -81,7 +81,7 @@ class EntityLinkTargetEntityIdLookupTest extends TestCase {
 	private function getMockEntityNamespaceLookupWhere111IsItemNamespace() {
 		$mock = $this->createMock( EntityNamespaceLookup::class );
 		$mock->method( 'getEntityType' )->willReturnCallback(
-			function ( $namespace ) {
+			static function ( $namespace ) {
 				return $namespace === self::ITEM_NAMESPACE ? 'item' : 'otherEntityType';
 			}
 		);
@@ -91,7 +91,7 @@ class EntityLinkTargetEntityIdLookupTest extends TestCase {
 	private function newMockEntityIdParserForId( EntityId $id ) {
 		$mock = $this->createMock( EntityIdParser::class );
 		$mock->method( 'parse' )->willReturnCallback(
-			function ( $toParse ) use ( $id ) {
+			static function ( $toParse ) use ( $id ) {
 				if ( $toParse !== $id->getSerialization() ) {
 					throw new EntityIdParsingException( 'mock' );
 				}
diff --git a/lib/tests/phpunit/Store/LanguageFallbackLabelDescriptionLookupTest.php b/lib/tests/phpunit/Store/LanguageFallbackLabelDescriptionLookupTest.php
index 517580c..924334a 100644
--- a/lib/tests/phpunit/Store/LanguageFallbackLabelDescriptionLookupTest.php
+++ b/lib/tests/phpunit/Store/LanguageFallbackLabelDescriptionLookupTest.php
@@ -99,7 +99,7 @@ class LanguageFallbackLabelDescriptionLookupTest extends MediaWikiIntegrationTes
 		$languageFallbackChain = $this->createMock( TermLanguageFallbackChain::class );
 
 		$languageFallbackChain->method( 'extractPreferredValue' )
-			->willReturnCallback( function( array $fallbackData ) use ( $languageCode ) {
+			->willReturnCallback( static function( array $fallbackData ) use ( $languageCode ) {
 				if ( $languageCode === 'zh' && array_key_exists( 'zh-cn', $fallbackData ) ) {
 					return [ 'value' => 'fallbackterm', 'language' => 'zh-cn', 'source' => 'zh-xy' ];
 				} else {
@@ -108,7 +108,7 @@ class LanguageFallbackLabelDescriptionLookupTest extends MediaWikiIntegrationTes
 			} );
 
 		$languageFallbackChain->method( 'getFetchLanguageCodes' )
-			->willReturnCallback( function() use ( $languageCode ) {
+			->willReturnCallback( static function() use ( $languageCode ) {
 				if ( $languageCode === 'zh' ) {
 					return [ 'zh', 'zh-cn', 'zh-xy' ];
 				} else {
diff --git a/lib/tests/phpunit/Store/LatestRevisionIdResultTest.php b/lib/tests/phpunit/Store/LatestRevisionIdResultTest.php
index 9efb3dd..500d416 100644
--- a/lib/tests/phpunit/Store/LatestRevisionIdResultTest.php
+++ b/lib/tests/phpunit/Store/LatestRevisionIdResultTest.php
@@ -23,7 +23,7 @@ class LatestRevisionIdResultTest extends TestCase {
 	}
 
 	public function testOnNonexistentEntity_SomeHandlerGiven_ReturnsNewInstanceOfResult() {
-		$noop = function () {
+		$noop = static function () {
 		};
 		$initialResult = LatestRevisionIdResult::nonexistentEntity();
 
@@ -33,7 +33,7 @@ class LatestRevisionIdResultTest extends TestCase {
 	}
 
 	public function testOnConcreteRevision_SomeHandlerGiven_ReturnsNewInstanceOfResult() {
-		$noop = function () {
+		$noop = static function () {
 		};
 		$initialResult = LatestRevisionIdResult::nonexistentEntity();
 
@@ -43,7 +43,7 @@ class LatestRevisionIdResultTest extends TestCase {
 	}
 
 	public function testRedirect_SomeHandlerGiven_ReturnsNewInstanceOfResult() {
-		$noop = function () {
+		$noop = static function () {
 		};
 		$initialResult = LatestRevisionIdResult::nonexistentEntity();
 
@@ -60,7 +60,7 @@ class LatestRevisionIdResultTest extends TestCase {
 
 		$result = $nonexistentEntity->onConcreteRevision( $shouldNotBeCalled )
 			->onRedirect( $shouldNotBeCalled )
-			->onNonexistentEntity( function () {
+			->onNonexistentEntity( static function () {
 				return 'nonexistent';
 			} )
 			->map();
@@ -78,7 +78,7 @@ class LatestRevisionIdResultTest extends TestCase {
 
 		$result = $redirectResult->onConcreteRevision( $shouldNotBeCalled )
 			->onNonexistentEntity( $shouldNotBeCalled )
-			->onRedirect( function () {
+			->onRedirect( static function () {
 				return 'redirect';
 			} )
 			->map();
@@ -94,7 +94,7 @@ class LatestRevisionIdResultTest extends TestCase {
 
 		$result = $concreteRevisionResult->onRedirect( $shouldNotBeCalled )
 			->onNonexistentEntity( $shouldNotBeCalled )
-			->onConcreteRevision( function () {
+			->onConcreteRevision( static function () {
 				return 'concrete revision';
 			} )
 			->map();
diff --git a/lib/tests/phpunit/Store/MatchingTermsLookupFactoryTest.php b/lib/tests/phpunit/Store/MatchingTermsLookupFactoryTest.php
index 6c9882c..27ecf77 100644
--- a/lib/tests/phpunit/Store/MatchingTermsLookupFactoryTest.php
+++ b/lib/tests/phpunit/Store/MatchingTermsLookupFactoryTest.php
@@ -91,7 +91,7 @@ class MatchingTermsLookupFactoryTest extends MediaWikiIntegrationTestCase {
 	public function testReturnsWorkingLookup() {
 		$factory = new MatchingTermsLookupFactory(
 			new EntityIdComposer( [
-				Item::ENTITY_TYPE => function( $uniquePartOfId ) {
+				Item::ENTITY_TYPE => static function( $uniquePartOfId ) {
 					return new ItemId( 'Q' . $uniquePartOfId );
 				},
 			] ),
@@ -112,7 +112,7 @@ class MatchingTermsLookupFactoryTest extends MediaWikiIntegrationTestCase {
 		] );
 
 		$actual = $matchingTermsLookup->getMatchingTerms( [ $criteria ] );
-		$results = array_map( function ( TermIndexEntry $entry ) {
+		$results = array_map( static function ( TermIndexEntry $entry ) {
 			return $entry->getEntityId()->getSerialization();
 		}, $actual );
 
diff --git a/lib/tests/phpunit/Store/PrefetchingWikiPageEntityMetaDataAccessorTest.php b/lib/tests/phpunit/Store/PrefetchingWikiPageEntityMetaDataAccessorTest.php
index f3fe2df..99529bf 100644
--- a/lib/tests/phpunit/Store/PrefetchingWikiPageEntityMetaDataAccessorTest.php
+++ b/lib/tests/phpunit/Store/PrefetchingWikiPageEntityMetaDataAccessorTest.php
@@ -144,7 +144,7 @@ class PrefetchingWikiPageEntityMetaDataAccessorTest extends \PHPUnit\Framework\T
 		$lookup = $this->createMock( WikiPageEntityMetaDataAccessor::class );
 		$lookup->expects( $this->exactly( 3 ) )
 			->method( 'loadRevisionInformation' )
-			->willReturnCallback( function( array $entityIds, $mode ) {
+			->willReturnCallback( static function( array $entityIds, $mode ) {
 				$ret = [];
 
 				/**
diff --git a/lib/tests/phpunit/Store/RevisionBasedEntityLookupTest.php b/lib/tests/phpunit/Store/RevisionBasedEntityLookupTest.php
index 39b7986..28279d1 100644
--- a/lib/tests/phpunit/Store/RevisionBasedEntityLookupTest.php
+++ b/lib/tests/phpunit/Store/RevisionBasedEntityLookupTest.php
@@ -55,7 +55,7 @@ class RevisionBasedEntityLookupTest extends \PHPUnit\Framework\TestCase {
 	public static function hasEntityProvider() {
 		$cases = self::getEntityProvider();
 
-		$cases = array_map( function( $case ) {
+		$cases = array_map( static function( $case ) {
 			// true if set an id is expected, false otherwise.
 			$case[2] = $case[2] !== null;
 
diff --git a/lib/tests/phpunit/Store/Sql/PropertyInfoTableTest.php b/lib/tests/phpunit/Store/Sql/PropertyInfoTableTest.php
index f987fd3..168eca4 100644
--- a/lib/tests/phpunit/Store/Sql/PropertyInfoTableTest.php
+++ b/lib/tests/phpunit/Store/Sql/PropertyInfoTableTest.php
@@ -197,7 +197,7 @@ class PropertyInfoTableTest extends MediaWikiIntegrationTestCase {
 
 	private function getEntityComposer() {
 		return new EntityIdComposer( [
-			Property::ENTITY_TYPE => function( $uniquePart ) {
+			Property::ENTITY_TYPE => static function( $uniquePart ) {
 				return new NumericPropertyId( 'P' . $uniquePart );
 			},
 		] );
diff --git a/lib/tests/phpunit/Store/Sql/Terms/DatabaseInnerTermStoreCleanerTest.php b/lib/tests/phpunit/Store/Sql/Terms/DatabaseInnerTermStoreCleanerTest.php
index 3229acd..08514b5 100644
--- a/lib/tests/phpunit/Store/Sql/Terms/DatabaseInnerTermStoreCleanerTest.php
+++ b/lib/tests/phpunit/Store/Sql/Terms/DatabaseInnerTermStoreCleanerTest.php
@@ -262,7 +262,7 @@ class DatabaseInnerTermStoreCleanerTest extends MediaWikiIntegrationTestCase {
 			->select( $field )
 			->from( $table )
 			->assertResultSet( array_map(
-				function( $element ) {
+				static function( $element ) {
 					return [ $element ];
 				},
 				$elements
diff --git a/lib/tests/phpunit/Store/Sql/Terms/DatabaseMatchingTermsLookupTest.php b/lib/tests/phpunit/Store/Sql/Terms/DatabaseMatchingTermsLookupTest.php
index 71f5605..1c9053c 100644
--- a/lib/tests/phpunit/Store/Sql/Terms/DatabaseMatchingTermsLookupTest.php
+++ b/lib/tests/phpunit/Store/Sql/Terms/DatabaseMatchingTermsLookupTest.php
@@ -212,10 +212,10 @@ class DatabaseMatchingTermsLookupTest extends MediaWikiIntegrationTestCase {
 		);
 
 		$composer = new EntityIdComposer( [
-			'item' => function ( $uniquePart ) {
+			'item' => static function ( $uniquePart ) {
 				return new ItemId( 'Q' . $uniquePart );
 			},
-			'property' => function ( $uniquePart ) {
+			'property' => static function ( $uniquePart ) {
 				return new NumericPropertyId( 'P' . $uniquePart );
 			},
 		] );
diff --git a/lib/tests/phpunit/Store/Sql/Terms/DatabaseTermInLangIdsAcquirerTest.php b/lib/tests/phpunit/Store/Sql/Terms/DatabaseTermInLangIdsAcquirerTest.php
index 88949fd..4234a78 100644
--- a/lib/tests/phpunit/Store/Sql/Terms/DatabaseTermInLangIdsAcquirerTest.php
+++ b/lib/tests/phpunit/Store/Sql/Terms/DatabaseTermInLangIdsAcquirerTest.php
@@ -261,7 +261,7 @@ class DatabaseTermInLangIdsAcquirerTest extends TestCase {
 			1,
 			array_filter(
 				$acquiredTermIds,
-				function ( $id ) use ( $labelEnSameTermInLangId ) {
+				static function ( $id ) use ( $labelEnSameTermInLangId ) {
 					return $id === $labelEnSameTermInLangId;
 				}
 			)
@@ -270,7 +270,7 @@ class DatabaseTermInLangIdsAcquirerTest extends TestCase {
 			2,
 			array_filter(
 				$acquiredTermIds,
-				function ( $id ) use ( $aliasEnSameTermInLangId ) {
+				static function ( $id ) use ( $aliasEnSameTermInLangId ) {
 					return $id === $aliasEnSameTermInLangId;
 				}
 			)
diff --git a/lib/tests/phpunit/Store/Sql/Terms/DatabaseTermStoreWriterTestGetTermsTrait.php b/lib/tests/phpunit/Store/Sql/Terms/DatabaseTermStoreWriterTestGetTermsTrait.php
index 6caf405..3c8c0b3 100644
--- a/lib/tests/phpunit/Store/Sql/Terms/DatabaseTermStoreWriterTestGetTermsTrait.php
+++ b/lib/tests/phpunit/Store/Sql/Terms/DatabaseTermStoreWriterTestGetTermsTrait.php
@@ -66,19 +66,19 @@ trait DatabaseTermStoreWriterTestGetTermsTrait {
 
 		return new Fingerprint(
 			new TermList( array_map(
-				function ( $language, $labels ) {
+				static function ( $language, $labels ) {
 					return new Term( $language, $labels[0] );
 				},
 				array_keys( $labels ), $labels
 			) ),
 			new TermList( array_map(
-				function ( $language, $descriptions ) {
+				static function ( $language, $descriptions ) {
 					return new Term( $language, $descriptions[0] );
 				},
 				array_keys( $descriptions ), $descriptions
 			) ),
 			new AliasGroupList( array_map(
-				function ( $language, $aliases ) {
+				static function ( $language, $aliases ) {
 					return new AliasGroup( $language, $aliases );
 				},
 				array_keys( $aliases ), $aliases
diff --git a/lib/tests/phpunit/Store/Sql/Terms/TermInLangIdsResolverFactoryTest.php b/lib/tests/phpunit/Store/Sql/Terms/TermInLangIdsResolverFactoryTest.php
index 4c1e18c..1a909fc 100644
--- a/lib/tests/phpunit/Store/Sql/Terms/TermInLangIdsResolverFactoryTest.php
+++ b/lib/tests/phpunit/Store/Sql/Terms/TermInLangIdsResolverFactoryTest.php
@@ -92,7 +92,7 @@ class TermInLangIdsResolverFactoryTest extends MediaWikiIntegrationTestCase {
 	}
 
 	public function testReturnsWorkingResolver(): void {
-		$expectedTerms = array_map( function ( string $label ): array {
+		$expectedTerms = array_map( static function ( string $label ): array {
 			return [ $label ];
 		}, self::MOCK_LANG_LABELS );
 
diff --git a/lib/tests/phpunit/Store/TypeDispatchingEntityRevisionLookupTest.php b/lib/tests/phpunit/Store/TypeDispatchingEntityRevisionLookupTest.php
index 890188b..3e1cb70 100644
--- a/lib/tests/phpunit/Store/TypeDispatchingEntityRevisionLookupTest.php
+++ b/lib/tests/phpunit/Store/TypeDispatchingEntityRevisionLookupTest.php
@@ -26,7 +26,7 @@ class TypeDispatchingEntityRevisionLookupTest extends \PHPUnit\Framework\TestCas
 	public function testGivenInvalidCallback_getEntityRevisionFails() {
 		$lookup = new TypeDispatchingEntityRevisionLookup(
 			[
-				'property' => function ( EntityRevisionLookup $defaultService ) {
+				'property' => static function ( EntityRevisionLookup $defaultService ) {
 					return (object)[];
 				},
 			],
diff --git a/lib/tests/phpunit/Store/TypeDispatchingEntityStoreTest.php b/lib/tests/phpunit/Store/TypeDispatchingEntityStoreTest.php
index a9e375d..2b05ce6 100644
--- a/lib/tests/phpunit/Store/TypeDispatchingEntityStoreTest.php
+++ b/lib/tests/phpunit/Store/TypeDispatchingEntityStoreTest.php
@@ -59,7 +59,7 @@ class TypeDispatchingEntityStoreTest extends \PHPUnit\Framework\TestCase {
 	public function testGivenInvalidCallback_saveEntityFails() {
 		$store = new TypeDispatchingEntityStore(
 			[
-				'property' => function ( EntityStore $defaultService ) {
+				'property' => static function ( EntityStore $defaultService ) {
 					return (object)[];
 				},
 			],
diff --git a/lib/tests/phpunit/TermLanguageFallbackChainTest.php b/lib/tests/phpunit/TermLanguageFallbackChainTest.php
index b93641d..3607b1e 100644
--- a/lib/tests/phpunit/TermLanguageFallbackChainTest.php
+++ b/lib/tests/phpunit/TermLanguageFallbackChainTest.php
@@ -31,17 +31,17 @@ class TermLanguageFallbackChainTest extends MediaWikiIntegrationTestCase {
 			'',
 			'⧼Lang⧽',
 		];
-		$chainOfLanguages = array_map( function ( string $langCode ) {
+		$chainOfLanguages = array_map( static function ( string $langCode ) {
 			return LanguageWithConversion::factory( $langCode );
 		}, $chainOfTestLanguageCodes );
 		$stubContentLanguages = $this->createStub( ContentLanguages::class );
 		$stubContentLanguages->method( 'hasLanguage' )->willReturnCallback(
-			function ( $langCode ) {
+			static function ( $langCode ) {
 				return $langCode === 'de' || $langCode === 'en';
 			}
 		);
 		$chain = new TermLanguageFallbackChain( $chainOfLanguages, $stubContentLanguages );
-		$actualFallbackChain = array_map( function ( LanguageWithConversion $lang ) {
+		$actualFallbackChain = array_map( static function ( LanguageWithConversion $lang ) {
 			return $lang->getLanguageCode();
 		},
 			$chain->getFallbackChain() );
@@ -53,7 +53,7 @@ class TermLanguageFallbackChainTest extends MediaWikiIntegrationTestCase {
 		$stubContentLanguages = $this->createStub( ContentLanguages::class );
 		$stubContentLanguages->method( 'hasLanguage' )->willReturn( false );
 		$chain = new TermLanguageFallbackChain( [ LanguageWithConversion::factory( '⧼Lang⧽' ) ], $stubContentLanguages );
-		$actualFallbackChain = array_map( function ( LanguageWithConversion $lang ) {
+		$actualFallbackChain = array_map( static function ( LanguageWithConversion $lang ) {
 			return $lang->getLanguageCode();
 		},
 			$chain->getFallbackChain() );
diff --git a/lib/tests/phpunit/WikibaseContentLanguagesTest.php b/lib/tests/phpunit/WikibaseContentLanguagesTest.php
index dd6b28e..912b037 100644
--- a/lib/tests/phpunit/WikibaseContentLanguagesTest.php
+++ b/lib/tests/phpunit/WikibaseContentLanguagesTest.php
@@ -51,7 +51,7 @@ class WikibaseContentLanguagesTest extends MediaWikiIntegrationTestCase {
 		$testLanguages = new StaticContentLanguages( [ 'test' ] );
 		$this->setTemporaryHook(
 			'WikibaseContentLanguages',
-			function ( array &$contentLanguages ) use ( $testLanguages ) {
+			static function ( array &$contentLanguages ) use ( $testLanguages ) {
 				$contentLanguages['test'] = $testLanguages;
 			}
 		);
diff --git a/lib/tests/phpunit/WikibaseSettingsTest.php b/lib/tests/phpunit/WikibaseSettingsTest.php
index 8de9ec6..9dbb09b 100644
--- a/lib/tests/phpunit/WikibaseSettingsTest.php
+++ b/lib/tests/phpunit/WikibaseSettingsTest.php
@@ -93,7 +93,7 @@ class WikibaseSettingsTest extends \PHPUnit\Framework\TestCase {
 		yield 'no default setting, array' => [ $default, $custom, $expected ];
 		unset( $custom );
 
-		$default = [ 'key' => function () {
+		$default = [ 'key' => static function () {
 			return 'value';
 		} ];
 		$custom['key'] = 'custom value';
@@ -101,7 +101,7 @@ class WikibaseSettingsTest extends \PHPUnit\Framework\TestCase {
 		yield "['key'], callable->scalar" => [ $default, $custom, $expected ];
 		unset( $custom );
 
-		$default = [ 'key' => function () {
+		$default = [ 'key' => static function () {
 			return [ 'one', 'two' ];
 		} ];
 		$custom['key'] = [ 'ONE', 'TWO' ];
diff --git a/package-lock.json b/package-lock.json
index b9daaf7..1e4f603 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2697,9 +2697,9 @@
 			}
 		},
 		"node_modules/ansi-colors": {
-			"version": "4.1.1",
-			"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
-			"integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+			"version": "4.1.3",
+			"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+			"integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
 			"dev": true,
 			"engines": {
 				"node": ">=6"
@@ -4743,9 +4743,9 @@
 			}
 		},
 		"node_modules/diff": {
-			"version": "5.1.0",
-			"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
-			"integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
+			"version": "5.2.0",
+			"resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+			"integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
 			"dev": true,
 			"engines": {
 				"node": ">=0.3.1"
@@ -9879,32 +9879,31 @@
 			"dev": true
 		},
 		"node_modules/mocha": {
-			"version": "10.2.0",
-			"resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz",
-			"integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==",
+			"version": "10.8.2",
+			"resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz",
+			"integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==",
 			"dev": true,
 			"dependencies": {
-				"ansi-colors": "4.1.1",
-				"browser-stdout": "1.3.1",
-				"chokidar": "3.5.3",
-				"debug": "4.3.4",
-				"diff": "5.0.0",
-				"escape-string-regexp": "4.0.0",
-				"find-up": "5.0.0",
-				"glob": "7.2.0",
-				"he": "1.2.0",
-				"js-yaml": "4.1.0",
-				"log-symbols": "4.1.0",
-				"minimatch": "5.0.1",
-				"ms": "2.1.3",
-				"nanoid": "3.3.3",
-				"serialize-javascript": "6.0.0",
-				"strip-json-comments": "3.1.1",
-				"supports-color": "8.1.1",
-				"workerpool": "6.2.1",
-				"yargs": "16.2.0",
-				"yargs-parser": "20.2.4",
-				"yargs-unparser": "2.0.0"
+				"ansi-colors": "^4.1.3",
+				"browser-stdout": "^1.3.1",
+				"chokidar": "^3.5.3",
+				"debug": "^4.3.5",
+				"diff": "^5.2.0",
+				"escape-string-regexp": "^4.0.0",
+				"find-up": "^5.0.0",
+				"glob": "^8.1.0",
+				"he": "^1.2.0",
+				"js-yaml": "^4.1.0",
+				"log-symbols": "^4.1.0",
+				"minimatch": "^5.1.6",
+				"ms": "^2.1.3",
+				"serialize-javascript": "^6.0.2",
+				"strip-json-comments": "^3.1.1",
+				"supports-color": "^8.1.1",
+				"workerpool": "^6.5.1",
+				"yargs": "^16.2.0",
+				"yargs-parser": "^20.2.9",
+				"yargs-unparser": "^2.0.0"
 			},
 			"bin": {
 				"_mocha": "bin/_mocha",
@@ -9912,10 +9911,15 @@
 			},
 			"engines": {
 				"node": ">= 14.0.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/mochajs"
+			}
+		},
+		"node_modules/mocha/node_modules/brace-expansion": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"dev": true,
+			"dependencies": {
+				"balanced-match": "^1.0.0"
 			}
 		},
 		"node_modules/mocha/node_modules/cliui": {
@@ -9929,51 +9933,27 @@
 				"wrap-ansi": "^7.0.0"
 			}
 		},
-		"node_modules/mocha/node_modules/diff": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
-			"integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
-			"dev": true,
-			"engines": {
-				"node": ">=0.3.1"
-			}
-		},
-		"node_modules/mocha/node_modules/glob": {
-			"version": "7.2.0",
-			"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
-			"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+		"node_modules/mocha/node_modules/debug": {
+			"version": "4.4.0",
+			"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+			"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
 			"dev": true,
 			"dependencies": {
-				"fs.realpath": "^1.0.0",
-				"inflight": "^1.0.4",
-				"inherits": "2",
-				"minimatch": "^3.0.4",
-				"once": "^1.3.0",
-				"path-is-absolute": "^1.0.0"
+				"ms": "^2.1.3"
 			},
 			"engines": {
-				"node": "*"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/isaacs"
-			}
-		},
-		"node_modules/mocha/node_modules/glob/node_modules/minimatch": {
-			"version": "3.1.2",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-			"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-			"dev": true,
-			"dependencies": {
-				"brace-expansion": "^1.1.7"
+				"node": ">=6.0"
 			},
-			"engines": {
-				"node": "*"
+			"peerDependenciesMeta": {
+				"supports-color": {
+					"optional": true
+				}
 			}
 		},
 		"node_modules/mocha/node_modules/minimatch": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
-			"integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
+			"version": "5.1.6",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+			"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
 			"dev": true,
 			"dependencies": {
 				"brace-expansion": "^2.0.1"
@@ -9982,15 +9962,6 @@
 				"node": ">=10"
 			}
 		},
-		"node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-			"dev": true,
-			"dependencies": {
-				"balanced-match": "^1.0.0"
-			}
-		},
 		"node_modules/mocha/node_modules/ms": {
 			"version": "2.1.3",
 			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -10070,10 +10041,16 @@
 			}
 		},
 		"node_modules/nanoid": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
-			"integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
+			"version": "3.3.8",
+			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+			"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
 			"dev": true,
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/ai"
+				}
+			],
 			"bin": {
 				"nanoid": "bin/nanoid.cjs"
 			},
@@ -11037,25 +11014,6 @@
 			"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
 			"dev": true
 		},
-		"node_modules/postcss/node_modules/nanoid": {
-			"version": "3.3.7",
-			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
-			"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/ai"
-				}
-			],
-			"license": "MIT",
-			"bin": {
-				"nanoid": "bin/nanoid.cjs"
-			},
-			"engines": {
-				"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-			}
-		},
 		"node_modules/prelude-ls": {
 			"version": "1.2.1",
 			"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -12029,9 +11987,9 @@
 			}
 		},
 		"node_modules/serialize-javascript": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
-			"integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+			"version": "6.0.2",
+			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+			"integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
 			"dev": true,
 			"dependencies": {
 				"randombytes": "^2.1.0"
@@ -13920,9 +13878,9 @@
 			}
 		},
 		"node_modules/workerpool": {
-			"version": "6.2.1",
-			"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
-			"integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
+			"version": "6.5.1",
+			"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz",
+			"integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
 			"dev": true
 		},
 		"node_modules/wrap-ansi": {
@@ -14054,9 +14012,9 @@
 			}
 		},
 		"node_modules/yargs-parser": {
-			"version": "20.2.4",
-			"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
-			"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+			"version": "20.2.9",
+			"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+			"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
 			"dev": true,
 			"engines": {
 				"node": ">=10"
@@ -16393,9 +16351,9 @@
 			}
 		},
 		"ansi-colors": {
-			"version": "4.1.1",
-			"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
-			"integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+			"version": "4.1.3",
+			"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+			"integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
 			"dev": true
 		},
 		"ansi-escapes": {
@@ -17899,9 +17857,9 @@
 			"dev": true
 		},
 		"diff": {
-			"version": "5.1.0",
-			"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
-			"integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
+			"version": "5.2.0",
+			"resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+			"integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
 			"dev": true
 		},
 		"diff-sequences": {
@@ -21787,34 +21745,42 @@
 			"dev": true
 		},
 		"mocha": {
-			"version": "10.2.0",
-			"resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz",
-			"integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==",
+			"version": "10.8.2",
+			"resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz",
+			"integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==",
 			"dev": true,
 			"requires": {
-				"ansi-colors": "4.1.1",
-				"browser-stdout": "1.3.1",
-				"chokidar": "3.5.3",
-				"debug": "4.3.4",
-				"diff": "5.0.0",
-				"escape-string-regexp": "4.0.0",
-				"find-up": "5.0.0",
-				"glob": "7.2.0",
-				"he": "1.2.0",
-				"js-yaml": "4.1.0",
-				"log-symbols": "4.1.0",
-				"minimatch": "5.0.1",
-				"ms": "2.1.3",
-				"nanoid": "3.3.3",
-				"serialize-javascript": "6.0.0",
-				"strip-json-comments": "3.1.1",
-				"supports-color": "8.1.1",
-				"workerpool": "6.2.1",
-				"yargs": "16.2.0",
-				"yargs-parser": "20.2.4",
-				"yargs-unparser": "2.0.0"
+				"ansi-colors": "^4.1.3",
+				"browser-stdout": "^1.3.1",
+				"chokidar": "^3.5.3",
+				"debug": "^4.3.5",
+				"diff": "^5.2.0",
+				"escape-string-regexp": "^4.0.0",
+				"find-up": "^5.0.0",
+				"glob": "^8.1.0",
+				"he": "^1.2.0",
+				"js-yaml": "^4.1.0",
+				"log-symbols": "^4.1.0",
+				"minimatch": "^5.1.6",
+				"ms": "^2.1.3",
+				"serialize-javascript": "^6.0.2",
+				"strip-json-comments": "^3.1.1",
+				"supports-color": "^8.1.1",
+				"workerpool": "^6.5.1",
+				"yargs": "^16.2.0",
+				"yargs-parser": "^20.2.9",
+				"yargs-unparser": "^2.0.0"
 			},
 			"dependencies": {
+				"brace-expansion": {
+					"version": "2.0.1",
+					"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+					"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+					"dev": true,
+					"requires": {
+						"balanced-match": "^1.0.0"
+					}
+				},
 				"cliui": {
 					"version": "7.0.4",
 					"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
@@ -21826,55 +21792,22 @@
 						"wrap-ansi": "^7.0.0"
 					}
 				},
-				"diff": {
-					"version": "5.0.0",
-					"resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
-					"integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
-					"dev": true
-				},
-				"glob": {
-					"version": "7.2.0",
-					"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
-					"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+				"debug": {
+					"version": "4.4.0",
+					"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+					"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
 					"dev": true,
 					"requires": {
-						"fs.realpath": "^1.0.0",
-						"inflight": "^1.0.4",
-						"inherits": "2",
-						"minimatch": "^3.0.4",
-						"once": "^1.3.0",
-						"path-is-absolute": "^1.0.0"
-					},
-					"dependencies": {
-						"minimatch": {
-							"version": "3.1.2",
-							"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-							"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-							"dev": true,
-							"requires": {
-								"brace-expansion": "^1.1.7"
-							}
-						}
+						"ms": "^2.1.3"
 					}
 				},
 				"minimatch": {
-					"version": "5.0.1",
-					"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
-					"integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
+					"version": "5.1.6",
+					"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+					"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
 					"dev": true,
 					"requires": {
 						"brace-expansion": "^2.0.1"
-					},
-					"dependencies": {
-						"brace-expansion": {
-							"version": "2.0.1",
-							"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-							"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-							"dev": true,
-							"requires": {
-								"balanced-match": "^1.0.0"
-							}
-						}
 					}
 				},
 				"ms": {
@@ -21946,9 +21879,9 @@
 			}
 		},
 		"nanoid": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
-			"integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
+			"version": "3.3.8",
+			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+			"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
 			"dev": true
 		},
 		"natural-compare": {
@@ -22562,14 +22495,6 @@
 				"nanoid": "^3.3.7",
 				"picocolors": "^1.1.0",
 				"source-map-js": "^1.2.1"
-			},
-			"dependencies": {
-				"nanoid": {
-					"version": "3.3.7",
-					"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
-					"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
-					"dev": true
-				}
 			}
 		},
 		"postcss-html": {
@@ -23359,9 +23284,9 @@
 			}
 		},
 		"serialize-javascript": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
-			"integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+			"version": "6.0.2",
+			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+			"integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
 			"dev": true,
 			"requires": {
 				"randombytes": "^2.1.0"
@@ -24712,9 +24637,9 @@
 			}
 		},
 		"workerpool": {
-			"version": "6.2.1",
-			"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
-			"integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
+			"version": "6.5.1",
+			"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz",
+			"integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
 			"dev": true
 		},
 		"wrap-ansi": {
@@ -24810,9 +24735,9 @@
 			}
 		},
 		"yargs-parser": {
-			"version": "20.2.4",
-			"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
-			"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+			"version": "20.2.9",
+			"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+			"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
 			"dev": true
 		},
 		"yargs-unparser": {
diff --git a/repo/WikibaseRepo.FederatedProperties.OverrideEntityServices.php b/repo/WikibaseRepo.FederatedProperties.OverrideEntityServices.php
index 6047970..5b47e3a 100644
--- a/repo/WikibaseRepo.FederatedProperties.OverrideEntityServices.php
+++ b/repo/WikibaseRepo.FederatedProperties.OverrideEntityServices.php
@@ -21,29 +21,29 @@ use Wikibase\Repo\WikibaseRepo;
 
 return [
 	'property' => [
-		Def::ARTICLE_ID_LOOKUP_CALLBACK => function () {
+		Def::ARTICLE_ID_LOOKUP_CALLBACK => static function () {
 			return new EntityArticleIdNullLookup();
 		},
-		Def::URL_LOOKUP_CALLBACK => function () {
+		Def::URL_LOOKUP_CALLBACK => static function () {
 			return WikibaseRepo::getFederatedPropertiesServiceFactory()->newApiEntityUrlLookup();
 		},
-		Def::TITLE_TEXT_LOOKUP_CALLBACK => function () {
+		Def::TITLE_TEXT_LOOKUP_CALLBACK => static function () {
 			return WikibaseRepo::getFederatedPropertiesServiceFactory()->newApiEntityTitleTextLookup();
 		},
-		Def::ENTITY_SEARCH_CALLBACK => function() {
+		Def::ENTITY_SEARCH_CALLBACK => static function() {
 			return WikibaseRepo::getFederatedPropertiesServiceFactory()->newApiEntitySearchHelper();
 		},
-		Def::PREFETCHING_TERM_LOOKUP_CALLBACK => function() {
+		Def::PREFETCHING_TERM_LOOKUP_CALLBACK => static function() {
 			return WikibaseRepo::getFederatedPropertiesServiceFactory()->newApiPrefetchingTermLookup();
 		},
-		Def::REDIRECT_CHECKER_CALLBACK => function () {
+		Def::REDIRECT_CHECKER_CALLBACK => static function () {
 			return new class implements EntityRedirectChecker {
 				public function isRedirect( EntityId $id ): bool {
 					return false;
 				}
 			};
 		},
-		Def::EXISTENCE_CHECKER_CALLBACK => function () {
+		Def::EXISTENCE_CHECKER_CALLBACK => static function () {
 			return WikibaseRepo::getFederatedPropertiesServiceFactory()->newApiEntityExistenceChecker();
 		},
 	],
diff --git a/repo/WikibaseRepo.ServiceWiring.php b/repo/WikibaseRepo.ServiceWiring.php
index 442a952..403bae3 100644
--- a/repo/WikibaseRepo.ServiceWiring.php
+++ b/repo/WikibaseRepo.ServiceWiring.php
@@ -260,11 +260,11 @@ use Wikimedia\ObjectFactory\ObjectFactory;
 /** @phpcs-require-sorted-array */
 return [
 
-	'WikibaseRepo.AliasTermBuffer' => function ( MediaWikiServices $services ): AliasTermBuffer {
+	'WikibaseRepo.AliasTermBuffer' => static function ( MediaWikiServices $services ): AliasTermBuffer {
 		return WikibaseRepo::getPrefetchingTermLookup( $services );
 	},
 
-	'WikibaseRepo.AllTypesEntityDeserializer' => function ( MediaWikiServices $services ): DispatchableDeserializer {
+	'WikibaseRepo.AllTypesEntityDeserializer' => static function ( MediaWikiServices $services ): DispatchableDeserializer {
 		$deserializerFactoryCallbacks = WikibaseRepo::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::DESERIALIZER_FACTORY_CALLBACK );
 		$baseDeserializerFactory = WikibaseRepo::getBaseDataModelDeserializerFactory( $services );
@@ -275,7 +275,7 @@ return [
 		return new DispatchingDeserializer( $deserializers );
 	},
 
-	'WikibaseRepo.AllTypesEntitySerializer' => function ( MediaWikiServices $services ): Serializer {
+	'WikibaseRepo.AllTypesEntitySerializer' => static function ( MediaWikiServices $services ): Serializer {
 		$serializerFactoryCallbacks = WikibaseRepo::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::SERIALIZER_FACTORY_CALLBACK );
 		$baseSerializerFactory = WikibaseRepo::getBaseDataModelSerializerFactory( $services );
@@ -288,11 +288,11 @@ return [
 		return new DispatchingSerializer( $serializers );
 	},
 
-	'WikibaseRepo.AnonymousEditWarningBuilder' => function ( MediaWikiServices $services ): AnonymousEditWarningBuilder {
+	'WikibaseRepo.AnonymousEditWarningBuilder' => static function ( MediaWikiServices $services ): AnonymousEditWarningBuilder {
 		return new AnonymousEditWarningBuilder( $services->getSpecialPageFactory(), $services->getTempUserConfig() );
 	},
 
-	'WikibaseRepo.ApiHelperFactory' => function ( MediaWikiServices $services ): ApiHelperFactory {
+	'WikibaseRepo.ApiHelperFactory' => static function ( MediaWikiServices $services ): ApiHelperFactory {
 		$store = WikibaseRepo::getStore( $services );
 
 		return new ApiHelperFactory(
@@ -315,7 +315,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.BagOStuffSiteLinkConflictLookup' => function (
+	'WikibaseRepo.BagOStuffSiteLinkConflictLookup' => static function (
 		MediaWikiServices $services
 	): BagOStuffSiteLinkConflictLookup {
 		return new BagOStuffSiteLinkConflictLookup(
@@ -323,7 +323,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.BaseDataModelDeserializerFactory' => function ( MediaWikiServices $services ): DeserializerFactory {
+	'WikibaseRepo.BaseDataModelDeserializerFactory' => static function ( MediaWikiServices $services ): DeserializerFactory {
 		$dataTypeDefs = WikibaseRepo::getDataTypeDefinitions( $services );
 
 		return new DeserializerFactory(
@@ -335,11 +335,11 @@ return [
 		);
 	},
 
-	'WikibaseRepo.BaseDataModelSerializerFactory' => function ( MediaWikiServices $services ): SerializerFactory {
+	'WikibaseRepo.BaseDataModelSerializerFactory' => static function ( MediaWikiServices $services ): SerializerFactory {
 		return new SerializerFactory( new DataValueSerializer(), SerializerFactory::OPTION_DEFAULT );
 	},
 
-	'WikibaseRepo.CachingCommonsMediaFileNameLookup' => function (
+	'WikibaseRepo.CachingCommonsMediaFileNameLookup' => static function (
 		MediaWikiServices $services
 	): CachingCommonsMediaFileNameLookup {
 		return new CachingCommonsMediaFileNameLookup(
@@ -348,11 +348,11 @@ return [
 		);
 	},
 
-	'WikibaseRepo.ChangeHolder' => function ( MediaWikiServices $services ): ChangeHolder {
+	'WikibaseRepo.ChangeHolder' => static function ( MediaWikiServices $services ): ChangeHolder {
 		return new ChangeHolder();
 	},
 
-	'WikibaseRepo.ChangeNotifier' => function ( MediaWikiServices $services ): ChangeNotifier {
+	'WikibaseRepo.ChangeNotifier' => static function ( MediaWikiServices $services ): ChangeNotifier {
 		$transmitters = [
 			new HookChangeTransmitter(
 				$services->getHookContainer(),
@@ -374,7 +374,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.ChangeOpDeserializerFactory' => function ( MediaWikiServices $services ): ChangeOpDeserializerFactory {
+	'WikibaseRepo.ChangeOpDeserializerFactory' => static function ( MediaWikiServices $services ): ChangeOpDeserializerFactory {
 		$changeOpFactoryProvider = WikibaseRepo::getChangeOpFactoryProvider( $services );
 		$settings = WikibaseRepo::getSettings( $services );
 
@@ -394,7 +394,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.ChangeOpFactoryProvider' => function ( MediaWikiServices $services ): ChangeOpFactoryProvider {
+	'WikibaseRepo.ChangeOpFactoryProvider' => static function ( MediaWikiServices $services ): ChangeOpFactoryProvider {
 		$snakValidator = new SnakValidator(
 			WikibaseRepo::getPropertyDataTypeLookup( $services ),
 			WikibaseRepo::getDataTypeFactory( $services ),
@@ -418,14 +418,14 @@ return [
 		);
 	},
 
-	'WikibaseRepo.CommonsMediaValueNormalizer' => function ( MediaWikiServices $services ): CommonsMediaValueNormalizer {
+	'WikibaseRepo.CommonsMediaValueNormalizer' => static function ( MediaWikiServices $services ): CommonsMediaValueNormalizer {
 		return new CommonsMediaValueNormalizer(
 			WikibaseRepo::getCachingCommonsMediaFileNameLookup( $services ),
 			WikibaseRepo::getLogger( $services )
 		);
 	},
 
-	'WikibaseRepo.CompactBaseDataModelSerializerFactory' => function ( MediaWikiServices $services ): SerializerFactory {
+	'WikibaseRepo.CompactBaseDataModelSerializerFactory' => static function ( MediaWikiServices $services ): SerializerFactory {
 		return new SerializerFactory(
 			new DataValueSerializer(),
 			SerializerFactory::OPTION_SERIALIZE_MAIN_SNAKS_WITHOUT_HASH +
@@ -434,7 +434,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.CompactEntitySerializer' => function ( MediaWikiServices $services ): Serializer {
+	'WikibaseRepo.CompactEntitySerializer' => static function ( MediaWikiServices $services ): Serializer {
 		$serializerFactoryCallbacks = WikibaseRepo::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::SERIALIZER_FACTORY_CALLBACK );
 		$baseSerializerFactory = WikibaseRepo::getCompactBaseDataModelSerializerFactory( $services );
@@ -447,7 +447,7 @@ return [
 		return new DispatchingSerializer( $serializers );
 	},
 
-	'WikibaseRepo.ContentModelMappings' => function ( MediaWikiServices $services ): array {
+	'WikibaseRepo.ContentModelMappings' => static function ( MediaWikiServices $services ): array {
 		$map = WikibaseRepo::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::CONTENT_MODEL_ID );
 
@@ -457,20 +457,20 @@ return [
 		return $map;
 	},
 
-	'WikibaseRepo.DataAccessSettings' => function ( MediaWikiServices $services ): DataAccessSettings {
+	'WikibaseRepo.DataAccessSettings' => static function ( MediaWikiServices $services ): DataAccessSettings {
 		return new DataAccessSettings(
 			WikibaseRepo::getSettings( $services )->getSetting( 'maxSerializedEntitySize' )
 		);
 	},
 
-	'WikibaseRepo.DatabaseTypeIdsStore' => function ( MediaWikiServices $services ): DatabaseTypeIdsStore {
+	'WikibaseRepo.DatabaseTypeIdsStore' => static function ( MediaWikiServices $services ): DatabaseTypeIdsStore {
 		return new DatabaseTypeIdsStore(
 			WikibaseRepo::getRepoDomainDbFactory( $services )->newRepoDb(),
 			$services->getMainWANObjectCache()
 		);
 	},
 
-	'WikibaseRepo.DataTypeDefinitions' => function ( MediaWikiServices $services ): DataTypeDefinitions {
+	'WikibaseRepo.DataTypeDefinitions' => static function ( MediaWikiServices $services ): DataTypeDefinitions {
 		$baseDataTypes = require __DIR__ . '/../lib/WikibaseLib.datatypes.php';
 		$repoDataTypes = require __DIR__ . '/WikibaseRepo.datatypes.php';
 
@@ -489,30 +489,30 @@ return [
 		);
 	},
 
-	'WikibaseRepo.DataTypeFactory' => function ( MediaWikiServices $services ): DataTypeFactory {
+	'WikibaseRepo.DataTypeFactory' => static function ( MediaWikiServices $services ): DataTypeFactory {
 		return new DataTypeFactory(
 			WikibaseRepo::getDataTypeDefinitions( $services )->getValueTypes()
 		);
 	},
 
-	'WikibaseRepo.DataTypeValidatorFactory' => function ( MediaWikiServices $services ): DataTypeValidatorFactory {
+	'WikibaseRepo.DataTypeValidatorFactory' => static function ( MediaWikiServices $services ): DataTypeValidatorFactory {
 		return new BuilderBasedDataTypeValidatorFactory(
 			WikibaseRepo::getDataTypeDefinitions( $services )->getValidatorFactoryCallbacks()
 		);
 	},
 
-	'WikibaseRepo.DataValueDeserializer' => function ( MediaWikiServices $services ): DataValueDeserializer {
+	'WikibaseRepo.DataValueDeserializer' => static function ( MediaWikiServices $services ): DataValueDeserializer {
 		return new DataValueDeserializer( array_merge(
 			WikibaseRepo::getDataTypeDefinitions( $services )->getDataValueDeserializerBuilders(),
 			[ 'unknown' => UnknownValue::class ]
 		) );
 	},
 
-	'WikibaseRepo.DataValueFactory' => function ( MediaWikiServices $services ): DataValueFactory {
+	'WikibaseRepo.DataValueFactory' => static function ( MediaWikiServices $services ): DataValueFactory {
 		return new DataValueFactory( WikibaseRepo::getDataValueDeserializer( $services ) );
 	},
 
-	'WikibaseRepo.DefaultSnakFormatterBuilders' => function ( MediaWikiServices $services ): WikibaseSnakFormatterBuilders {
+	'WikibaseRepo.DefaultSnakFormatterBuilders' => static function ( MediaWikiServices $services ): WikibaseSnakFormatterBuilders {
 		return new WikibaseSnakFormatterBuilders(
 			WikibaseRepo::getDefaultValueFormatterBuilders( $services ),
 			WikibaseRepo::getPropertyInfoLookup( $services ),
@@ -527,7 +527,7 @@ return [
 	 * @warning This is for use with {@link WikibaseRepo::getDefaultValidatorBuilders()} during bootstrap only!
 	 * Program logic should use {@link WikibaseRepo::getDataTypeValidatorFactory()} instead!
 	 */
-	'WikibaseRepo.DefaultValidatorBuilders' => function ( MediaWikiServices $services ): ValidatorBuilders {
+	'WikibaseRepo.DefaultValidatorBuilders' => static function ( MediaWikiServices $services ): ValidatorBuilders {
 		$settings = WikibaseRepo::getSettings( $services );
 
 		return new ValidatorBuilders(
@@ -549,7 +549,7 @@ return [
 	 * @warning This is for use with {@link WikibaseRepo::getDefaultValueFormatterBuilders()} during bootstrap only!
 	 * Program logic should use {@link WikibaseRepo::getSnakFormatterFactory()} instead!
 	 */
-	'WikibaseRepo.DefaultValueFormatterBuilders' => function (
+	'WikibaseRepo.DefaultValueFormatterBuilders' => static function (
 		MediaWikiServices $services
 	): WikibaseValueFormatterBuilders {
 		$settings = WikibaseRepo::getSettings( $services );
@@ -581,13 +581,13 @@ return [
 		);
 	},
 
-	'WikibaseRepo.DispatchStats' => function ( MediaWikiServices $services ): DispatchStats {
+	'WikibaseRepo.DispatchStats' => static function ( MediaWikiServices $services ): DispatchStats {
 		return new DispatchStats(
 			WikibaseRepo::getRepoDomainDbFactory( $services )->newRepoDb()
 		);
 	},
 
-	'WikibaseRepo.EditEntityFactory' => function ( MediaWikiServices $services ): MediaWikiEditEntityFactory {
+	'WikibaseRepo.EditEntityFactory' => static function ( MediaWikiServices $services ): MediaWikiEditEntityFactory {
 		return new MediaWikiEditEntityFactory(
 			WikibaseRepo::getEntityTitleStoreLookup( $services ),
 			WikibaseRepo::getStore( $services )
@@ -605,7 +605,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EditFilterHookRunner' => function ( MediaWikiServices $services ): EditFilterHookRunner {
+	'WikibaseRepo.EditFilterHookRunner' => static function ( MediaWikiServices $services ): EditFilterHookRunner {
 		return new MediaWikiEditFilterHookRunner(
 			WikibaseRepo::getEntityNamespaceLookup( $services ),
 			WikibaseRepo::getEntityTitleStoreLookup( $services ),
@@ -614,18 +614,18 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EnabledEntityTypes' => function ( MediaWikiServices $services ): array {
+	'WikibaseRepo.EnabledEntityTypes' => static function ( MediaWikiServices $services ): array {
 		return array_keys(
 			WikibaseRepo::getEntitySourceDefinitions( $services )
 				->getEntityTypeToDatabaseSourceMapping()
 		);
 	},
 
-	'WikibaseRepo.EnabledEntityTypesForSearch' => function ( MediaWikiServices $services ): array {
+	'WikibaseRepo.EnabledEntityTypesForSearch' => static function ( MediaWikiServices $services ): array {
 		return array_keys( WikibaseRepo::getEntitySearchHelperCallbacks( $services ) );
 	},
 
-	'WikibaseRepo.EntityArticleIdLookup' => function ( MediaWikiServices $services ): EntityArticleIdLookup {
+	'WikibaseRepo.EntityArticleIdLookup' => static function ( MediaWikiServices $services ): EntityArticleIdLookup {
 		$callbacks = WikibaseRepo::getEntitySourceAndTypeDefinitions( $services )->getServiceBySourceAndType(
 				EntityTypeDefinitions::ARTICLE_ID_LOOKUP_CALLBACK
 			);
@@ -639,7 +639,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityChangeFactory' => function ( MediaWikiServices $services ): EntityChangeFactory {
+	'WikibaseRepo.EntityChangeFactory' => static function ( MediaWikiServices $services ): EntityChangeFactory {
 		//TODO: take this from a setting or registry.
 		$changeClasses = [
 			Item::ENTITY_TYPE => ItemChange::class,
@@ -655,7 +655,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityChangeLookup' => function ( MediaWikiServices $services ): EntityChangeLookup {
+	'WikibaseRepo.EntityChangeLookup' => static function ( MediaWikiServices $services ): EntityChangeLookup {
 		return new EntityChangeLookup(
 			WikibaseRepo::getEntityChangeFactory( $services ),
 			WikibaseRepo::getEntityIdParser( $services ),
@@ -663,14 +663,14 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityChangeOpProvider' => function ( MediaWikiServices $services ): EntityChangeOpProvider {
+	'WikibaseRepo.EntityChangeOpProvider' => static function ( MediaWikiServices $services ): EntityChangeOpProvider {
 		return new EntityChangeOpProvider(
 			WikibaseRepo::getEntityTypeDefinitions( $services )
 				->get( EntityTypeDefinitions::CHANGEOP_DESERIALIZER_CALLBACK )
 		);
 	},
 
-	'WikibaseRepo.EntityConstraintProvider' => function ( MediaWikiServices $services ): EntityConstraintProvider {
+	'WikibaseRepo.EntityConstraintProvider' => static function ( MediaWikiServices $services ): EntityConstraintProvider {
 		return new EntityConstraintProvider(
 			new CompositeSiteLinkConflictLookup( [
 				new SqlSiteLinkConflictLookup(
@@ -684,7 +684,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityContentDataCodec' => function ( MediaWikiServices $services ): EntityContentDataCodec {
+	'WikibaseRepo.EntityContentDataCodec' => static function ( MediaWikiServices $services ): EntityContentDataCodec {
 		return new EntityContentDataCodec(
 			WikibaseRepo::getEntityIdParser( $services ),
 			WikibaseRepo::getStorageEntitySerializer( $services ),
@@ -694,7 +694,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityContentFactory' => function ( MediaWikiServices $services ): EntityContentFactory {
+	'WikibaseRepo.EntityContentFactory' => static function ( MediaWikiServices $services ): EntityContentFactory {
 		return new EntityContentFactory(
 			WikibaseRepo::getContentModelMappings( $services ),
 			WikibaseRepo::getEntityTypeDefinitions( $services )
@@ -702,7 +702,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityDataFormatProvider' => function ( MediaWikiServices $services ): EntityDataFormatProvider {
+	'WikibaseRepo.EntityDataFormatProvider' => static function ( MediaWikiServices $services ): EntityDataFormatProvider {
 		$formats = WikibaseRepo::getSettings( $services )->getSetting( 'entityDataFormats' );
 
 		$entityDataFormatProvider = new EntityDataFormatProvider();
@@ -711,7 +711,7 @@ return [
 		return $entityDataFormatProvider;
 	},
 
-	'WikibaseRepo.EntityDataSerializationService' => function ( MediaWikiServices $services ): EntityDataSerializationService {
+	'WikibaseRepo.EntityDataSerializationService' => static function ( MediaWikiServices $services ): EntityDataSerializationService {
 		return new EntityDataSerializationService(
 			WikibaseRepo::getEntityTitleStoreLookup( $services ),
 			WikibaseRepo::getPropertyDataTypeLookup( $services ),
@@ -724,7 +724,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityDataUriManager' => function ( MediaWikiServices $services ): EntityDataUriManager {
+	'WikibaseRepo.EntityDataUriManager' => static function ( MediaWikiServices $services ): EntityDataUriManager {
 		$entityDataFormatProvider = WikibaseRepo::getEntityDataFormatProvider( $services );
 
 		// build a mapping of formats to file extensions and include HTML
@@ -749,7 +749,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityDiffer' => function ( MediaWikiServices $services ): EntityDiffer {
+	'WikibaseRepo.EntityDiffer' => static function ( MediaWikiServices $services ): EntityDiffer {
 		$entityDiffer = new EntityDiffer();
 		$entityTypeDefinitions = WikibaseRepo::getEntityTypeDefinitions( $services );
 		$builders = $entityTypeDefinitions->get( EntityTypeDefinitions::ENTITY_DIFFER_STRATEGY_BUILDER );
@@ -759,7 +759,7 @@ return [
 		return $entityDiffer;
 	},
 
-	'WikibaseRepo.EntityDiffVisualizerFactory' => function ( MediaWikiServices $services ): EntityDiffVisualizerFactory{
+	'WikibaseRepo.EntityDiffVisualizerFactory' => static function ( MediaWikiServices $services ): EntityDiffVisualizerFactory{
 		return new EntityDiffVisualizerFactory(
 			WikibaseRepo::getEntityTypeDefinitions( $services )->get( EntityTypeDefinitions::ENTITY_DIFF_VISUALIZER_CALLBACK ),
 			new ClaimDiffer( new OrderedListDiffer( new ComparableComparer() ) ),
@@ -769,7 +769,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityExistenceChecker' => function ( MediaWikiServices $services ): EntityExistenceChecker {
+	'WikibaseRepo.EntityExistenceChecker' => static function ( MediaWikiServices $services ): EntityExistenceChecker {
 		return new SourceAndTypeDispatchingExistenceChecker(
 			WikibaseRepo::getEntitySourceLookup( $services ),
 			new ServiceBySourceAndTypeDispatcher(
@@ -780,21 +780,21 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityFactory' => function ( MediaWikiServices $services ): EntityFactory {
+	'WikibaseRepo.EntityFactory' => static function ( MediaWikiServices $services ): EntityFactory {
 		$instantiators = WikibaseRepo::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::ENTITY_FACTORY_CALLBACK );
 
 		return new EntityFactory( $instantiators );
 	},
 
-	'WikibaseRepo.EntityIdComposer' => function ( MediaWikiServices $services ): EntityIdComposer {
+	'WikibaseRepo.EntityIdComposer' => static function ( MediaWikiServices $services ): EntityIdComposer {
 		return new EntityIdComposer(
 			WikibaseRepo::getEntityTypeDefinitions( $services )
 				->get( EntityTypeDefinitions::ENTITY_ID_COMPOSER_CALLBACK )
 		);
 	},
 
-	'WikibaseRepo.EntityIdHtmlLinkFormatterFactory' => function (
+	'WikibaseRepo.EntityIdHtmlLinkFormatterFactory' => static function (
 		MediaWikiServices $services
 	): EntityIdFormatterFactory {
 		$factory = new EntityIdHtmlLinkFormatterFactory(
@@ -811,7 +811,7 @@ return [
 			: $factory;
 	},
 
-	'WikibaseRepo.EntityIdLabelFormatterFactory' => function (
+	'WikibaseRepo.EntityIdLabelFormatterFactory' => static function (
 		MediaWikiServices $services
 	): EntityIdLabelFormatterFactory {
 		return new EntityIdLabelFormatterFactory(
@@ -819,14 +819,14 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityIdLookup' => function ( MediaWikiServices $services ): EntityIdLookup {
+	'WikibaseRepo.EntityIdLookup' => static function ( MediaWikiServices $services ): EntityIdLookup {
 		return new ContentHandlerEntityIdLookup(
 			WikibaseRepo::getEntityContentFactory( $services ),
 			$services->getHookContainer()
 		);
 	},
 
-	'WikibaseRepo.EntityIdParser' => function ( MediaWikiServices $services ): EntityIdParser {
+	'WikibaseRepo.EntityIdParser' => static function ( MediaWikiServices $services ): EntityIdParser {
 		$settings = WikibaseRepo::getSettings( $services );
 		$dispatchingEntityIdParser = new DispatchingEntityIdParser(
 			WikibaseRepo::getEntityTypeDefinitions( $services )->getEntityIdBuilders()
@@ -844,7 +844,7 @@ return [
 		return $dispatchingEntityIdParser;
 	},
 
-	'WikibaseRepo.EntityLinkFormatterFactory' => function ( MediaWikiServices $services ): EntityLinkFormatterFactory {
+	'WikibaseRepo.EntityLinkFormatterFactory' => static function ( MediaWikiServices $services ): EntityLinkFormatterFactory {
 		return new EntityLinkFormatterFactory(
 			WikibaseRepo::getEntityTitleTextLookup( $services ),
 			$services->getLanguageFactory(),
@@ -852,7 +852,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityLookup' => function ( MediaWikiServices $services ): EntityLookup {
+	'WikibaseRepo.EntityLookup' => static function ( MediaWikiServices $services ): EntityLookup {
 		return WikibaseRepo::getStore( $services )
 			->getEntityLookup(
 				Store::LOOKUP_CACHING_ENABLED,
@@ -860,7 +860,7 @@ return [
 			);
 	},
 
-	'WikibaseRepo.EntityMetaTagsCreatorFactory' => function (
+	'WikibaseRepo.EntityMetaTagsCreatorFactory' => static function (
 		MediaWikiServices $services
 	): DispatchingEntityMetaTagsCreatorFactory {
 		return new DispatchingEntityMetaTagsCreatorFactory(
@@ -869,17 +869,17 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityNamespaceLookup' => function ( MediaWikiServices $services ): EntityNamespaceLookup {
+	'WikibaseRepo.EntityNamespaceLookup' => static function ( MediaWikiServices $services ): EntityNamespaceLookup {
 		$entitySources = array_filter(
 			WikibaseRepo::getEntitySourceDefinitions( $services )->getSources(),
-			function ( EntitySource $entitySource ) {
+			static function ( EntitySource $entitySource ) {
 				return $entitySource->getType() === DatabaseEntitySource::TYPE;
 			}
 		);
 
 		return array_reduce(
 			$entitySources,
-			function ( EntityNamespaceLookup $nsLookup, DatabaseEntitySource $source ): EntityNamespaceLookup {
+			static function ( EntityNamespaceLookup $nsLookup, DatabaseEntitySource $source ): EntityNamespaceLookup {
 				return $nsLookup->merge( new EntityNamespaceLookup(
 					$source->getEntityNamespaceIds(),
 					$source->getEntitySlotNames()
@@ -889,7 +889,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityParserOutputGeneratorFactory' => function ( MediaWikiServices $services ): EntityParserOutputGeneratorFactory {
+	'WikibaseRepo.EntityParserOutputGeneratorFactory' => static function ( MediaWikiServices $services ): EntityParserOutputGeneratorFactory {
 		$settings = WikibaseRepo::getSettings( $services );
 
 		return new EntityParserOutputGeneratorFactory(
@@ -922,7 +922,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityPatcher' => function ( MediaWikiServices $services ): EntityPatcher {
+	'WikibaseRepo.EntityPatcher' => static function ( MediaWikiServices $services ): EntityPatcher {
 		$entityPatcher = new EntityPatcher();
 		$entityTypeDefinitions = WikibaseRepo::getEntityTypeDefinitions( $services );
 		$builders = $entityTypeDefinitions->get( EntityTypeDefinitions::ENTITY_PATCHER_STRATEGY_BUILDER );
@@ -932,7 +932,7 @@ return [
 		return $entityPatcher;
 	},
 
-	'WikibaseRepo.EntityPermissionChecker' => function ( MediaWikiServices $services ): EntityPermissionChecker {
+	'WikibaseRepo.EntityPermissionChecker' => static function ( MediaWikiServices $services ): EntityPermissionChecker {
 		return new WikiPageEntityStorePermissionChecker(
 			WikibaseRepo::getEntityNamespaceLookup( $services ),
 			WikibaseRepo::getEntityTitleLookup( $services ),
@@ -941,7 +941,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityRdfBuilderFactory' => function ( MediaWikiServices $services ): EntityRdfBuilderFactory {
+	'WikibaseRepo.EntityRdfBuilderFactory' => static function ( MediaWikiServices $services ): EntityRdfBuilderFactory {
 		$entityTypeDefinitions = WikibaseRepo::getEntityTypeDefinitions( $services );
 
 		return new EntityRdfBuilderFactory(
@@ -949,7 +949,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityRedirectChecker' => function ( MediaWikiServices $services ): EntityRedirectChecker {
+	'WikibaseRepo.EntityRedirectChecker' => static function ( MediaWikiServices $services ): EntityRedirectChecker {
 		return new SourceAndTypeDispatchingRedirectChecker(
 			new ServiceBySourceAndTypeDispatcher(
 				EntityRedirectChecker::class,
@@ -960,12 +960,12 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityRevisionLookup' => function ( MediaWikiServices $services ): EntityRevisionLookup {
+	'WikibaseRepo.EntityRevisionLookup' => static function ( MediaWikiServices $services ): EntityRevisionLookup {
 		return WikibaseRepo::getStore( $services )
 			->getEntityRevisionLookup( Store::LOOKUP_CACHING_ENABLED );
 	},
 
-	'WikibaseRepo.EntitySearchHelper' => function ( MediaWikiServices $services ): EntitySearchHelper {
+	'WikibaseRepo.EntitySearchHelper' => static function ( MediaWikiServices $services ): EntitySearchHelper {
 		$entitySearchHelperCallbacks = WikibaseRepo::getEntitySearchHelperCallbacks( $services );
 
 		$typeDispatchingEntitySearchHelper = new TypeDispatchingEntitySearchHelper(
@@ -986,7 +986,7 @@ return [
 		return $typeDispatchingEntitySearchHelper;
 	},
 
-	'WikibaseRepo.EntitySearchHelperCallbacks' => function ( MediaWikiServices $services ): array {
+	'WikibaseRepo.EntitySearchHelperCallbacks' => static function ( MediaWikiServices $services ): array {
 		$callbacks = WikibaseRepo::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::ENTITY_SEARCH_CALLBACK );
 
@@ -995,7 +995,7 @@ return [
 		return $callbacks;
 	},
 
-	'WikibaseRepo.EntitySourceAndTypeDefinitions' => function ( MediaWikiServices $services ): EntitySourceAndTypeDefinitions {
+	'WikibaseRepo.EntitySourceAndTypeDefinitions' => static function ( MediaWikiServices $services ): EntitySourceAndTypeDefinitions {
 		$baseEntityTypes = require __DIR__ . '/../lib/WikibaseLib.entitytypes.php';
 		$repoEntityTypes = require __DIR__ . '/WikibaseRepo.entitytypes.php';
 
@@ -1020,7 +1020,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntitySourceDefinitions' => function ( MediaWikiServices $services ): EntitySourceDefinitions {
+	'WikibaseRepo.EntitySourceDefinitions' => static function ( MediaWikiServices $services ): EntitySourceDefinitions {
 		$settings = WikibaseRepo::getSettings( $services );
 		$subEntityTypesMapper = WikibaseRepo::getSubEntityTypesMapper( $services );
 
@@ -1040,22 +1040,22 @@ return [
 		return $fedPropsSourceAdder->addDefaultIfRequired( $entitySourceDefinitions );
 	},
 
-	'WikibaseRepo.EntitySourceLookup' => function ( MediaWikiServices $services ): EntitySourceLookup {
+	'WikibaseRepo.EntitySourceLookup' => static function ( MediaWikiServices $services ): EntitySourceLookup {
 		return new EntitySourceLookup(
 			WikibaseRepo::getEntitySourceDefinitions( $services ),
 			WikibaseRepo::getSubEntityTypesMapper( $services )
 		);
 	},
 
-	'WikibaseRepo.EntityStore' => function ( MediaWikiServices $services ): EntityStore {
+	'WikibaseRepo.EntityStore' => static function ( MediaWikiServices $services ): EntityStore {
 		return WikibaseRepo::getStore( $services )->getEntityStore();
 	},
 
-	'WikibaseRepo.EntityStoreWatcher' => function ( MediaWikiServices $services ): EntityStoreWatcher {
+	'WikibaseRepo.EntityStoreWatcher' => static function ( MediaWikiServices $services ): EntityStoreWatcher {
 		return WikibaseRepo::getStore( $services )->getEntityStoreWatcher();
 	},
 
-	'WikibaseRepo.EntityStubRdfBuilderFactory' => function ( MediaWikiServices $services ): EntityStubRdfBuilderFactory {
+	'WikibaseRepo.EntityStubRdfBuilderFactory' => static function ( MediaWikiServices $services ): EntityStubRdfBuilderFactory {
 		$entityTypeDefinitions = WikibaseRepo::getEntityTypeDefinitions( $services );
 
 		return new EntityStubRdfBuilderFactory(
@@ -1063,11 +1063,11 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityTitleLookup' => function ( MediaWikiServices $services ): EntityTitleLookup {
+	'WikibaseRepo.EntityTitleLookup' => static function ( MediaWikiServices $services ): EntityTitleLookup {
 		return WikibaseRepo::getEntityTitleStoreLookup( $services );
 	},
 
-	'WikibaseRepo.EntityTitleStoreLookup' => function ( MediaWikiServices $services ): EntityTitleStoreLookup {
+	'WikibaseRepo.EntityTitleStoreLookup' => static function ( MediaWikiServices $services ): EntityTitleStoreLookup {
 		return new TypeDispatchingEntityTitleStoreLookup(
 			WikibaseRepo::getEntityTypeDefinitions( $services )
 				->get( EntityTypeDefinitions::ENTITY_TITLE_STORE_LOOKUP_FACTORY_CALLBACK ),
@@ -1080,7 +1080,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityTitleTextLookup' => function ( MediaWikiServices $services ): EntityTitleTextLookup {
+	'WikibaseRepo.EntityTitleTextLookup' => static function ( MediaWikiServices $services ): EntityTitleTextLookup {
 		return new SourceAndTypeDispatchingTitleTextLookup(
 			WikibaseRepo::getEntitySourceLookup( $services ),
 			new ServiceBySourceAndTypeDispatcher(
@@ -1091,7 +1091,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityTypeDefinitions' => function ( MediaWikiServices $services ): EntityTypeDefinitions {
+	'WikibaseRepo.EntityTypeDefinitions' => static function ( MediaWikiServices $services ): EntityTypeDefinitions {
 		$baseEntityTypes = require __DIR__ . '/../lib/WikibaseLib.entitytypes.php';
 		$repoEntityTypes = require __DIR__ . '/WikibaseRepo.entitytypes.php';
 
@@ -1105,7 +1105,7 @@ return [
 		return new EntityTypeDefinitions( $entityTypes );
 	},
 
-	'WikibaseRepo.EntityTypesConfigValue' => function ( MediaWikiServices $services ): array {
+	'WikibaseRepo.EntityTypesConfigValue' => static function ( MediaWikiServices $services ): array {
 		$entityTypeDefinitions = WikibaseRepo::getEntityTypeDefinitions( $services );
 		return [
 			'types' => $entityTypeDefinitions->getEntityTypes(),
@@ -1114,7 +1114,7 @@ return [
 		];
 	},
 
-	'WikibaseRepo.EntityUrlLookup' => function ( MediaWikiServices $services ): EntityUrlLookup {
+	'WikibaseRepo.EntityUrlLookup' => static function ( MediaWikiServices $services ): EntityUrlLookup {
 		return new SourceAndTypeDispatchingUrlLookup(
 			new ServiceBySourceAndTypeDispatcher(
 				EntityUrlLookup::class,
@@ -1125,13 +1125,13 @@ return [
 		);
 	},
 
-	'WikibaseRepo.EntityViewFactory' => function ( MediaWikiServices $services ): DispatchingEntityViewFactory {
+	'WikibaseRepo.EntityViewFactory' => static function ( MediaWikiServices $services ): DispatchingEntityViewFactory {
 		return new DispatchingEntityViewFactory(
 			WikibaseRepo::getEntityTypeDefinitions( $services )->get( EntityTypeDefinitions::VIEW_FACTORY_CALLBACK )
 		);
 	},
 
-	'WikibaseRepo.ExceptionLocalizer' => function ( MediaWikiServices $services ): ExceptionLocalizer {
+	'WikibaseRepo.ExceptionLocalizer' => static function ( MediaWikiServices $services ): ExceptionLocalizer {
 		$formatter = WikibaseRepo::getMessageParameterFormatter( $services );
 
 		return new DispatchingExceptionLocalizer( [
@@ -1144,11 +1144,11 @@ return [
 		] );
 	},
 
-	'WikibaseRepo.ExternalFormatStatementDeserializer' => function ( MediaWikiServices $services ): Deserializer {
+	'WikibaseRepo.ExternalFormatStatementDeserializer' => static function ( MediaWikiServices $services ): Deserializer {
 		return WikibaseRepo::getBaseDataModelDeserializerFactory( $services )->newStatementDeserializer();
 	},
 
-	'WikibaseRepo.FallbackLabelDescriptionLookupFactory' => function (
+	'WikibaseRepo.FallbackLabelDescriptionLookupFactory' => static function (
 		MediaWikiServices $services
 	): FallbackLabelDescriptionLookupFactory {
 		return new FallbackLabelDescriptionLookupFactory(
@@ -1160,7 +1160,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.FederatedPropertiesServiceFactory' => function ( MediaWikiServices $services ): ApiServiceFactory {
+	'WikibaseRepo.FederatedPropertiesServiceFactory' => static function ( MediaWikiServices $services ): ApiServiceFactory {
 		$settings = WikibaseRepo::getSettings( $services );
 
 		if (
@@ -1184,7 +1184,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.FieldDefinitionsFactory' => function ( MediaWikiServices $services ): FieldDefinitionsFactory {
+	'WikibaseRepo.FieldDefinitionsFactory' => static function ( MediaWikiServices $services ): FieldDefinitionsFactory {
 		return new FieldDefinitionsFactory(
 			WikibaseRepo::getEntityTypeDefinitions( $services ),
 			WikibaseRepo::getTermsLanguages( $services ),
@@ -1192,16 +1192,16 @@ return [
 		);
 	},
 
-	'WikibaseRepo.FulltextSearchTypes' => function ( MediaWikiServices $services ): array {
+	'WikibaseRepo.FulltextSearchTypes' => static function ( MediaWikiServices $services ): array {
 		$searchTypeContexts = WikibaseRepo::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::FULLTEXT_SEARCH_CONTEXT );
 
-		return array_map( function ( $context ): string {
+		return array_map( static function ( $context ): string {
 			return is_callable( $context ) ? $context() : $context;
 		}, $searchTypeContexts );
 	},
 
-	'WikibaseRepo.IdGenerator' => function ( MediaWikiServices $services ): IdGenerator {
+	'WikibaseRepo.IdGenerator' => static function ( MediaWikiServices $services ): IdGenerator {
 		$settings = WikibaseRepo::getSettings( $services );
 		$idGeneratorSetting = $settings->getSetting( 'idGenerator' );
 		$db = WikibaseRepo::getRepoDomainDbFactory( $services )->newRepoDb();
@@ -1246,7 +1246,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.InternalFormatDeserializerFactory' => function ( MediaWikiServices $services ): InternalDeserializerFactory {
+	'WikibaseRepo.InternalFormatDeserializerFactory' => static function ( MediaWikiServices $services ): InternalDeserializerFactory {
 		return new InternalDeserializerFactory(
 			WikibaseRepo::getDataValueDeserializer( $services ),
 			WikibaseRepo::getEntityIdParser( $services ),
@@ -1255,18 +1255,18 @@ return [
 		);
 	},
 
-	'WikibaseRepo.InternalFormatEntityDeserializer' => function ( MediaWikiServices $services ): Deserializer {
+	'WikibaseRepo.InternalFormatEntityDeserializer' => static function ( MediaWikiServices $services ): Deserializer {
 		return WikibaseRepo::getInternalFormatDeserializerFactory( $services )->newEntityDeserializer();
 	},
 
-	'WikibaseRepo.ItemDisambiguationFactory' => function ( MediaWikiServices $services ): ItemDisambiguationFactory {
+	'WikibaseRepo.ItemDisambiguationFactory' => static function ( MediaWikiServices $services ): ItemDisambiguationFactory {
 		return new ItemDisambiguationFactory(
 			WikibaseRepo::getEntityTitleLookup( $services ),
 			WikibaseRepo::getLanguageNameLookupFactory( $services )
 		);
 	},
 
-	'WikibaseRepo.ItemHandler' => function ( MediaWikiServices $services ): ItemHandler {
+	'WikibaseRepo.ItemHandler' => static function ( MediaWikiServices $services ): ItemHandler {
 		return new ItemHandler(
 			WikibaseRepo::getItemTermStoreWriter( $services ),
 			WikibaseRepo::getEntityContentDataCodec( $services ),
@@ -1287,7 +1287,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.ItemMergeInteractor' => function ( MediaWikiServices $services ): ItemMergeInteractor {
+	'WikibaseRepo.ItemMergeInteractor' => static function ( MediaWikiServices $services ): ItemMergeInteractor {
 		return new ItemMergeInteractor(
 			WikibaseRepo::getChangeOpFactoryProvider( $services )
 				->getMergeFactory(),
@@ -1302,7 +1302,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.ItemRedirectCreationInteractor' => function (
+	'WikibaseRepo.ItemRedirectCreationInteractor' => static function (
 		MediaWikiServices $services
 	): ItemRedirectCreationInteractor {
 		$store = WikibaseRepo::getStore( $services );
@@ -1319,12 +1319,12 @@ return [
 		);
 	},
 
-	'WikibaseRepo.ItemTermsCollisionDetector' => function ( MediaWikiServices $services ): TermsCollisionDetector {
+	'WikibaseRepo.ItemTermsCollisionDetector' => static function ( MediaWikiServices $services ): TermsCollisionDetector {
 		return WikibaseRepo::getTermsCollisionDetectorFactory( $services )
 			->getTermsCollisionDetector( Item::ENTITY_TYPE );
 	},
 
-	'WikibaseRepo.ItemTermStoreWriter' => function ( MediaWikiServices $services ): EntityTermStoreWriter {
+	'WikibaseRepo.ItemTermStoreWriter' => static function ( MediaWikiServices $services ): EntityTermStoreWriter {
 		if ( !in_array(
 			Item::ENTITY_TYPE,
 			WikibaseRepo::getLocalEntitySource( $services )->getEntityTypes()
@@ -1337,14 +1337,14 @@ return [
 		);
 	},
 
-	'WikibaseRepo.ItemUrlParser' => function ( MediaWikiServices $services ): SuffixEntityIdParser {
+	'WikibaseRepo.ItemUrlParser' => static function ( MediaWikiServices $services ): SuffixEntityIdParser {
 		return new SuffixEntityIdParser(
 			WikibaseRepo::getItemVocabularyBaseUri( $services ),
 			new ItemIdParser()
 		);
 	},
 
-	'WikibaseRepo.ItemVocabularyBaseUri' => function ( MediaWikiServices $services ): string {
+	'WikibaseRepo.ItemVocabularyBaseUri' => static function ( MediaWikiServices $services ): string {
 		$itemSource = WikibaseRepo::getEntitySourceDefinitions( $services )
 			->getDatabaseSourceForEntityType( Item::ENTITY_TYPE );
 
@@ -1355,7 +1355,7 @@ return [
 		return $itemSource->getConceptBaseUri();
 	},
 
-	'WikibaseRepo.KartographerEmbeddingHandler' => function ( MediaWikiServices $services ): ?CachingKartographerEmbeddingHandler {
+	'WikibaseRepo.KartographerEmbeddingHandler' => static function ( MediaWikiServices $services ): ?CachingKartographerEmbeddingHandler {
 		$settings = WikibaseRepo::getSettings( $services );
 
 		if (
@@ -1370,14 +1370,14 @@ return [
 		}
 	},
 
-	'WikibaseRepo.LanguageDirectionalityLookup' => function ( MediaWikiServices $services ): LanguageDirectionalityLookup {
+	'WikibaseRepo.LanguageDirectionalityLookup' => static function ( MediaWikiServices $services ): LanguageDirectionalityLookup {
 		return new MediaWikiLanguageDirectionalityLookup(
 			$services->getLanguageFactory(),
 			$services->getLanguageNameUtils()
 		);
 	},
 
-	'WikibaseRepo.LanguageFallbackChainFactory' => function ( MediaWikiServices $services ): LanguageFallbackChainFactory {
+	'WikibaseRepo.LanguageFallbackChainFactory' => static function ( MediaWikiServices $services ): LanguageFallbackChainFactory {
 		return new LanguageFallbackChainFactory(
 			WikibaseRepo::getTermsLanguages( $services ),
 			$services->getLanguageFactory(),
@@ -1386,14 +1386,14 @@ return [
 		);
 	},
 
-	'WikibaseRepo.LanguageNameLookupFactory' => function ( MediaWikiServices $services ): LanguageNameLookupFactory {
+	'WikibaseRepo.LanguageNameLookupFactory' => static function ( MediaWikiServices $services ): LanguageNameLookupFactory {
 		return new LanguageNameLookupFactory(
 			$services->getLanguageNameUtils(),
 			WikibaseRepo::getMessageInLanguageProvider( $services )
 		);
 	},
 
-	'WikibaseRepo.LegacyFormatDetectorCallback' => function ( MediaWikiServices $services ): ?callable {
+	'WikibaseRepo.LegacyFormatDetectorCallback' => static function ( MediaWikiServices $services ): ?callable {
 		$transformOnExport = WikibaseRepo::getSettings( $services )
 			->getSetting( 'transformLegacyFormatOnExport' );
 
@@ -1419,14 +1419,14 @@ return [
 		 *
 		 * @return bool True if $blob seems to be using a legacy serialization format.
 		 */
-		return function ( $blob, $format ) {
+		return static function ( $blob, $format ) {
 			// The legacy serialization uses something like "entity":["item",21] or
 			// even "entity":"p21" for the entity ID.
 			return preg_match( '/"entity"\s*:/', $blob ) > 0;
 		};
 	},
 
-	'WikibaseRepo.LinkTargetEntityIdLookup' => function ( MediaWikiServices $services ): LinkTargetEntityIdLookup {
+	'WikibaseRepo.LinkTargetEntityIdLookup' => static function ( MediaWikiServices $services ): LinkTargetEntityIdLookup {
 		return new EntityLinkTargetEntityIdLookup(
 			WikibaseRepo::getEntityNamespaceLookup( $services ),
 			WikibaseRepo::getEntityIdParser( $services ),
@@ -1435,7 +1435,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.LocalEntityNamespaceLookup' => function ( MediaWikiServices $services ): EntityNamespaceLookup {
+	'WikibaseRepo.LocalEntityNamespaceLookup' => static function ( MediaWikiServices $services ): EntityNamespaceLookup {
 		$localEntitySource = WikibaseRepo::getLocalEntitySource( $services );
 		$nsIds = $localEntitySource->getEntityNamespaceIds();
 		$entitySlots = $localEntitySource->getEntitySlotNames();
@@ -1443,7 +1443,7 @@ return [
 		return new EntityNamespaceLookup( $nsIds, $entitySlots );
 	},
 
-	'WikibaseRepo.LocalEntitySource' => function ( MediaWikiServices $services ): EntitySource {
+	'WikibaseRepo.LocalEntitySource' => static function ( MediaWikiServices $services ): EntitySource {
 		$localEntitySourceName = WikibaseRepo::getSettings( $services )->getSetting( 'localEntitySourceName' );
 		$sources = WikibaseRepo::getEntitySourceDefinitions( $services )->getSources();
 		foreach ( $sources as $source ) {
@@ -1455,7 +1455,7 @@ return [
 		throw new LogicException( 'No source configured: ' . $localEntitySourceName );
 	},
 
-	'WikibaseRepo.LocalEntityTypes' => function ( MediaWikiServices $services ): array {
+	'WikibaseRepo.LocalEntityTypes' => static function ( MediaWikiServices $services ): array {
 		$localSource = WikibaseRepo::getLocalEntitySource( $services );
 		$subEntityTypes = WikibaseRepo::getEntityTypeDefinitions( $services )
 				->get( EntityTypeDefinitions::SUB_ENTITY_TYPES );
@@ -1463,7 +1463,7 @@ return [
 		// Expands the array of local entity types with sub types
 		return array_reduce(
 			$localSource->getEntityTypes(),
-			function ( $types, $localTypeName ) use ( $subEntityTypes ) {
+			static function ( $types, $localTypeName ) use ( $subEntityTypes ) {
 				$types[] = $localTypeName;
 				if ( array_key_exists( $localTypeName, $subEntityTypes ) ) {
 					$types = array_merge( $types, $subEntityTypes[$localTypeName] );
@@ -1474,7 +1474,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.LocalizedTextProviderFactory' => function (
+	'WikibaseRepo.LocalizedTextProviderFactory' => static function (
 		MediaWikiServices $services
 	): LocalizedTextProviderFactory {
 		return new LocalizedTextProviderFactory(
@@ -1482,7 +1482,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.LocalRepoWikiPageMetaDataAccessor' => function ( MediaWikiServices $services ): WikiPageEntityMetaDataAccessor {
+	'WikibaseRepo.LocalRepoWikiPageMetaDataAccessor' => static function ( MediaWikiServices $services ): WikiPageEntityMetaDataAccessor {
 		$entityNamespaceLookup = WikibaseRepo::getEntityNamespaceLookup( $services );
 		$repoName = ''; // Empty string here means this only works for the local repo
 		$dbName = false; // false means the local database
@@ -1510,11 +1510,11 @@ return [
 		);
 	},
 
-	'WikibaseRepo.Logger' => function ( MediaWikiServices $services ): LoggerInterface {
+	'WikibaseRepo.Logger' => static function ( MediaWikiServices $services ): LoggerInterface {
 		return LoggerFactory::getInstance( 'Wikibase' );
 	},
 
-	'WikibaseRepo.MatchingTermsLookupFactory' => function ( MediaWikiServices $services ): MatchingTermsLookupFactory {
+	'WikibaseRepo.MatchingTermsLookupFactory' => static function ( MediaWikiServices $services ): MatchingTermsLookupFactory {
 		return new MatchingTermsLookupFactory(
 			WikibaseRepo::getEntityIdComposer( $services ),
 			WikibaseRepo::getRepoDomainDbFactory( $services ),
@@ -1523,11 +1523,11 @@ return [
 		);
 	},
 
-	'WikibaseRepo.MessageInLanguageProvider' => function ( MediaWikiServices $services ): MessageInLanguageProvider {
+	'WikibaseRepo.MessageInLanguageProvider' => static function ( MediaWikiServices $services ): MessageInLanguageProvider {
 		return new MediaWikiMessageInLanguageProvider();
 	},
 
-	'WikibaseRepo.MessageParameterFormatter' => function ( MediaWikiServices $services ): ValueFormatter {
+	'WikibaseRepo.MessageParameterFormatter' => static function ( MediaWikiServices $services ): ValueFormatter {
 		$formatterOptions = new FormatterOptions();
 		$valueFormatterFactory = WikibaseRepo::getValueFormatterFactory( $services );
 
@@ -1539,7 +1539,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.MobileSite' => function ( MediaWikiServices $services ): bool {
+	'WikibaseRepo.MobileSite' => static function ( MediaWikiServices $services ): bool {
 		if ( $services->has( 'MobileFrontend.Context' ) ) {
 			$mobileContext = $services->get( 'MobileFrontend.Context' );
 			return $mobileContext->shouldDisplayMobileView();
@@ -1547,18 +1547,18 @@ return [
 		return false;
 	},
 
-	'WikibaseRepo.MonolingualTextLanguages' => function ( MediaWikiServices $services ): ContentLanguages {
+	'WikibaseRepo.MonolingualTextLanguages' => static function ( MediaWikiServices $services ): ContentLanguages {
 		return WikibaseRepo::getWikibaseContentLanguages( $services )
 			->getContentLanguages( WikibaseContentLanguages::CONTEXT_MONOLINGUAL_TEXT );
 	},
 
-	'WikibaseRepo.NumberLocalizerFactory' => function ( MediaWikiServices $services ): NumberLocalizerFactory {
+	'WikibaseRepo.NumberLocalizerFactory' => static function ( MediaWikiServices $services ): NumberLocalizerFactory {
 		return new NumberLocalizerFactory(
 			$services->getLanguageFactory()
 		);
 	},
 
-	'WikibaseRepo.PrefetchingTermLookup' => function ( MediaWikiServices $services ): PrefetchingTermLookup {
+	'WikibaseRepo.PrefetchingTermLookup' => static function ( MediaWikiServices $services ): PrefetchingTermLookup {
 		return new SourceAndTypeDispatchingPrefetchingTermLookup(
 			new ServiceBySourceAndTypeDispatcher(
 				PrefetchingTermLookup::class,
@@ -1569,7 +1569,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.PropertyDataTypeLookup' => function ( MediaWikiServices $services ): PropertyDataTypeLookup {
+	'WikibaseRepo.PropertyDataTypeLookup' => static function ( MediaWikiServices $services ): PropertyDataTypeLookup {
 		$entitySourceDefinitions = WikibaseRepo::getEntitySourceDefinitions( $services );
 
 		return new SourceDispatchingPropertyDataTypeLookup(
@@ -1585,7 +1585,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.PropertyHandler' => function ( MediaWikiServices $services ): PropertyHandler {
+	'WikibaseRepo.PropertyHandler' => static function ( MediaWikiServices $services ): PropertyHandler {
 		return new PropertyHandler(
 			WikibaseRepo::getPropertyTermStoreWriter( $services ),
 			WikibaseRepo::getEntityContentDataCodec( $services ),
@@ -1603,7 +1603,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.PropertyInfoBuilder' => function ( MediaWikiServices $services ): PropertyInfoBuilder {
+	'WikibaseRepo.PropertyInfoBuilder' => static function ( MediaWikiServices $services ): PropertyInfoBuilder {
 		$settings = WikibaseRepo::getSettings( $services );
 		$propertyIdMap = [];
 
@@ -1622,7 +1622,7 @@ return [
 		return new PropertyInfoBuilder( $propertyIdMap );
 	},
 
-	'WikibaseRepo.PropertyInfoLookup' => function ( MediaWikiServices $services ): PropertyInfoLookup {
+	'WikibaseRepo.PropertyInfoLookup' => static function ( MediaWikiServices $services ): PropertyInfoLookup {
 		$repoSettings = WikibaseRepo::getSettings( $services );
 		$cacheKeyGroup = $repoSettings->getSetting( 'sharedCacheKeyGroup' );
 		$cacheDuration = $repoSettings->getSetting( 'sharedCacheDuration' );
@@ -1650,12 +1650,12 @@ return [
 		);
 	},
 
-	'WikibaseRepo.PropertyTermsCollisionDetector' => function ( MediaWikiServices $services ): TermsCollisionDetector {
+	'WikibaseRepo.PropertyTermsCollisionDetector' => static function ( MediaWikiServices $services ): TermsCollisionDetector {
 		return WikibaseRepo::getTermsCollisionDetectorFactory( $services )
 			->getTermsCollisionDetector( Property::ENTITY_TYPE );
 	},
 
-	'WikibaseRepo.PropertyTermStoreWriter' => function ( MediaWikiServices $services ): EntityTermStoreWriter {
+	'WikibaseRepo.PropertyTermStoreWriter' => static function ( MediaWikiServices $services ): EntityTermStoreWriter {
 		if ( !in_array(
 			Property::ENTITY_TYPE,
 			WikibaseRepo::getLocalEntitySource( $services )->getEntityTypes()
@@ -1668,11 +1668,11 @@ return [
 		);
 	},
 
-	'WikibaseRepo.PropertyValueExpertsModule' => function ( MediaWikiServices $services ): PropertyValueExpertsModule {
+	'WikibaseRepo.PropertyValueExpertsModule' => static function ( MediaWikiServices $services ): PropertyValueExpertsModule {
 		return new PropertyValueExpertsModule( WikibaseRepo::getDataTypeDefinitions( $services ) );
 	},
 
-	'WikibaseRepo.RdfBuilderFactory' => function ( MediaWikiServices $services ): RdfBuilderFactory {
+	'WikibaseRepo.RdfBuilderFactory' => static function ( MediaWikiServices $services ): RdfBuilderFactory {
 		return new RdfBuilderFactory(
 			WikibaseRepo::getRdfVocabulary( $services ),
 			WikibaseRepo::getEntityRdfBuilderFactory( $services ),
@@ -1682,7 +1682,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.RdfVocabulary' => function ( MediaWikiServices $services ): RdfVocabulary {
+	'WikibaseRepo.RdfVocabulary' => static function ( MediaWikiServices $services ): RdfVocabulary {
 		$repoSettings = WikibaseRepo::getSettings( $services );
 		$languageCodes = array_merge(
 			$services->getMainConfig()->get( 'DummyLanguageCodes' ),
@@ -1709,17 +1709,17 @@ return [
 		);
 	},
 
-	'WikibaseRepo.RedirectResolvingLatestRevisionLookup' => function (
+	'WikibaseRepo.RedirectResolvingLatestRevisionLookup' => static function (
 		MediaWikiServices $services
 	): RedirectResolvingLatestRevisionLookup {
 		return new RedirectResolvingLatestRevisionLookup( WikibaseRepo::getEntityRevisionLookup( $services ) );
 	},
 
-	'WikibaseRepo.ReferenceNormalizer' => function ( MediaWikiServices $services ): ReferenceNormalizer {
+	'WikibaseRepo.ReferenceNormalizer' => static function ( MediaWikiServices $services ): ReferenceNormalizer {
 		return new ReferenceNormalizer( WikibaseRepo::getSnakNormalizer( $services ) );
 	},
 
-	'WikibaseRepo.RepoDomainDbFactory' => function ( MediaWikiServices $services ): RepoDomainDbFactory {
+	'WikibaseRepo.RepoDomainDbFactory' => static function ( MediaWikiServices $services ): RepoDomainDbFactory {
 		$lbFactory = $services->getDBLoadBalancerFactory();
 
 		return new RepoDomainDbFactory(
@@ -1729,11 +1729,11 @@ return [
 		);
 	},
 
-	'WikibaseRepo.Settings' => function ( MediaWikiServices $services ): SettingsArray {
+	'WikibaseRepo.Settings' => static function ( MediaWikiServices $services ): SettingsArray {
 		return WikibaseSettings::getRepoSettings();
 	},
 
-	'WikibaseRepo.SiteLinkBadgeChangeOpSerializationValidator' => function (
+	'WikibaseRepo.SiteLinkBadgeChangeOpSerializationValidator' => static function (
 		MediaWikiServices $services
 	): SiteLinkBadgeChangeOpSerializationValidator {
 		return new SiteLinkBadgeChangeOpSerializationValidator(
@@ -1745,7 +1745,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.SiteLinkGlobalIdentifiersProvider' => function (
+	'WikibaseRepo.SiteLinkGlobalIdentifiersProvider' => static function (
 		MediaWikiServices $services
 	): SiteLinkGlobalIdentifiersProvider {
 		$cacheSecret = hash( 'sha256', $services->getMainConfig()->get( 'SecretKey' ) );
@@ -1759,7 +1759,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.SiteLinkPageNormalizer' => function (
+	'WikibaseRepo.SiteLinkPageNormalizer' => static function (
 		MediaWikiServices $services
 	): SiteLinkPageNormalizer {
 		return new SiteLinkPageNormalizer(
@@ -1767,7 +1767,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.SiteLinkTargetProvider' => function (
+	'WikibaseRepo.SiteLinkTargetProvider' => static function (
 		MediaWikiServices $services
 	): SiteLinkTargetProvider {
 		return new SiteLinkTargetProvider(
@@ -1776,7 +1776,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.SnakFactory' => function ( MediaWikiServices $services ): SnakFactory {
+	'WikibaseRepo.SnakFactory' => static function ( MediaWikiServices $services ): SnakFactory {
 		return new SnakFactory(
 			WikibaseRepo::getPropertyDataTypeLookup( $services ),
 			WikibaseRepo::getDataTypeFactory( $services ),
@@ -1784,7 +1784,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.SnakFormatterFactory' => function ( MediaWikiServices $services ): OutputFormatSnakFormatterFactory {
+	'WikibaseRepo.SnakFormatterFactory' => static function ( MediaWikiServices $services ): OutputFormatSnakFormatterFactory {
 		return new OutputFormatSnakFormatterFactory(
 			WikibaseRepo::getDataTypeDefinitions( $services )->getSnakFormatterFactoryCallbacks(),
 			WikibaseRepo::getValueFormatterFactory( $services ),
@@ -1794,7 +1794,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.SnakNormalizer' => function ( MediaWikiServices $services ): SnakNormalizer {
+	'WikibaseRepo.SnakNormalizer' => static function ( MediaWikiServices $services ): SnakNormalizer {
 		return new SnakNormalizer(
 			WikibaseRepo::getPropertyDataTypeLookup( $services ),
 			WikibaseRepo::getLogger( $services ),
@@ -1803,29 +1803,29 @@ return [
 		);
 	},
 
-	'WikibaseRepo.SnakValueDeserializer' => function ( MediaWikiServices $services ): SnakValueDeserializer {
+	'WikibaseRepo.SnakValueDeserializer' => static function ( MediaWikiServices $services ): SnakValueDeserializer {
 		return new SnakValueDeserializer(
 			WikibaseRepo::getDataValueDeserializer( $services ),
 			WikibaseRepo::getDataTypeDefinitions( $services )->getDeserializerBuilders( DataTypeDefinitions::PREFIXED_MODE )
 		);
 	},
 
-	'WikibaseRepo.StatementGuidParser' => function ( MediaWikiServices $services ): StatementGuidParser {
+	'WikibaseRepo.StatementGuidParser' => static function ( MediaWikiServices $services ): StatementGuidParser {
 		return new StatementGuidParser( WikibaseRepo::getEntityIdParser( $services ) );
 	},
 
-	'WikibaseRepo.StatementGuidValidator' => function ( MediaWikiServices $services ): StatementGuidValidator {
+	'WikibaseRepo.StatementGuidValidator' => static function ( MediaWikiServices $services ): StatementGuidValidator {
 		return new StatementGuidValidator( WikibaseRepo::getEntityIdParser( $services ) );
 	},
 
-	'WikibaseRepo.StatementNormalizer' => function ( MediaWikiServices $services ): StatementNormalizer {
+	'WikibaseRepo.StatementNormalizer' => static function ( MediaWikiServices $services ): StatementNormalizer {
 		return new StatementNormalizer(
 			WikibaseRepo::getSnakNormalizer( $services ),
 			WikibaseRepo::getReferenceNormalizer( $services )
 		);
 	},
 
-	'WikibaseRepo.StorageEntitySerializer' => function ( MediaWikiServices $services ): Serializer {
+	'WikibaseRepo.StorageEntitySerializer' => static function ( MediaWikiServices $services ): Serializer {
 		$serializerFactoryCallbacks = WikibaseRepo::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::STORAGE_SERIALIZER_FACTORY_CALLBACK );
 		$baseSerializerFactory = WikibaseRepo::getBaseDataModelSerializerFactory( $services );
@@ -1838,7 +1838,7 @@ return [
 		return new DispatchingSerializer( $serializers );
 	},
 
-	'WikibaseRepo.Store' => function ( MediaWikiServices $services ): Store {
+	'WikibaseRepo.Store' => static function ( MediaWikiServices $services ): Store {
 		// TODO: the idea of local entity source seems not really suitable here. Store should probably
 		// get source definitions and pass the right source/sources to services it creates accordingly
 		// (as long as what it creates should not migrate to *SourceServices in the first place)
@@ -1859,23 +1859,23 @@ return [
 		);
 	},
 
-	'WikibaseRepo.StringNormalizer' => function ( MediaWikiServices $services ): StringNormalizer {
+	'WikibaseRepo.StringNormalizer' => static function ( MediaWikiServices $services ): StringNormalizer {
 		return new StringNormalizer();
 	},
 
-	'WikibaseRepo.StringValueNormalizer' => function ( MediaWikiServices $services ): StringValueNormalizer {
+	'WikibaseRepo.StringValueNormalizer' => static function ( MediaWikiServices $services ): StringValueNormalizer {
 		return new StringValueNormalizer(
 			WikibaseRepo::getStringNormalizer( $services ),
 			WikibaseRepo::getLogger( $services )
 		);
 	},
 
-	'WikibaseRepo.SubEntityTypesMapper' => function ( MediaWikiServices $services ): SubEntityTypesMapper {
+	'WikibaseRepo.SubEntityTypesMapper' => static function ( MediaWikiServices $services ): SubEntityTypesMapper {
 		return new SubEntityTypesMapper( WikibaseRepo::getEntityTypeDefinitions( $services )
 			->get( EntityTypeDefinitions::SUB_ENTITY_TYPES ) );
 	},
 
-	'WikibaseRepo.SummaryFormatter' => function ( MediaWikiServices $services ): SummaryFormatter {
+	'WikibaseRepo.SummaryFormatter' => static function ( MediaWikiServices $services ): SummaryFormatter {
 		// This needs to use an EntityIdPlainLinkFormatter as we want to mangle
 		// the links created in HtmlPageLinkRendererEndHookHandler afterwards (the links must not
 		// contain a display text: [[Item:Q1]] is fine but [[Item:Q1|Q1]] isn't).
@@ -1886,7 +1886,7 @@ return [
 
 		// Iterate through all defined entity types and override the formatter for entity IDs.
 		foreach ( WikibaseRepo::getEntityTypeDefinitions( $services )->getEntityTypes() as $entityType ) {
-			$formatterFactoryCBs[ "PT:wikibase-$entityType" ] = function (
+			$formatterFactoryCBs[ "PT:wikibase-$entityType" ] = static function (
 				$format,
 				FormatterOptions $options ) use ( $idFormatter ) {
 				if ( $format === SnakFormatter::FORMAT_PLAIN ) {
@@ -1934,18 +1934,18 @@ return [
 		);
 	},
 
-	'WikibaseRepo.TermBuffer' => function ( MediaWikiServices $services ): TermBuffer {
+	'WikibaseRepo.TermBuffer' => static function ( MediaWikiServices $services ): TermBuffer {
 		return WikibaseRepo::getPrefetchingTermLookup( $services );
 	},
 
-	'WikibaseRepo.TermFallbackCache' => function ( MediaWikiServices $services ): TermFallbackCacheFacade {
+	'WikibaseRepo.TermFallbackCache' => static function ( MediaWikiServices $services ): TermFallbackCacheFacade {
 		return new TermFallbackCacheFacade(
 			WikibaseRepo::getTermFallbackCacheFactory( $services )->getTermFallbackCache(),
 			WikibaseRepo::getSettings( $services )->getSetting( 'sharedCacheDuration' )
 		);
 	},
 
-	'WikibaseRepo.TermFallbackCacheFactory' => function ( MediaWikiServices $services ): TermFallbackCacheFactory {
+	'WikibaseRepo.TermFallbackCacheFactory' => static function ( MediaWikiServices $services ): TermFallbackCacheFactory {
 		$settings = WikibaseRepo::getSettings( $services );
 		return new TermFallbackCacheFactory(
 			$settings->getSetting( 'sharedCacheType' ),
@@ -1958,7 +1958,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.TermInLangIdsResolverFactory' => function (
+	'WikibaseRepo.TermInLangIdsResolverFactory' => static function (
 		MediaWikiServices $services
 	): TermInLangIdsResolverFactory {
 		return new TermInLangIdsResolverFactory(
@@ -1968,23 +1968,23 @@ return [
 		);
 	},
 
-	'WikibaseRepo.TermLookup' => function ( MediaWikiServices $services ): TermLookup {
+	'WikibaseRepo.TermLookup' => static function ( MediaWikiServices $services ): TermLookup {
 		return WikibaseRepo::getPrefetchingTermLookup( $services );
 	},
 
-	'WikibaseRepo.TermsCollisionDetectorFactory' => function ( MediaWikiServices $services ): TermsCollisionDetectorFactory {
+	'WikibaseRepo.TermsCollisionDetectorFactory' => static function ( MediaWikiServices $services ): TermsCollisionDetectorFactory {
 		return new TermsCollisionDetectorFactory(
 			WikibaseRepo::getRepoDomainDbFactory( $services )->newRepoDb(),
 			WikibaseRepo::getTypeIdsLookup( $services )
 		);
 	},
 
-	'WikibaseRepo.TermsLanguages' => function ( MediaWikiServices $services ): ContentLanguages {
+	'WikibaseRepo.TermsLanguages' => static function ( MediaWikiServices $services ): ContentLanguages {
 		return WikibaseRepo::getWikibaseContentLanguages( $services )
 			->getContentLanguages( WikibaseContentLanguages::CONTEXT_TERM );
 	},
 
-	'WikibaseRepo.TermStoreWriterFactory' => function ( MediaWikiServices $services ): TermStoreWriterFactory {
+	'WikibaseRepo.TermStoreWriterFactory' => static function ( MediaWikiServices $services ): TermStoreWriterFactory {
 		return new TermStoreWriterFactory(
 			WikibaseRepo::getLocalEntitySource( $services ),
 			WikibaseRepo::getStringNormalizer( $services ),
@@ -1997,7 +1997,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.TermValidatorFactory' => function ( MediaWikiServices $services ): TermValidatorFactory {
+	'WikibaseRepo.TermValidatorFactory' => static function ( MediaWikiServices $services ): TermValidatorFactory {
 		$settings = WikibaseRepo::getSettings( $services );
 
 		// Use the old deprecated setting if it exists
@@ -2021,23 +2021,23 @@ return [
 		);
 	},
 
-	'WikibaseRepo.TokenCheckInteractor' => function ( MediaWikiServices $services ): TokenCheckInteractor {
+	'WikibaseRepo.TokenCheckInteractor' => static function ( MediaWikiServices $services ): TokenCheckInteractor {
 		return new TokenCheckInteractor();
 	},
 
-	'WikibaseRepo.TypeIdsAcquirer' => function ( MediaWikiServices $services ): TypeIdsAcquirer {
+	'WikibaseRepo.TypeIdsAcquirer' => static function ( MediaWikiServices $services ): TypeIdsAcquirer {
 		return WikibaseRepo::getDatabaseTypeIdsStore( $services );
 	},
 
-	'WikibaseRepo.TypeIdsLookup' => function ( MediaWikiServices $services ): TypeIdsLookup {
+	'WikibaseRepo.TypeIdsLookup' => static function ( MediaWikiServices $services ): TypeIdsLookup {
 		return WikibaseRepo::getDatabaseTypeIdsStore( $services );
 	},
 
-	'WikibaseRepo.TypeIdsResolver' => function ( MediaWikiServices $services ): TypeIdsResolver {
+	'WikibaseRepo.TypeIdsResolver' => static function ( MediaWikiServices $services ): TypeIdsResolver {
 		return WikibaseRepo::getDatabaseTypeIdsStore( $services );
 	},
 
-	'WikibaseRepo.UnitConverter' => function ( MediaWikiServices $services ): ?UnitConverter {
+	'WikibaseRepo.UnitConverter' => static function ( MediaWikiServices $services ): ?UnitConverter {
 		$settings = WikibaseRepo::getSettings( $services );
 		if ( !$settings->hasSetting( 'unitStorage' ) ) {
 			return null;
@@ -2052,7 +2052,7 @@ return [
 		return new UnitConverter( $unitStorage, WikibaseRepo::getItemVocabularyBaseUri( $services ) );
 	},
 
-	'WikibaseRepo.UserLanguage' => function ( MediaWikiServices $services ): Language {
+	'WikibaseRepo.UserLanguage' => static function ( MediaWikiServices $services ): Language {
 		global $wgLang;
 
 		// TODO: define a LanguageProvider service instead of using a global directly.
@@ -2067,12 +2067,12 @@ return [
 		return $wgLang;
 	},
 
-	'WikibaseRepo.ValidatorErrorLocalizer' => function ( MediaWikiServices $services ): ValidatorErrorLocalizer {
+	'WikibaseRepo.ValidatorErrorLocalizer' => static function ( MediaWikiServices $services ): ValidatorErrorLocalizer {
 		$formatter = WikibaseRepo::getMessageParameterFormatter( $services );
 		return new ValidatorErrorLocalizer( $formatter );
 	},
 
-	'WikibaseRepo.ValueFormatterFactory' => function ( MediaWikiServices $services ): OutputFormatValueFormatterFactory {
+	'WikibaseRepo.ValueFormatterFactory' => static function ( MediaWikiServices $services ): OutputFormatValueFormatterFactory {
 		$formatterFactoryCBs = WikibaseRepo::getDataTypeDefinitions( $services )
 			->getFormatterFactoryCallbacks( DataTypeDefinitions::PREFIXED_MODE );
 
@@ -2083,7 +2083,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.ValueParserFactory' => function ( MediaWikiServices $services ): ValueParserFactory {
+	'WikibaseRepo.ValueParserFactory' => static function ( MediaWikiServices $services ): ValueParserFactory {
 		$dataTypeDefinitions = WikibaseRepo::getDataTypeDefinitions( $services );
 		$callbacks = $dataTypeDefinitions->getParserFactoryCallbacks();
 
@@ -2099,14 +2099,14 @@ return [
 			$callbacks['globecoordinate'] = $prefixedCallbacks['VT:globecoordinate'];
 		}
 		// 'null' is not a datatype. Kept for backwards compatibility.
-		$callbacks['null'] = function () {
+		$callbacks['null'] = static function () {
 			return new NullParser();
 		};
 
 		return new ValueParserFactory( $callbacks );
 	},
 
-	'WikibaseRepo.ValueSnakRdfBuilderFactory' => function ( MediaWikiServices $services ): ValueSnakRdfBuilderFactory {
+	'WikibaseRepo.ValueSnakRdfBuilderFactory' => static function ( MediaWikiServices $services ): ValueSnakRdfBuilderFactory {
 		return new ValueSnakRdfBuilderFactory(
 			WikibaseRepo::getDataTypeDefinitions( $services )
 				->getRdfBuilderFactoryCallbacks( DataTypeDefinitions::PREFIXED_MODE ),
@@ -2114,7 +2114,7 @@ return [
 		);
 	},
 
-	'WikibaseRepo.ViewFactory' => function ( MediaWikiServices $services ): ViewFactory {
+	'WikibaseRepo.ViewFactory' => static function ( MediaWikiServices $services ): ViewFactory {
 		$settings = WikibaseRepo::getSettings( $services );
 
 		$statementGrouperBuilder = new StatementGrouperBuilder(
@@ -2156,14 +2156,14 @@ return [
 		);
 	},
 
-	'WikibaseRepo.WikibaseContentLanguages' => function ( MediaWikiServices $services ): WikibaseContentLanguages {
+	'WikibaseRepo.WikibaseContentLanguages' => static function ( MediaWikiServices $services ): WikibaseContentLanguages {
 		return WikibaseContentLanguages::getDefaultInstance(
 			$services->getHookContainer(),
 			$services->getLanguageNameUtils()
 		);
 	},
 
-	'WikibaseRepo.WikibaseServices' => function ( MediaWikiServices $services ): WikibaseServices {
+	'WikibaseRepo.WikibaseServices' => static function ( MediaWikiServices $services ): WikibaseServices {
 		$entitySourceDefinitions = WikibaseRepo::getEntitySourceDefinitions( $services );
 		$singleEntitySourceServicesFactory = new SingleEntitySourceServicesFactory(
 			WikibaseRepo::getEntityIdParser( $services ),
diff --git a/repo/WikibaseRepo.datatypes.php b/repo/WikibaseRepo.datatypes.php
index 7d5c3e4..b00ead2 100644
--- a/repo/WikibaseRepo.datatypes.php
+++ b/repo/WikibaseRepo.datatypes.php
@@ -71,7 +71,7 @@ use Wikibase\Repo\Rdf\Values\TimeRdfBuilder;
 use Wikibase\Repo\WikibaseRepo;
 use Wikimedia\Purtle\RdfWriter;
 
-return call_user_func( function() {
+return call_user_func( static function() {
 	// NOTE: 'validator-factory-callback' callbacks act as glue between the high level interface
 	// DataValueValidatorFactory and the low level factory for validators for well known data types,
 	// the ValidatorBuilders class.
@@ -89,25 +89,25 @@ return call_user_func( function() {
 
 	return [
 		'VT:bad' => [
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newUnDeserializableValueFormatter( $format, $options );
 			},
 		],
 		'PT:commonsMedia' => [
 			'expert-module' => 'jquery.valueview.experts.CommonsMediaType',
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				// Don't go for commons during unit tests.
 				return $factory->buildMediaValidators(
 					defined( 'MW_PHPUNIT_TEST' ) ? 'doNotCheckExistence' : 'checkExistence'
 				);
 			},
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newCommonsMediaFormatter( $format, $options );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$flags,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -116,7 +116,7 @@ return call_user_func( function() {
 			) {
 				return new CommonsMediaRdfBuilder( $vocab );
 			},
-			'rdf-data-type' => function() {
+			'rdf-data-type' => static function() {
 				return PropertySpecificComponentsRdfBuilder::OBJECT_PROPERTY;
 			},
 			'normalizer-factory-callback' => static function () {
@@ -129,18 +129,18 @@ return call_user_func( function() {
 		],
 		'PT:geo-shape' => [
 			'expert-module' => 'jquery.valueview.experts.GeoShape',
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				// Don't go for commons during unit tests.
 				return $factory->buildGeoShapeValidators(
 					defined( 'MW_PHPUNIT_TEST' ) ? 'doNotCheckExistence' : 'checkExistence'
 				);
 			},
-			'formatter-factory-callback' => function( $format ) {
+			'formatter-factory-callback' => static function( $format ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newGeoShapeFormatter( $format );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$flags,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -149,24 +149,24 @@ return call_user_func( function() {
 			) {
 				return new GeoShapeRdfBuilder( $vocab );
 			},
-			'rdf-data-type' => function() {
+			'rdf-data-type' => static function() {
 				return PropertySpecificComponentsRdfBuilder::OBJECT_PROPERTY;
 			},
 		],
 		'PT:tabular-data' => [
 			'expert-module' => 'jquery.valueview.experts.TabularData',
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				// Don't go for commons during unit tests.
 				return $factory->buildTabularDataValidators(
 					defined( 'MW_PHPUNIT_TEST' ) ? 'doNotCheckExistence' : 'checkExistence'
 				);
 			},
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newTabularDataFormatter( $format, $options );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$flags,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -175,25 +175,25 @@ return call_user_func( function() {
 			) {
 				return new TabularDataRdfBuilder( $vocab );
 			},
-			'rdf-data-type' => function() {
+			'rdf-data-type' => static function() {
 				return PropertySpecificComponentsRdfBuilder::OBJECT_PROPERTY;
 			},
 		],
 		'VT:globecoordinate' => [
 			'expert-module' => 'jquery.valueview.experts.GlobeCoordinateInput',
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				return $factory->buildCoordinateValidators();
 			},
 			'deserializer-builder' => GlobeCoordinateValue::class,
-			'parser-factory-callback' => function( ParserOptions $options ) {
+			'parser-factory-callback' => static function( ParserOptions $options ) {
 				return new GlobeCoordinateParser( $options );
 			},
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newGlobeCoordinateFormatter( $format, $options );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$flags,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -207,7 +207,7 @@ return call_user_func( function() {
 		],
 		'VT:monolingualtext' => [
 			'expert-module' => 'jquery.valueview.experts.MonolingualText',
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$constraints = WikibaseRepo::getSettings()
 					->getSetting( 'string-limits' )['VT:monolingualtext'];
 				$maxLength = $constraints['length'];
@@ -215,14 +215,14 @@ return call_user_func( function() {
 				return $factory->buildMonolingualTextValidators( $maxLength );
 			},
 			'deserializer-builder' => MonolingualTextValue::class,
-			'parser-factory-callback' => function( ParserOptions $options ) {
+			'parser-factory-callback' => static function( ParserOptions $options ) {
 				return new MonolingualTextParser( $options );
 			},
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newMonolingualFormatter( $format, $options );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$flags,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -234,22 +234,22 @@ return call_user_func( function() {
 		],
 		'VT:quantity' => [
 			'expert-module' => 'jquery.valueview.experts.QuantityInput',
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				return $factory->buildQuantityValidators();
 			},
 			'deserializer-builder' => QuantityValue::class,
-			'parser-factory-callback' => function( ParserOptions $options ) {
+			'parser-factory-callback' => static function( ParserOptions $options ) {
 				$language = MediaWikiServices::getInstance()->getLanguageFactory()
 					->getLanguage( $options->getOption( ValueParser::OPT_LANG ) );
 				$unlocalizer = new MediaWikiNumberUnlocalizer( $language );
 				return new QuantityParser( $options, $unlocalizer );
 			},
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newQuantityFormatter( $format, $options );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$flags,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -262,13 +262,13 @@ return call_user_func( function() {
 					WikibaseRepo::getUnitConverter() : null;
 				return new QuantityRdfBuilder( $complexValueHelper, $unitConverter );
 			},
-			'search-index-data-formatter-callback' => function ( UnboundedQuantityValue $value ) {
+			'search-index-data-formatter-callback' => static function ( UnboundedQuantityValue $value ) {
 				return (string)round( $value->getAmount()->getValueFloat() );
 			},
 		],
 		'VT:string' => [
 			'expert-module' => 'jquery.valueview.experts.StringValue',
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				$constraints = WikibaseRepo::getSettings()
 					->getSetting( 'string-limits' )['VT:string'];
@@ -277,15 +277,15 @@ return call_user_func( function() {
 				return $factory->buildStringValidators( $maxLength );
 			},
 			'deserializer-builder' => StringValue::class,
-			'parser-factory-callback' => function ( ParserOptions $options ) {
+			'parser-factory-callback' => static function ( ParserOptions $options ) {
 				$normalizer = WikibaseRepo::getStringNormalizer();
 				return new StringParser( new WikibaseStringValueNormalizer( $normalizer ) );
 			},
-			'formatter-factory-callback' => function( $format ) {
+			'formatter-factory-callback' => static function( $format ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newStringFormatter( $format );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$flags,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -294,7 +294,7 @@ return call_user_func( function() {
 			) {
 				return new LiteralValueRdfBuilder( null, null );
 			},
-			'search-index-data-formatter-callback' => function ( StringValue $value ) {
+			'search-index-data-formatter-callback' => static function ( StringValue $value ) {
 				return $value->getValue();
 			},
 			'normalizer-factory-callback' => static function () {
@@ -303,20 +303,20 @@ return call_user_func( function() {
 		],
 		'VT:time' => [
 			'expert-module' => 'jquery.valueview.experts.TimeInput',
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				return $factory->buildTimeValidators();
 			},
 			'deserializer-builder' => TimeValue::class,
-			'parser-factory-callback' => function( ParserOptions $options ) {
+			'parser-factory-callback' => static function( ParserOptions $options ) {
 				$factory = new TimeParserFactory( $options );
 				return $factory->getTimeParser();
 			},
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newTimeFormatter( $format, $options );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$flags,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -331,18 +331,18 @@ return call_user_func( function() {
 			},
 		],
 		'PT:url' => [
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				$constraints = WikibaseRepo::getSettings()
 					->getSetting( 'string-limits' )['PT:url'];
 				$maxLength = $constraints['length'];
 				return $factory->buildUrlValidators( $maxLength );
 			},
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newUrlFormatter( $format, $options );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$flags,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -351,17 +351,17 @@ return call_user_func( function() {
 			) {
 				return new ObjectUriRdfBuilder();
 			},
-			'rdf-data-type' => function() {
+			'rdf-data-type' => static function() {
 				return PropertySpecificComponentsRdfBuilder::OBJECT_PROPERTY;
 			},
 		],
 		'PT:external-id' => [
 			// NOTE: for 'formatter-factory-callback', we fall back to plain text formatting
-			'snak-formatter-factory-callback' => function( $format ) {
+			'snak-formatter-factory-callback' => static function( $format ) {
 				$factory = WikibaseRepo::getDefaultSnakFormatterBuilders();
 				return $factory->newExternalIdentifierFormatter( $format );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$mode,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -376,7 +376,7 @@ return call_user_func( function() {
 			},
 		],
 		'VT:wikibase-entityid' => [
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				return $factory->buildEntityValidators();
 			},
@@ -401,15 +401,15 @@ return call_user_func( function() {
 					return EntityIdValue::newFromArray( $value );
 				}
 			},
-			'parser-factory-callback' => function ( ParserOptions $options ) {
+			'parser-factory-callback' => static function ( ParserOptions $options ) {
 				$entityIdParser = WikibaseRepo::getEntityIdParser();
 				return new EntityIdValueParser( $entityIdParser );
 			},
-			'formatter-factory-callback' => function( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				return $factory->newEntityIdFormatter( $format, $options );
 			},
-			'rdf-builder-factory-callback' => function (
+			'rdf-builder-factory-callback' => static function (
 				$flags,
 				RdfVocabulary $vocab,
 				RdfWriter $writer,
@@ -418,17 +418,17 @@ return call_user_func( function() {
 			) {
 				return new EntityIdRdfBuilder( $vocab, $tracker );
 			},
-			'search-index-data-formatter-callback' => function ( EntityIdValue $value ) {
+			'search-index-data-formatter-callback' => static function ( EntityIdValue $value ) {
 				return $value->getEntityId()->getSerialization();
 			},
 		],
 		'PT:wikibase-item' => [
 			'expert-module' => 'wikibase.experts.Item',
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				return $factory->buildItemValidators();
 			},
-			'formatter-factory-callback' => function ( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function ( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				$snakFormat = new SnakFormat();
 
@@ -450,17 +450,17 @@ return call_user_func( function() {
 
 				return $factory->newEntityIdFormatter( $format, $options );
 			},
-			'rdf-data-type' => function() {
+			'rdf-data-type' => static function() {
 				return PropertySpecificComponentsRdfBuilder::OBJECT_PROPERTY;
 			},
 		],
 		'PT:wikibase-property' => [
 			'expert-module' => 'wikibase.experts.Property',
-			'validator-factory-callback' => function() {
+			'validator-factory-callback' => static function() {
 				$factory = WikibaseRepo::getDefaultValidatorBuilders();
 				return $factory->buildPropertyValidators();
 			},
-			'formatter-factory-callback' => function ( $format, FormatterOptions $options ) {
+			'formatter-factory-callback' => static function ( $format, FormatterOptions $options ) {
 				$factory = WikibaseRepo::getDefaultValueFormatterBuilders();
 				$snakFormat = new SnakFormat();
 
@@ -482,7 +482,7 @@ return call_user_func( function() {
 
 				return $factory->newEntityIdFormatter( $format, $options );
 			},
-			'rdf-data-type' => function() {
+			'rdf-data-type' => static function() {
 				return PropertySpecificComponentsRdfBuilder::OBJECT_PROPERTY;
 			},
 		],
diff --git a/repo/WikibaseRepo.entitytypes.php b/repo/WikibaseRepo.entitytypes.php
index 329304c..1595501 100644
--- a/repo/WikibaseRepo.entitytypes.php
+++ b/repo/WikibaseRepo.entitytypes.php
@@ -81,15 +81,15 @@ use Wikimedia\Purtle\RdfWriter;
 
 return [
 	'item' => [
-		Def::ARTICLE_ID_LOOKUP_CALLBACK => function () {
+		Def::ARTICLE_ID_LOOKUP_CALLBACK => static function () {
 			return new TitleLookupBasedEntityArticleIdLookup(
 				WikibaseRepo::getEntityTitleLookup()
 			);
 		},
-		Def::STORAGE_SERIALIZER_FACTORY_CALLBACK => function( SerializerFactory $serializerFactory ) {
+		Def::STORAGE_SERIALIZER_FACTORY_CALLBACK => static function( SerializerFactory $serializerFactory ) {
 			return $serializerFactory->newItemSerializer();
 		},
-		Def::VIEW_FACTORY_CALLBACK => function(
+		Def::VIEW_FACTORY_CALLBACK => static function(
 			Language $language,
 			TermLanguageFallbackChain $fallbackChain,
 			EntityDocument $entity
@@ -107,24 +107,24 @@ return [
 					)
 			);
 		},
-		Def::META_TAGS_CREATOR_CALLBACK => function ( $userLanguage ) {
+		Def::META_TAGS_CREATOR_CALLBACK => static function ( $userLanguage ) {
 			$languageFallbackChainFactory = WikibaseRepo::getLanguageFallbackChainFactory();
 			$languageFallbackChain = $languageFallbackChainFactory->newFromLanguage( $userLanguage );
 			return new FingerprintableEntityMetaTagsCreator( $languageFallbackChain );
 		},
 		Def::CONTENT_MODEL_ID => ItemContent::CONTENT_MODEL_ID,
-		Def::CONTENT_HANDLER_FACTORY_CALLBACK => function() {
+		Def::CONTENT_HANDLER_FACTORY_CALLBACK => static function() {
 			return WikibaseRepo::getItemHandler();
 		},
-		Def::ENTITY_FACTORY_CALLBACK => function() {
+		Def::ENTITY_FACTORY_CALLBACK => static function() {
 			return new Item();
 		},
-		Def::CHANGEOP_DESERIALIZER_CALLBACK => function() {
+		Def::CHANGEOP_DESERIALIZER_CALLBACK => static function() {
 			return new ItemChangeOpDeserializer(
 				WikibaseRepo::getChangeOpDeserializerFactory()
 			);
 		},
-		Def::RDF_BUILDER_FACTORY_CALLBACK => function(
+		Def::RDF_BUILDER_FACTORY_CALLBACK => static function(
 			$flavorFlags,
 			RdfVocabulary $vocabulary,
 			RdfWriter $writer,
@@ -174,7 +174,7 @@ return [
 				$fullStatementRdfBuilderFactory
 			);
 		},
-		Def::RDF_BUILDER_STUB_FACTORY_CALLBACK => function(
+		Def::RDF_BUILDER_STUB_FACTORY_CALLBACK => static function(
 			RdfVocabulary $vocabulary,
 			RdfWriter $writer
 		) {
@@ -192,7 +192,7 @@ return [
 				$languageCodes
 			);
 		},
-		Def::ENTITY_DIFF_VISUALIZER_CALLBACK => function (
+		Def::ENTITY_DIFF_VISUALIZER_CALLBACK => static function (
 			MessageLocalizer $messageLocalizer,
 			ClaimDiffer $claimDiffer,
 			ClaimDifferenceVisualizer $claimDiffView,
@@ -212,7 +212,7 @@ return [
 				$basicEntityDiffVisualizer
 			);
 		},
-		Def::ENTITY_SEARCH_CALLBACK => function ( WebRequest $request ) {
+		Def::ENTITY_SEARCH_CALLBACK => static function ( WebRequest $request ) {
 			$itemSource = WikibaseRepo::getEntitySourceDefinitions()
 				->getDatabaseSourceForEntityType( Item::ENTITY_TYPE );
 			if ( $itemSource === null ) {
@@ -241,7 +241,7 @@ return [
 					]
 			);
 		},
-		Def::LINK_FORMATTER_CALLBACK => function( Language $language ) {
+		Def::LINK_FORMATTER_CALLBACK => static function( Language $language ) {
 			$services = MediaWikiServices::getInstance();
 			return new DefaultEntityLinkFormatter(
 				$language,
@@ -249,7 +249,7 @@ return [
 				$services->getLanguageFactory()
 			);
 		},
-		Def::ENTITY_ID_HTML_LINK_FORMATTER_CALLBACK => function( Language $language ) {
+		Def::ENTITY_ID_HTML_LINK_FORMATTER_CALLBACK => static function( Language $language ) {
 			$languageLabelLookup = WikibaseRepo::getFallbackLabelDescriptionLookupFactory()
 				->newLabelDescriptionLookup( $language );
 			return new LabelsProviderEntityIdHtmlLinkFormatter(
@@ -261,47 +261,47 @@ return [
 				WikibaseRepo::getEntityRedirectChecker()
 			);
 		},
-		Def::ENTITY_REFERENCE_EXTRACTOR_CALLBACK => function() {
+		Def::ENTITY_REFERENCE_EXTRACTOR_CALLBACK => static function() {
 			return new EntityReferenceExtractorCollection( [
 				new SiteLinkBadgeItemReferenceExtractor(),
 				new StatementEntityReferenceExtractor( WikibaseRepo::getItemUrlParser() ),
 			] );
 		},
-		Def::PREFETCHING_TERM_LOOKUP_CALLBACK => function ( DatabaseEntitySource $entitySource ) {
+		Def::PREFETCHING_TERM_LOOKUP_CALLBACK => static function ( DatabaseEntitySource $entitySource ) {
 			$termIdsResolver = WikibaseRepo::getTermInLangIdsResolverFactory()
 				->getResolverForEntitySource( $entitySource );
 
 			return new PrefetchingItemTermLookup( $termIdsResolver );
 		},
-		Def::URL_LOOKUP_CALLBACK => function () {
+		Def::URL_LOOKUP_CALLBACK => static function () {
 			return new TitleLookupBasedEntityUrlLookup( WikibaseRepo::getEntityTitleLookup() );
 		},
-		Def::EXISTENCE_CHECKER_CALLBACK => function () {
+		Def::EXISTENCE_CHECKER_CALLBACK => static function () {
 			$services = MediaWikiServices::getInstance();
 			return new TitleLookupBasedEntityExistenceChecker(
 				WikibaseRepo::getEntityTitleLookup( $services ),
 				$services->getLinkBatchFactory()
 			);
 		},
-		Def::REDIRECT_CHECKER_CALLBACK => function () {
+		Def::REDIRECT_CHECKER_CALLBACK => static function () {
 			return new TitleLookupBasedEntityRedirectChecker( WikibaseRepo::getEntityTitleLookup() );
 		},
-		Def::TITLE_TEXT_LOOKUP_CALLBACK => function () {
+		Def::TITLE_TEXT_LOOKUP_CALLBACK => static function () {
 			return new TitleLookupBasedEntityTitleTextLookup(
 				WikibaseRepo::getEntityTitleLookup()
 			);
 		},
 	],
 	'property' => [
-		Def::ARTICLE_ID_LOOKUP_CALLBACK => function () {
+		Def::ARTICLE_ID_LOOKUP_CALLBACK => static function () {
 			return new TitleLookupBasedEntityArticleIdLookup(
 				WikibaseRepo::getEntityTitleLookup()
 			);
 		},
-		Def::STORAGE_SERIALIZER_FACTORY_CALLBACK => function( SerializerFactory $serializerFactory ) {
+		Def::STORAGE_SERIALIZER_FACTORY_CALLBACK => static function( SerializerFactory $serializerFactory ) {
 			return $serializerFactory->newPropertySerializer();
 		},
-		Def::VIEW_FACTORY_CALLBACK => function(
+		Def::VIEW_FACTORY_CALLBACK => static function(
 			Language $language,
 			TermLanguageFallbackChain $fallbackChain,
 			EntityDocument $entity
@@ -319,24 +319,24 @@ return [
 					)
 			);
 		},
-		Def::META_TAGS_CREATOR_CALLBACK => function ( Language $userLanguage ) {
+		Def::META_TAGS_CREATOR_CALLBACK => static function ( Language $userLanguage ) {
 			$languageFallbackChainFactory = WikibaseRepo::getLanguageFallbackChainFactory();
 			$languageFallbackChain = $languageFallbackChainFactory->newFromLanguage( $userLanguage );
 			return new FingerprintableEntityMetaTagsCreator( $languageFallbackChain );
 		},
 		Def::CONTENT_MODEL_ID => PropertyContent::CONTENT_MODEL_ID,
-		Def::CONTENT_HANDLER_FACTORY_CALLBACK => function() {
+		Def::CONTENT_HANDLER_FACTORY_CALLBACK => static function() {
 			return WikibaseRepo::getPropertyHandler();
 		},
-		Def::ENTITY_FACTORY_CALLBACK => function() {
+		Def::ENTITY_FACTORY_CALLBACK => static function() {
 			return Property::newFromType( '' );
 		},
-		Def::CHANGEOP_DESERIALIZER_CALLBACK => function() {
+		Def::CHANGEOP_DESERIALIZER_CALLBACK => static function() {
 			return new PropertyChangeOpDeserializer(
 				WikibaseRepo::getChangeOpDeserializerFactory()
 			);
 		},
-		Def::RDF_BUILDER_FACTORY_CALLBACK => function(
+		Def::RDF_BUILDER_FACTORY_CALLBACK => static function(
 			$flavorFlags,
 			RdfVocabulary $vocabulary,
 			RdfWriter $writer,
@@ -391,7 +391,7 @@ return [
 				$propertySpecificRdfBuilder
 			);
 		},
-		Def::RDF_BUILDER_STUB_FACTORY_CALLBACK => function(
+		Def::RDF_BUILDER_STUB_FACTORY_CALLBACK => static function(
 			RdfVocabulary $vocabulary,
 			RdfWriter $writer
 		) {
@@ -414,7 +414,7 @@ return [
 				$labelPredicates
 			);
 		},
-		Def::ENTITY_SEARCH_CALLBACK => function ( WebRequest $request ) {
+		Def::ENTITY_SEARCH_CALLBACK => static function ( WebRequest $request ) {
 			$propertySource = WikibaseRepo::getEntitySourceDefinitions()
 				->getDatabaseSourceForEntityType( Property::ENTITY_TYPE );
 			if ( $propertySource === null ) {
@@ -447,7 +447,7 @@ return [
 				WikibaseRepo::getPropertyDataTypeLookup()
 			);
 		},
-		Def::LINK_FORMATTER_CALLBACK => function( Language $language ) {
+		Def::LINK_FORMATTER_CALLBACK => static function( Language $language ) {
 			$services = MediaWikiServices::getInstance();
 			return new DefaultEntityLinkFormatter(
 				$language,
@@ -455,7 +455,7 @@ return [
 				$services->getLanguageFactory()
 			);
 		},
-		Def::ENTITY_ID_HTML_LINK_FORMATTER_CALLBACK => function( Language $language ) {
+		Def::ENTITY_ID_HTML_LINK_FORMATTER_CALLBACK => static function( Language $language ) {
 			$languageLabelLookup = WikibaseRepo::getFallbackLabelDescriptionLookupFactory()
 				->newLabelDescriptionLookup( $language );
 			return new LabelsProviderEntityIdHtmlLinkFormatter(
@@ -467,10 +467,10 @@ return [
 				WikibaseRepo::getEntityRedirectChecker()
 			);
 		},
-		Def::ENTITY_REFERENCE_EXTRACTOR_CALLBACK => function() {
+		Def::ENTITY_REFERENCE_EXTRACTOR_CALLBACK => static function() {
 			return new StatementEntityReferenceExtractor( WikibaseRepo::getItemUrlParser() );
 		},
-		Def::PREFETCHING_TERM_LOOKUP_CALLBACK => function ( DatabaseEntitySource $entitySource ) {
+		Def::PREFETCHING_TERM_LOOKUP_CALLBACK => static function ( DatabaseEntitySource $entitySource ) {
 			$mwServices = MediaWikiServices::getInstance();
 
 			$cacheSecret = hash( 'sha256', $mwServices->getMainConfig()->get( 'SecretKey' ) );
@@ -506,20 +506,20 @@ return [
 				WikibaseRepo::getTermsLanguages( $mwServices )
 			);
 		},
-		Def::URL_LOOKUP_CALLBACK => function () {
+		Def::URL_LOOKUP_CALLBACK => static function () {
 			return new TitleLookupBasedEntityUrlLookup( WikibaseRepo::getEntityTitleLookup() );
 		},
-		Def::EXISTENCE_CHECKER_CALLBACK => function () {
+		Def::EXISTENCE_CHECKER_CALLBACK => static function () {
 			$services = MediaWikiServices::getInstance();
 			return new TitleLookupBasedEntityExistenceChecker(
 				WikibaseRepo::getEntityTitleLookup( $services ),
 				$services->getLinkBatchFactory()
 			);
 		},
-		Def::REDIRECT_CHECKER_CALLBACK => function () {
+		Def::REDIRECT_CHECKER_CALLBACK => static function () {
 			return new TitleLookupBasedEntityRedirectChecker( WikibaseRepo::getEntityTitleLookup() );
 		},
-		Def::TITLE_TEXT_LOOKUP_CALLBACK => function () {
+		Def::TITLE_TEXT_LOOKUP_CALLBACK => static function () {
 			return new TitleLookupBasedEntityTitleTextLookup(
 				WikibaseRepo::getEntityTitleLookup()
 			);
diff --git a/repo/config/Wikibase.default.php b/repo/config/Wikibase.default.php
index 9dc9f81..e152ecb 100644
--- a/repo/config/Wikibase.default.php
+++ b/repo/config/Wikibase.default.php
@@ -99,7 +99,7 @@ return [
 		'html',
 	],
 
-	'entityDataCachePaths' => function() {
+	'entityDataCachePaths' => static function() {
 		return [
 			// JSON from entity page JS, compare wikibase.entityPage.entityLoaded.js
 			wfAppendQuery(
@@ -116,13 +116,13 @@ return [
 
 	'enableEntitySearchUI' => true,
 
-	'dataRightsUrl' => function() {
+	'dataRightsUrl' => static function() {
 		return $GLOBALS['wgRightsUrl'] ?? '';
 	},
 
 	'rdfDataRightsUrl' => 'http://creativecommons.org/publicdomain/zero/1.0/',
 
-	'dataRightsText' => function() {
+	'dataRightsText' => static function() {
 		return $GLOBALS['wgRightsText'] ?? '';
 	},
 
@@ -342,7 +342,7 @@ return [
 
 	'defaultEntityNamespaces' => true,
 
-	'entitySources' => function ( SettingsArray $settings ) {
+	'entitySources' => static function ( SettingsArray $settings ) {
 		if ( $settings->getSetting( 'defaultEntityNamespaces' ) ) {
 			global $wgServer;
 
diff --git a/repo/config/Wikibase.example.php b/repo/config/Wikibase.example.php
index 05cd0e6..e005ba9 100644
--- a/repo/config/Wikibase.example.php
+++ b/repo/config/Wikibase.example.php
@@ -16,7 +16,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 	die( 'Not an entry point.' );
 }
 
-call_user_func( function() {
+call_user_func( static function() {
 	$baseNs = 120;
 
 	// Define these constants immediately so they can be used in LocalSettings.php
diff --git a/repo/config/Wikibase.searchindex.php b/repo/config/Wikibase.searchindex.php
index 8406441..a9d5a75 100644
--- a/repo/config/Wikibase.searchindex.php
+++ b/repo/config/Wikibase.searchindex.php
@@ -24,7 +24,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 }
 
 // @phan-suppress-next-line PhanUndeclaredVariableDim
-$wgHooks['WikibaseTextForSearchIndex'][] = function( EntityContent $entityContent, &$text ) {
+$wgHooks['WikibaseTextForSearchIndex'][] = static function( EntityContent $entityContent, &$text ) {
 	if ( !( $entityContent instanceof ItemContent ) ) {
 		return;
 	}
diff --git a/repo/includes/Api/CreateClaim.php b/repo/includes/Api/CreateClaim.php
index 4b29320..641e3f6 100644
--- a/repo/includes/Api/CreateClaim.php
+++ b/repo/includes/Api/CreateClaim.php
@@ -108,10 +108,10 @@ class CreateClaim extends ApiBase {
 			$changeOpFactoryProvider->getStatementChangeOpFactory(),
 			$errorReporter,
 			$modificationHelper,
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntitySavingHelper( $module );
 			},
 			$settings->getSetting( 'federatedPropertiesEnabled' ),
diff --git a/repo/includes/Api/EditEntity.php b/repo/includes/Api/EditEntity.php
index e90172f..cdabda5 100644
--- a/repo/includes/Api/EditEntity.php
+++ b/repo/includes/Api/EditEntity.php
@@ -180,10 +180,10 @@ class EditEntity extends ModifyEntity {
 					 LookupConstants::LATEST_FROM_MASTER
 				);
 
-				$returnFalse = function () {
+				$returnFalse = static function () {
 					return false;
 				};
-				$latestRevision = $latestRevisionResult->onConcreteRevision( function ( $revId ) {
+				$latestRevision = $latestRevisionResult->onConcreteRevision( static function ( $revId ) {
 					return $revId;
 				} )
 					->onRedirect( $returnFalse )
diff --git a/repo/includes/Api/EntityTerms.php b/repo/includes/Api/EntityTerms.php
index cfa1b59..12ea50b 100644
--- a/repo/includes/Api/EntityTerms.php
+++ b/repo/includes/Api/EntityTerms.php
@@ -169,7 +169,7 @@ class EntityTerms extends ApiQueryBase {
 	 */
 	private function getEntityToPageMap( array $entityIds ): array {
 		$entityIdsStrings = array_map(
-			function( EntityId $id ) {
+			static function( EntityId $id ) {
 				return $id->getSerialization();
 			},
 			$entityIds
diff --git a/repo/includes/Api/GetClaims.php b/repo/includes/Api/GetClaims.php
index 830a5da..5a70d2b 100644
--- a/repo/includes/Api/GetClaims.php
+++ b/repo/includes/Api/GetClaims.php
@@ -103,10 +103,10 @@ class GetClaims extends ApiBase {
 			$statementGuidParser,
 			$entityIdParser,
 			$apiHelperFactory->getErrorReporter( $mainModule ),
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntityLoadingHelper( $module );
 			}
 		);
diff --git a/repo/includes/Api/LinkTitles.php b/repo/includes/Api/LinkTitles.php
index ebf7afc..b3e870f 100644
--- a/repo/includes/Api/LinkTitles.php
+++ b/repo/includes/Api/LinkTitles.php
@@ -117,10 +117,10 @@ class LinkTitles extends ApiBase {
 			$apiHelperFactory->getErrorReporter( $mainModule ),
 			$repoSettings->getSetting( 'siteLinkGroups' ),
 			$store->getEntityRevisionLookup( Store::LOOKUP_CACHING_DISABLED ),
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntitySavingHelper( $module );
 			}
 		);
diff --git a/repo/includes/Api/ListSubscribers.php b/repo/includes/Api/ListSubscribers.php
index 3bd6500..ed2ba3f 100644
--- a/repo/includes/Api/ListSubscribers.php
+++ b/repo/includes/Api/ListSubscribers.php
@@ -93,7 +93,7 @@ class ListSubscribers extends ApiQueryBase {
 		}
 
 		// Normalize entity ids
-		$idStrings = array_map( function( $entity ) {
+		$idStrings = array_map( static function( $entity ) {
 			return $entity->getSerialization();
 		}, $entitiyIds );
 
diff --git a/repo/includes/Api/MergeItems.php b/repo/includes/Api/MergeItems.php
index 37a9dbb..b862954 100644
--- a/repo/includes/Api/MergeItems.php
+++ b/repo/includes/Api/MergeItems.php
@@ -66,7 +66,7 @@ class MergeItems extends ApiBase {
 			$moduleName,
 			$interactor,
 			$apiHelperFactory->getErrorReporter( $mainModule ),
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
 			$settings->getSetting( 'sandboxEntityIds' )
diff --git a/repo/includes/Api/ParseValue.php b/repo/includes/Api/ParseValue.php
index d8c5ac1..9f979c7 100644
--- a/repo/includes/Api/ParseValue.php
+++ b/repo/includes/Api/ParseValue.php
@@ -297,7 +297,7 @@ class ParseValue extends ApiBase {
 	 */
 	private function getValidatorErrorCodes( array $errors ): array {
 		return array_map(
-			function ( Error $error ) {
+			static function ( Error $error ) {
 				return $error->getCode();
 			},
 			$errors
diff --git a/repo/includes/Api/RemoveClaims.php b/repo/includes/Api/RemoveClaims.php
index 210e7fc..37eff86 100644
--- a/repo/includes/Api/RemoveClaims.php
+++ b/repo/includes/Api/RemoveClaims.php
@@ -120,10 +120,10 @@ class RemoveClaims extends ApiBase {
 			$changeOpFactoryProvider->getStatementChangeOpFactory(),
 			$modificationHelper,
 			$statementGuidParser,
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntitySavingHelper( $module );
 			},
 			$settings->getSetting( 'federatedPropertiesEnabled' ),
diff --git a/repo/includes/Api/RemoveQualifiers.php b/repo/includes/Api/RemoveQualifiers.php
index 0b0aac7..5ac510d 100644
--- a/repo/includes/Api/RemoveQualifiers.php
+++ b/repo/includes/Api/RemoveQualifiers.php
@@ -117,10 +117,10 @@ class RemoveQualifiers extends ApiBase {
 			$changeOpFactoryProvider->getStatementChangeOpFactory(),
 			$modificationHelper,
 			$statementGuidParser,
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntitySavingHelper( $module );
 			},
 			$repoSettings->getSetting( 'federatedPropertiesEnabled' ),
diff --git a/repo/includes/Api/RemoveReferences.php b/repo/includes/Api/RemoveReferences.php
index edcb34d..c9c6015 100644
--- a/repo/includes/Api/RemoveReferences.php
+++ b/repo/includes/Api/RemoveReferences.php
@@ -116,10 +116,10 @@ class RemoveReferences extends ApiBase {
 			$changeOpFactoryProvider->getStatementChangeOpFactory(),
 			$modificationHelper,
 			$statementGuidParser,
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntitySavingHelper( $module );
 			},
 			$repoSettings->getSetting( 'federatedPropertiesEnabled' ),
diff --git a/repo/includes/Api/ResultBuilder.php b/repo/includes/Api/ResultBuilder.php
index 176c344..b6882f4 100644
--- a/repo/includes/Api/ResultBuilder.php
+++ b/repo/includes/Api/ResultBuilder.php
@@ -584,7 +584,7 @@ class ResultBuilder {
 			$modifications['*/*/claims'][] = $makeIdKvpCallback;
 		}
 
-		$kvpMergeCallback = function( $array ) {
+		$kvpMergeCallback = static function( $array ) {
 			if ( is_array( $array ) ) {
 				$array[ApiResult::META_KVP_MERGE] = true;
 			}
@@ -783,7 +783,7 @@ class ResultBuilder {
 
 	private function getSiteLinkListArrayWithUrls( array $array ) {
 		$siteLookup = $this->siteLookup;
-		$addUrlCallback = function( $array ) use ( $siteLookup ) {
+		$addUrlCallback = static function( $array ) use ( $siteLookup ) {
 			$site = $siteLookup->getSite( $array['site'] );
 			if ( $site !== null ) {
 				$array['url'] = $site->getPageUrl( $array['title'] );
@@ -843,7 +843,7 @@ class ResultBuilder {
 		if ( is_array( $props ) && !in_array( 'references', $props ) ) {
 			$values = $this->modifier->modifyUsingCallbacks(
 				$values,
-				[ '*/*' => function ( $array ) {
+				[ '*/*' => static function ( $array ) {
 					unset( $array['references'] );
 					return $array;
 				} ]
@@ -989,11 +989,11 @@ class ResultBuilder {
 
 	private function getReferenceArrayWithMetaData( array $array ) {
 		return $this->modifier->modifyUsingCallbacks( $array, [
-			'snaks-order' => function ( $array ) {
+			'snaks-order' => static function ( $array ) {
 				ApiResult::setIndexedTagName( $array, 'property' );
 				return $array;
 			},
-			'snaks' => function ( $array ) {
+			'snaks' => static function ( $array ) {
 				foreach ( $array as &$snakGroup ) {
 					if ( is_array( $snakGroup ) ) {
 						ApiResult::setArrayType( $array, 'array' );
diff --git a/repo/includes/Api/SetAliases.php b/repo/includes/Api/SetAliases.php
index d6388ea..7ba2876 100644
--- a/repo/includes/Api/SetAliases.php
+++ b/repo/includes/Api/SetAliases.php
@@ -174,7 +174,7 @@ class SetAliases extends ModifyEntity {
 		$stringNormalizer = $this->stringNormalizer;
 
 		$aliases = array_map(
-			function( $str ) use ( $stringNormalizer ) {
+			static function( $str ) use ( $stringNormalizer ) {
 				return $stringNormalizer->trimToNFC( $str );
 			},
 			$aliases
@@ -182,7 +182,7 @@ class SetAliases extends ModifyEntity {
 
 		$aliases = array_filter(
 			$aliases,
-			function( $str ) {
+			static function( $str ) {
 				return $str !== '';
 			}
 		);
diff --git a/repo/includes/Api/SetClaim.php b/repo/includes/Api/SetClaim.php
index f1ba90e..48be217 100644
--- a/repo/includes/Api/SetClaim.php
+++ b/repo/includes/Api/SetClaim.php
@@ -145,10 +145,10 @@ class SetClaim extends ApiBase {
 			$changeOpFactoryProvider->getStatementChangeOpFactory(),
 			$modificationHelper,
 			$statementGuidParser,
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntitySavingHelper( $module );
 			},
 			$stats,
diff --git a/repo/includes/Api/SetClaimValue.php b/repo/includes/Api/SetClaimValue.php
index 6a81f2b..fcfa559 100644
--- a/repo/includes/Api/SetClaimValue.php
+++ b/repo/includes/Api/SetClaimValue.php
@@ -112,10 +112,10 @@ class SetClaimValue extends ApiBase {
 			$changeOpFactoryProvider->getStatementChangeOpFactory(),
 			$modificationHelper,
 			$statementGuidParser,
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntitySavingHelper( $module );
 			},
 			$repoSettings->getSetting( 'federatedPropertiesEnabled' ),
diff --git a/repo/includes/Api/SetQualifier.php b/repo/includes/Api/SetQualifier.php
index 8fcf91f..c7e3194 100644
--- a/repo/includes/Api/SetQualifier.php
+++ b/repo/includes/Api/SetQualifier.php
@@ -125,16 +125,16 @@ class SetQualifier extends ApiBase {
 		return new self(
 			$mainModule,
 			$moduleName,
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getErrorReporter( $module );
 			},
 			$changeOpFactoryProvider->getStatementChangeOpFactory(),
 			$modificationHelper,
 			$statementGuidParser,
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntitySavingHelper( $module );
 			},
 			$repoSettings->getSetting( 'federatedPropertiesEnabled' ),
diff --git a/repo/includes/Api/SetReference.php b/repo/includes/Api/SetReference.php
index 0d827a2..6ed73ba 100644
--- a/repo/includes/Api/SetReference.php
+++ b/repo/includes/Api/SetReference.php
@@ -138,10 +138,10 @@ class SetReference extends ApiBase {
 			$modificationHelper,
 			$statementGuidParser,
 			$logger,
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntitySavingHelper( $module );
 			},
 			$repoSettings->getSetting( 'federatedPropertiesEnabled' ),
diff --git a/repo/includes/Api/SetSiteLink.php b/repo/includes/Api/SetSiteLink.php
index 18fd2cd..bd72e31 100644
--- a/repo/includes/Api/SetSiteLink.php
+++ b/repo/includes/Api/SetSiteLink.php
@@ -236,7 +236,7 @@ class SetSiteLink extends ModifyEntity {
 	}
 
 	private function getBadgeItemIds( array $badges ): array {
-		return array_map( function( $badge ) {
+		return array_map( static function( $badge ) {
 			return new ItemId( $badge );
 		}, $badges );
 	}
diff --git a/repo/includes/ChangeModification/DispatchChangeModificationNotificationJob.php b/repo/includes/ChangeModification/DispatchChangeModificationNotificationJob.php
index 2fccc6d..5ddcd86 100644
--- a/repo/includes/ChangeModification/DispatchChangeModificationNotificationJob.php
+++ b/repo/includes/ChangeModification/DispatchChangeModificationNotificationJob.php
@@ -83,7 +83,7 @@ abstract class DispatchChangeModificationNotificationJob extends Job {
 	protected function revisionIdentifiersToJson( array $revisionIdentifiers ): string {
 		return json_encode(
 			array_map(
-				function ( RepoRevisionIdentifier $revisionIdentifier ) {
+				static function ( RepoRevisionIdentifier $revisionIdentifier ) {
 					return $revisionIdentifier->toArray();
 				},
 				$revisionIdentifiers
diff --git a/repo/includes/ChangeModification/DispatchChangesJob.php b/repo/includes/ChangeModification/DispatchChangesJob.php
index f899d94..120454b 100644
--- a/repo/includes/ChangeModification/DispatchChangesJob.php
+++ b/repo/includes/ChangeModification/DispatchChangesJob.php
@@ -195,7 +195,7 @@ class DispatchChangesJob extends Job {
 	private function getWikiIdsWithChangedSitelinks( array $changes ): array {
 		return array_values( array_unique( array_reduce(
 			$changes,
-			function ( $carry, ItemChange $change ) {
+			static function ( $carry, ItemChange $change ) {
 				return array_merge( $carry, array_keys( $change->getSiteLinkDiff()->getOperations() ) );
 			},
 			[]
@@ -207,7 +207,7 @@ class DispatchChangesJob extends Job {
 	 */
 	private function deleteChangeRows( array $changes ): void {
 		$this->changeStore->deleteChangesByChangeIds( array_map(
-			function ( Change $change ): int {
+			static function ( Change $change ): int {
 				return $change->getId();
 			},
 			$changes
@@ -275,7 +275,7 @@ class DispatchChangesJob extends Job {
 	 */
 	private function getClientJobSpecification( array $changes ): IJobSpecification {
 		$params = [
-			'changes' => array_map( function ( EntityChange $change ) {
+			'changes' => array_map( static function ( EntityChange $change ) {
 				$fields = $change->getFields();
 				$fields[ChangeRow::INFO] = $change->getSerializedInfo();
 				return $fields;
diff --git a/repo/includes/ChangeOp/ChangeOpValidationException.php b/repo/includes/ChangeOp/ChangeOpValidationException.php
index 7e5446d..fff43d6 100644
--- a/repo/includes/ChangeOp/ChangeOpValidationException.php
+++ b/repo/includes/ChangeOp/ChangeOpValidationException.php
@@ -47,7 +47,7 @@ class ChangeOpValidationException extends ChangeOpException {
 	 * @return string
 	 */
 	private function composeErrorMessage( array $errors ) {
-		$text = implode( '; ', array_map( function( Error $error ) {
+		$text = implode( '; ', array_map( static function( Error $error ) {
 			return $error->getText();
 		}, $errors ) );
 
diff --git a/repo/includes/ChangeOp/ChangeOps.php b/repo/includes/ChangeOp/ChangeOps.php
index c05e5ba..30d83e9 100644
--- a/repo/includes/ChangeOp/ChangeOps.php
+++ b/repo/includes/ChangeOp/ChangeOps.php
@@ -119,7 +119,7 @@ class ChangeOps implements ChangeOp {
 	public function getActions() {
 		return array_unique( array_reduce(
 			$this->changeOps,
-			function( array $actions, ChangeOp $changeOp ) {
+			static function( array $actions, ChangeOp $changeOp ) {
 				return array_merge( $actions, $changeOp->getActions() );
 			},
 			[]
diff --git a/repo/includes/Dumpers/DumpGenerator.php b/repo/includes/Dumpers/DumpGenerator.php
index ef73b48..0a14823 100644
--- a/repo/includes/Dumpers/DumpGenerator.php
+++ b/repo/includes/Dumpers/DumpGenerator.php
@@ -82,7 +82,7 @@ abstract class DumpGenerator {
 		$this->entityPrefetcher = $entityPrefetcher;
 		$this->progressReporter = new NullMessageReporter();
 		$this->exceptionHandler = new RethrowingExceptionHandler();
-		$this->batchCallback = function () {
+		$this->batchCallback = static function () {
 		};
 	}
 
diff --git a/repo/includes/EditEntity/MediaWikiEditEntity.php b/repo/includes/EditEntity/MediaWikiEditEntity.php
index 4c7d3b9..8a39ddf 100644
--- a/repo/includes/EditEntity/MediaWikiEditEntity.php
+++ b/repo/includes/EditEntity/MediaWikiEditEntity.php
@@ -197,7 +197,7 @@ class MediaWikiEditEntity implements EditEntity {
 				};
 				$this->latestRevId = $result->onNonexistentEntity( $returnZero )
 					->onRedirect( $returnZero )
-					->onConcreteRevision( function ( $revId ) {
+					->onConcreteRevision( static function ( $revId ) {
 						return $revId;
 					} )
 					->map();
diff --git a/repo/includes/FederatedProperties/ApiEntityLookup.php b/repo/includes/FederatedProperties/ApiEntityLookup.php
index 1ace6bd..6f103f5 100644
--- a/repo/includes/FederatedProperties/ApiEntityLookup.php
+++ b/repo/includes/FederatedProperties/ApiEntityLookup.php
@@ -98,7 +98,7 @@ class ApiEntityLookup {
 	 * @return string[]
 	 */
 	public function getFederatedEntityIdsWithoutPrefix( array $federatedEntityIds ): array {
-		return array_map( function ( FederatedPropertyId $id ): string {
+		return array_map( static function ( FederatedPropertyId $id ): string {
 			return $id->getRemoteIdSerialization();
 		}, $federatedEntityIds );
 	}
diff --git a/repo/includes/FederatedProperties/FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecorator.php b/repo/includes/FederatedProperties/FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecorator.php
index 9cb61a5..475e36a 100644
--- a/repo/includes/FederatedProperties/FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecorator.php
+++ b/repo/includes/FederatedProperties/FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecorator.php
@@ -56,13 +56,13 @@ class FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecorator impleme
 			return;
 		}
 
-		$propertyIds = array_map( function( $snak ) {
+		$propertyIds = array_map( static function( $snak ) {
 			return $snak->getPropertyId();
 		}, $entity->getStatements()->getAllSnaks() );
 
 		$federatedPropertyIds = array_filter(
 			$propertyIds,
-			function ( $propId ) {
+			static function ( $propId ) {
 				// TODO: after T288234 is resolved, consider more flexible filtering by type.
 				return $propId instanceof FederatedPropertyId;
 			}
diff --git a/repo/includes/Hooks/Formatters/EntityLinkFormatterFactory.php b/repo/includes/Hooks/Formatters/EntityLinkFormatterFactory.php
index 4ae0bf7..5c2fff2 100644
--- a/repo/includes/Hooks/Formatters/EntityLinkFormatterFactory.php
+++ b/repo/includes/Hooks/Formatters/EntityLinkFormatterFactory.php
@@ -36,7 +36,7 @@ class EntityLinkFormatterFactory {
 
 		$this->callbacks = array_merge(
 			$callbacks,
-			[ 'default' => function ( Language $language ) use ( $entityTitleTextLookup, $languageFactory ): EntityLinkFormatter {
+			[ 'default' => static function ( Language $language ) use ( $entityTitleTextLookup, $languageFactory ): EntityLinkFormatter {
 				return new DefaultEntityLinkFormatter( $language, $entityTitleTextLookup, $languageFactory );
 			} ]
 		);
diff --git a/repo/includes/Hooks/HtmlPageLinkRendererEndHookHandler.php b/repo/includes/Hooks/HtmlPageLinkRendererEndHookHandler.php
index 110fa9d..ab08ca8 100644
--- a/repo/includes/Hooks/HtmlPageLinkRendererEndHookHandler.php
+++ b/repo/includes/Hooks/HtmlPageLinkRendererEndHookHandler.php
@@ -345,7 +345,7 @@ class HtmlPageLinkRendererEndHookHandler implements HtmlPageLinkRendererEndHook
 	private function removeNewClass( string $classes ): string {
 		return implode( ' ', array_filter(
 			preg_split( '/\s+/', $classes ),
-			function ( $class ) {
+			static function ( $class ) {
 				return $class !== 'new';
 			}
 		) );
diff --git a/repo/includes/MediaWikiLocalizedTextProvider.php b/repo/includes/MediaWikiLocalizedTextProvider.php
index fb9e170..3de7587 100644
--- a/repo/includes/MediaWikiLocalizedTextProvider.php
+++ b/repo/includes/MediaWikiLocalizedTextProvider.php
@@ -46,7 +46,7 @@ class MediaWikiLocalizedTextProvider implements LocalizedTextProvider {
 	public function getEscaped( $key, array $params = [] ) {
 		return ( new Message(
 			$key,
-			array_map( function ( $param ) {
+			array_map( static function ( $param ) {
 				return $param instanceof RawMessageParameter ? Message::rawParam( $param->getContents() ) : $param;
 			}, $params ),
 			$this->language
diff --git a/repo/includes/Parsers/MwTimeIsoParser.php b/repo/includes/Parsers/MwTimeIsoParser.php
index 0e7c0c4..5537c7c 100644
--- a/repo/includes/Parsers/MwTimeIsoParser.php
+++ b/repo/includes/Parsers/MwTimeIsoParser.php
@@ -210,7 +210,7 @@ class MwTimeIsoParser extends StringValueParser {
 			// Expand the PLURAL cases
 			$regex = preg_replace_callback(
 				$pluralRegex,
-				function ( $matches ) {
+				static function ( $matches ) {
 					// Change "{{PLURAL:$1" to "(?:" and "}}" to ")"
 					$replace = str_replace( '\{\{PLURAL\:\$1\|', '(?:', $matches[0] );
 					$replace = str_replace( '\}\}', ')', $replace );
diff --git a/repo/includes/PropertyServices.php b/repo/includes/PropertyServices.php
index ec69b6c..defb08c 100644
--- a/repo/includes/PropertyServices.php
+++ b/repo/includes/PropertyServices.php
@@ -58,11 +58,11 @@ class PropertyServices {
 	public static function getServiceDefinitions( MediaWikiServices $services ): array {
 		return [
 			self::PROPERTY_DATA_TYPE_LOOKUP_CALLBACK => [
-				ApiEntitySource::TYPE => function () use ( $services ) {
+				ApiEntitySource::TYPE => static function () use ( $services ) {
 					return WikibaseRepo::getFederatedPropertiesServiceFactory( $services )
 						->newApiPropertyDataTypeLookup();
 				},
-				DatabaseEntitySource::TYPE => function () use ( $services ) {
+				DatabaseEntitySource::TYPE => static function () use ( $services ) {
 					$infoLookup = WikibaseRepo::getPropertyInfoLookup( $services );
 					$entityLookup = WikibaseRepo::getEntityLookup( $services );
 					$retrievingLookup = new EntityRetrievingDataTypeLookup( $entityLookup );
diff --git a/repo/includes/Rdf/RdfBuilder.php b/repo/includes/Rdf/RdfBuilder.php
index 1edc23f..595ad0c 100644
--- a/repo/includes/Rdf/RdfBuilder.php
+++ b/repo/includes/Rdf/RdfBuilder.php
@@ -347,15 +347,15 @@ class RdfBuilder implements EntityRdfBuilder, EntityStubRdfBuilder, EntityMentio
 
 			$lookupResult = $this->entityRevisionLookup->getLatestRevisionId( $id );
 			$lookupStatus = $lookupResult->onNonexistentEntity(
-				function () {
+				static function () {
 					return 'nonexistent';
 				}
 			)->onConcreteRevision(
-				function () {
+				static function () {
 					return 'concrete revision';
 				}
 			)->onRedirect(
-				function ( $revisionId, $redirectsTo ) {
+				static function ( $revisionId, $redirectsTo ) {
 					return $redirectsTo;
 				}
 			)->map();
diff --git a/repo/includes/Rdf/RdfVocabulary.php b/repo/includes/Rdf/RdfVocabulary.php
index 1a18e14..3a33928 100644
--- a/repo/includes/Rdf/RdfVocabulary.php
+++ b/repo/includes/Rdf/RdfVocabulary.php
@@ -222,7 +222,7 @@ class RdfVocabulary {
 			$this->propertyNamespaceNames[$repositoryOrSourceName] = array_combine(
 				$propertyNamespaces,
 				array_map(
-					function ( $ns ) use ( $predicateNamespacePrefix ) {
+					static function ( $ns ) use ( $predicateNamespacePrefix ) {
 						return $predicateNamespacePrefix . $ns;
 					},
 					$propertyNamespaces
@@ -231,7 +231,7 @@ class RdfVocabulary {
 			$this->propertyNamespaceNames[$repositoryOrSourceName] += array_combine(
 				$propertyNamespacesUseNodePrefix,
 				array_map(
-					function ( $ns ) use ( $nodeNamespacePrefix ) {
+					static function ( $ns ) use ( $nodeNamespacePrefix ) {
 						return $nodeNamespacePrefix . $ns;
 					},
 					$propertyNamespacesUseNodePrefix
diff --git a/repo/includes/RepoHooks.php b/repo/includes/RepoHooks.php
index 3d0df5f..4433422 100644
--- a/repo/includes/RepoHooks.php
+++ b/repo/includes/RepoHooks.php
@@ -147,7 +147,7 @@ final class RepoHooks {
 
 		// Register callbacks for instantiating ContentHandlers for EntityContent.
 		foreach ( $contentModelIds as $entityType => $model ) {
-			$wgContentHandlers[$model] = function () use ( $entityType ) {
+			$wgContentHandlers[$model] = static function () use ( $entityType ) {
 				$entityContentFactory = WikibaseRepo::getEntityContentFactory();
 				return $entityContentFactory->getContentHandlerForType( $entityType );
 			};
@@ -933,7 +933,7 @@ final class RepoHooks {
 
 					[
 						'name' => 'resources/contentLanguages.json',
-						'callback' => function () {
+						'callback' => static function () {
 							$contentLanguages = WikibaseRepo::getWikibaseContentLanguages();
 							return [
 								WikibaseContentLanguages::CONTEXT_MONOLINGUAL_TEXT => $contentLanguages
@@ -1035,12 +1035,12 @@ final class RepoHooks {
 	public static function onParserOptionsRegister( &$defaults, &$inCacheKey, &$lazyOptions ) {
 		$defaults['wb'] = null;
 		$inCacheKey['wb'] = true;
-		$lazyOptions['wb'] = function () {
+		$lazyOptions['wb'] = static function () {
 			return EntityHandler::PARSER_VERSION;
 		};
 		$defaults['termboxVersion'] = null;
 		$inCacheKey['termboxVersion'] = true;
-		$lazyOptions['termboxVersion'] = function () {
+		$lazyOptions['termboxVersion'] = static function () {
 			return TermboxFlag::getInstance()->shouldRenderTermbox() ?
 				TermboxView::TERMBOX_VERSION . TermboxView::CACHE_VERSION :
 				PlaceholderEmittingEntityTermsView::TERMBOX_VERSION . PlaceholderEmittingEntityTermsView::CACHE_VERSION;
@@ -1059,12 +1059,12 @@ final class RepoHooks {
 				'meta',
 				[
 					'class' => MetaDataBridgeConfig::class,
-					'factory' => function( ApiQuery $apiQuery, string $moduleName, SettingsArray $repoSettings ) {
+					'factory' => static function( ApiQuery $apiQuery, string $moduleName, SettingsArray $repoSettings ) {
 						return new MetaDataBridgeConfig(
 							$repoSettings,
 							$apiQuery,
 							$moduleName,
-							function ( string $pagename ): ?string {
+							static function ( string $pagename ): ?string {
 								$pageTitle = Title::newFromText( $pagename );
 								return $pageTitle ? $pageTitle->getFullURL() : null;
 							}
diff --git a/repo/includes/Specials/ParameterizedDescriptionTrait.php b/repo/includes/Specials/ParameterizedDescriptionTrait.php
index 30ba14a..623d52b 100644
--- a/repo/includes/Specials/ParameterizedDescriptionTrait.php
+++ b/repo/includes/Specials/ParameterizedDescriptionTrait.php
@@ -52,7 +52,7 @@ trait ParameterizedDescriptionTrait {
 			$this->descriptionParameters = implode(
 				wfMessage( 'special-parameterized-description-separator' )->text(),
 				array_map(
-					function( $item ) {
+					static function( $item ) {
 						return wfMessage( 'wikibase-entity-' . $item )->text();
 					},
 					$this->editableEntities
diff --git a/repo/includes/Specials/SpecialAvailableBadges.php b/repo/includes/Specials/SpecialAvailableBadges.php
index bd0730d..76bc3e6 100644
--- a/repo/includes/Specials/SpecialAvailableBadges.php
+++ b/repo/includes/Specials/SpecialAvailableBadges.php
@@ -78,7 +78,7 @@ class SpecialAvailableBadges extends SpecialWikibasePage {
 		}
 
 		/** @var ItemId[] $itemIds */
-		$itemIds = array_map( function( $idString ) {
+		$itemIds = array_map( static function( $idString ) {
 			// XXX: Maybe we should use PrefixMappingEntityIdParser for federation?
 			return new ItemId( $idString );
 		}, array_keys( $this->badgeItems ) );
diff --git a/repo/includes/Specials/SpecialGoToLinkedPage.php b/repo/includes/Specials/SpecialGoToLinkedPage.php
index c1ea4fa..597c1e5 100644
--- a/repo/includes/Specials/SpecialGoToLinkedPage.php
+++ b/repo/includes/Specials/SpecialGoToLinkedPage.php
@@ -257,7 +257,7 @@ class SpecialGoToLinkedPage extends SpecialWikibasePage {
 			->setSubmitID( 'wb-gotolinkedpage-submit' )
 			->setSubmitTextMsg( 'wikibase-gotolinkedpage-submit' )
 			->setWrapperLegendMsg( 'wikibase-gotolinkedpage-lookup-fieldset' )
-			->setSubmitCallback( function () {// no-op
+			->setSubmitCallback( static function () {// no-op
 			} )->show();
 	}
 
diff --git a/repo/includes/Specials/SpecialItemByTitle.php b/repo/includes/Specials/SpecialItemByTitle.php
index 8b8ffc5..46feafc 100644
--- a/repo/includes/Specials/SpecialItemByTitle.php
+++ b/repo/includes/Specials/SpecialItemByTitle.php
@@ -242,7 +242,7 @@ class SpecialItemByTitle extends SpecialWikibasePage {
 			->setSubmitID( 'wb-itembytitle-submit' )
 			->setSubmitTextMsg( 'wikibase-itembytitle-submit' )
 			->setWrapperLegendMsg( 'wikibase-itembytitle-lookup-fieldset' )
-			->setSubmitCallback( function () {// no-op
+			->setSubmitCallback( static function () {// no-op
 			} )->show();
 
 		if ( $siteId && !$siteExists ) {
diff --git a/repo/includes/Specials/SpecialItemDisambiguation.php b/repo/includes/Specials/SpecialItemDisambiguation.php
index 1ab9375..dcaa27f 100644
--- a/repo/includes/Specials/SpecialItemDisambiguation.php
+++ b/repo/includes/Specials/SpecialItemDisambiguation.php
@@ -221,7 +221,7 @@ class SpecialItemDisambiguation extends SpecialWikibasePage {
 			) )
 			->setWrapperLegendMsg( 'wikibase-itemdisambiguation-lookup-fieldset' )
 			->suppressDefaultSubmit()
-			->setSubmitCallback( function () {// no-op
+			->setSubmitCallback( static function () {// no-op
 			} )->show();
 	}
 
diff --git a/repo/includes/Specials/SpecialListProperties.php b/repo/includes/Specials/SpecialListProperties.php
index 539bff6..725c7a7 100644
--- a/repo/includes/Specials/SpecialListProperties.php
+++ b/repo/includes/Specials/SpecialListProperties.php
@@ -146,7 +146,7 @@ class SpecialListProperties extends SpecialWikibaseQueryPage {
 			->setMethod( 'get' )
 			->setWrapperLegendMsg( 'wikibase-listproperties-legend' )
 			->suppressDefaultSubmit()
-			->setSubmitCallback( function () {
+			->setSubmitCallback( static function () {
 			} )
 			->show();
 	}
diff --git a/repo/includes/Specials/SpecialMergeItems.php b/repo/includes/Specials/SpecialMergeItems.php
index 5121d87..6a90e15 100644
--- a/repo/includes/Specials/SpecialMergeItems.php
+++ b/repo/includes/Specials/SpecialMergeItems.php
@@ -245,7 +245,7 @@ class SpecialMergeItems extends SpecialWikibasePage {
 			->setSubmitName( 'wikibase-mergeitems-submit' )
 			->setSubmitTextMsg( 'wikibase-mergeitems-submit' )
 			->setWrapperLegendMsg( 'special-mergeitems' )
-			->setSubmitCallback( function () {// no-op
+			->setSubmitCallback( static function () {// no-op
 			} )->show();
 	}
 
diff --git a/repo/includes/Specials/SpecialModifyEntity.php b/repo/includes/Specials/SpecialModifyEntity.php
index add8956..4ce6202 100644
--- a/repo/includes/Specials/SpecialModifyEntity.php
+++ b/repo/includes/Specials/SpecialModifyEntity.php
@@ -299,7 +299,7 @@ abstract class SpecialModifyEntity extends SpecialWikibaseRepoPage {
 			->setSubmitName( $submitKey )
 			->setSubmitTextMsg( $submitKey )
 			->setWrapperLegendMsg( $this->getDescription() )
-			->setSubmitCallback( function () {
+			->setSubmitCallback( static function () {
 				// no-op
 			} )->show();
 	}
diff --git a/repo/includes/Specials/SpecialRedirectEntity.php b/repo/includes/Specials/SpecialRedirectEntity.php
index efb2b49..21b6e23 100644
--- a/repo/includes/Specials/SpecialRedirectEntity.php
+++ b/repo/includes/Specials/SpecialRedirectEntity.php
@@ -172,7 +172,7 @@ class SpecialRedirectEntity extends SpecialWikibasePage {
 			->setSubmitName( 'wikibase-redirectentity-submit' )
 			->setSubmitTextMsg( 'wikibase-redirectentity-submit' )
 			->setWrapperLegendMsg( 'special-redirectentity' )
-			->setSubmitCallback( function () {// no-op
+			->setSubmitCallback( static function () {// no-op
 			} )->show();
 	}
 
diff --git a/repo/includes/Specials/SpecialSetSiteLink.php b/repo/includes/Specials/SpecialSetSiteLink.php
index f2949be..9f1a35f 100644
--- a/repo/includes/Specials/SpecialSetSiteLink.php
+++ b/repo/includes/Specials/SpecialSetSiteLink.php
@@ -372,7 +372,7 @@ class SpecialSetSiteLink extends SpecialModifyEntity {
 
 		/** @var ItemId[] $badgeItemIds */
 		$badgeItemIds = array_map(
-			function( $badgeId ) {
+			static function( $badgeId ) {
 				return new ItemId( $badgeId );
 			},
 			array_keys( $this->badgeItems )
@@ -436,7 +436,7 @@ class SpecialSetSiteLink extends SpecialModifyEntity {
 		}
 
 		return array_map(
-			function( ItemId $badge ) {
+			static function( ItemId $badge ) {
 				return $badge->getSerialization();
 			},
 			$item->getSiteLinkList()->getBySiteId( $siteId )->getBadges()
diff --git a/repo/includes/Store/Sql/DatabaseSchemaUpdater.php b/repo/includes/Store/Sql/DatabaseSchemaUpdater.php
index 8506b03..0b04b45 100644
--- a/repo/includes/Store/Sql/DatabaseSchemaUpdater.php
+++ b/repo/includes/Store/Sql/DatabaseSchemaUpdater.php
@@ -190,7 +190,7 @@ class DatabaseSchemaUpdater implements LoadExtensionSchemaUpdatesHook {
 		);
 		$reporter = new ObservableMessageReporter();
 		$reporter->registerReporterCallback(
-			function ( $msg ) use ( $updater ) {
+			static function ( $msg ) use ( $updater ) {
 				$updater->output( "..." . $msg . "\n" );
 			}
 		);
@@ -225,7 +225,7 @@ class DatabaseSchemaUpdater implements LoadExtensionSchemaUpdatesHook {
 		}
 		$reporter = new ObservableMessageReporter();
 		$reporter->registerReporterCallback(
-			function ( $msg ) use ( $updater ) {
+			static function ( $msg ) use ( $updater ) {
 				$updater->output( "..." . $msg . "\n" );
 			}
 		);
@@ -306,7 +306,7 @@ class DatabaseSchemaUpdater implements LoadExtensionSchemaUpdatesHook {
 		);
 
 		$reporter = new ObservableMessageReporter();
-		$reporter->registerReporterCallback( function( $msg ) use ( $dbUpdater ) {
+		$reporter->registerReporterCallback( static function( $msg ) use ( $dbUpdater ) {
 			$dbUpdater->output( "\t$msg\n" );
 		} );
 		$primer->setProgressReporter( $reporter );
diff --git a/repo/includes/SummaryFormatter.php b/repo/includes/SummaryFormatter.php
index 5049581..344d00c 100644
--- a/repo/includes/SummaryFormatter.php
+++ b/repo/includes/SummaryFormatter.php
@@ -133,7 +133,7 @@ class SummaryFormatter {
 		} else {
 			$parts = array_filter(
 				$parts,
-				function ( $arg ) {
+				static function ( $arg ) {
 					return $arg !== '';
 				}
 			);
diff --git a/repo/includes/WikibasePingback.php b/repo/includes/WikibasePingback.php
index 7b0cb0d..4074d71 100644
--- a/repo/includes/WikibasePingback.php
+++ b/repo/includes/WikibasePingback.php
@@ -218,7 +218,7 @@ class WikibasePingback {
 
 		$currentExtensions = array_keys( $this->extensionRegistry->getAllThings() );
 
-		return array_reduce( $currentExtensions, function ( $tracked, $current ) use ( $extensions ) {
+		return array_reduce( $currentExtensions, static function ( $tracked, $current ) use ( $extensions ) {
 			return array_key_exists( $current, $extensions )
 				? array_merge( $tracked, [ $extensions[ $current ] ] )
 				: $tracked;
@@ -368,7 +368,7 @@ class WikibasePingback {
 	 * sent and (if so) proceed to send it.
 	 */
 	public static function schedulePingback() {
-		DeferredUpdates::addCallableUpdate( function () {
+		DeferredUpdates::addCallableUpdate( static function () {
 			WikibasePingback::doSchedule();
 		} );
 	}
diff --git a/repo/maintenance/DumpEntities.php b/repo/maintenance/DumpEntities.php
index 60ab8aa..8efa950 100644
--- a/repo/maintenance/DumpEntities.php
+++ b/repo/maintenance/DumpEntities.php
@@ -252,7 +252,7 @@ abstract class DumpEntities extends Maintenance {
 			return;
 		}
 
-		$settingsBuilder->registerHookHandlers( [ 'MediaWikiServices' => [ function() {
+		$settingsBuilder->registerHookHandlers( [ 'MediaWikiServices' => [ static function() {
 			global $wgDBDefaultGroup;
 			if ( !ExtensionRegistry::getInstance()->isLoaded( 'WikibaseRepository' ) ) {
 				// Something instantiates the MediaWikiServices before Wikibase
diff --git a/repo/maintenance/ResubmitChanges.php b/repo/maintenance/ResubmitChanges.php
index 53b2c25..e10f7fa 100644
--- a/repo/maintenance/ResubmitChanges.php
+++ b/repo/maintenance/ResubmitChanges.php
@@ -59,7 +59,7 @@ class ResubmitChanges extends Maintenance {
 	}
 
 	private function makeChangesIntoJobs( array $changes ): array {
-		return array_map( function ( EntityChange $change ): IJobSpecification {
+		return array_map( static function ( EntityChange $change ): IJobSpecification {
 			return DispatchChangesJob::makeJobSpecification( $change->getEntityId()->getSerialization() );
 		}, $changes );
 	}
diff --git a/repo/maintenance/addUnitConversions.php b/repo/maintenance/addUnitConversions.php
index 05b513a..271fd06 100644
--- a/repo/maintenance/addUnitConversions.php
+++ b/repo/maintenance/addUnitConversions.php
@@ -278,7 +278,7 @@ QUERY;
 	 * @param string[] $map Map old id -> normalized id
 	 */
 	private function processStatements( $values, $map ) {
-		$shortValues = array_map( function ( $str ) {
+		$shortValues = array_map( static function ( $str ) {
 			return 'wdv:' . $str;
 		}, $values );
 		$valuesStr = implode( ' ', $shortValues );
diff --git a/repo/maintenance/searchEntities.php b/repo/maintenance/searchEntities.php
index 981003b..1d35d74 100644
--- a/repo/maintenance/searchEntities.php
+++ b/repo/maintenance/searchEntities.php
@@ -140,7 +140,7 @@ class SearchEntities extends Maintenance {
 	 */
 	private function getSearchHelper( $engine ) {
 		$engines = [
-			'sql' => function() {
+			'sql' => static function() {
 				return WikibaseRepo::getEntitySearchHelper();
 			},
 		];
diff --git a/repo/maintenance/updateUnits.php b/repo/maintenance/updateUnits.php
index 1749223..ceeb27c 100644
--- a/repo/maintenance/updateUnits.php
+++ b/repo/maintenance/updateUnits.php
@@ -131,7 +131,7 @@ class UpdateUnits extends Maintenance {
 
 		// Sort units by Q-id, as number, to have predictable order
 		uksort( $convertUnits,
-			function ( $x, $y ) {
+			static function ( $x, $y ) {
 				return (int)substr( $x, 1 ) - (int)substr( $y, 1 );
 			}
 		);
diff --git a/repo/resources/Resources.php b/repo/resources/Resources.php
index 9b4d57c..c5cb68b 100644
--- a/repo/resources/Resources.php
+++ b/repo/resources/Resources.php
@@ -17,7 +17,7 @@ use Wikibase\Repo\WikibaseRepo;
  *
  * @codeCoverageIgnoreStart
  */
-return call_user_func( function() {
+return call_user_func( static function() {
 	$moduleTemplate = [
 		'localBasePath' => __DIR__,
 		'remoteExtPath' => 'Wikibase/repo/resources',
@@ -93,7 +93,7 @@ return call_user_func( function() {
 
 		'mw.config.values.wbDataTypes' => $moduleTemplate + [
 			'class' => DataTypesModule::class,
-			'datatypefactory' => function() {
+			'datatypefactory' => static function() {
 				return WikibaseRepo::getDataTypeFactory();
 			},
 			'datatypesconfigvarname' => 'wbDataTypes',
@@ -102,7 +102,7 @@ return call_user_func( function() {
 		// Temporary, see: T199197
 		'mw.config.values.wbRefTabsEnabled' => $moduleTemplate + [
 			'class' => MediaWikiConfigModule::class,
-			'getconfigvalueprovider' => function () {
+			'getconfigvalueprovider' => static function () {
 				return new SettingsValueProvider(
 					WikibaseRepo::getSettings(),
 					'wbRefTabsEnabled',
@@ -113,7 +113,7 @@ return call_user_func( function() {
 
 		'mw.config.values.wbEnableMulLanguageCode' => $moduleTemplate + [
 			'class' => MediaWikiConfigModule::class,
-			'getconfigvalueprovider' => function () {
+			'getconfigvalueprovider' => static function () {
 				return new SettingsValueProvider(
 					WikibaseRepo::getSettings(),
 					'wbEnableMulLanguageCode',
@@ -125,7 +125,7 @@ return call_user_func( function() {
 		// Temporary, see: T339104, to be removed in T330217
 		'mw.config.values.wbTmpAlwaysShowMulLanguageCode' => $moduleTemplate + [
 			'class' => MediaWikiConfigModule::class,
-			'getconfigvalueprovider' => function () {
+			'getconfigvalueprovider' => static function () {
 				return new SettingsValueProvider(
 					WikibaseRepo::getSettings(),
 					'wbTmpAlwaysShowMulLanguageCode',
@@ -150,7 +150,7 @@ return call_user_func( function() {
 
 				[
 					"name" => "config.json",
-					"callback" => function () {
+					"callback" => static function () {
 						return [
 							'entityTypes' => WikibaseRepo::getEntityTypesConfigValue(),
 						];
@@ -168,7 +168,7 @@ return call_user_func( function() {
 				'wikibase.getUserLanguages.js',
 				[
 					'name' => 'termLanguages.json',
-					'callback' => function () {
+					'callback' => static function () {
 						return WikibaseRepo::getTermsLanguages()->getLanguages();
 					},
 				],
@@ -213,7 +213,7 @@ return call_user_func( function() {
 				'repo/resources/wikibase.PropertyDataTypeStore.js',
 				[
 					"name" => "repo/resources/config.json",
-					"callback" => function () {
+					"callback" => static function () {
 						$settings = WikibaseRepo::getSettings();
 						$tempUserEnabled = MediaWikiServices::getInstance()->getTempUserConfig()->isEnabled();
 						$dataTypeDefinitions = WikibaseRepo::getDataTypeDefinitions();
@@ -326,7 +326,7 @@ return call_user_func( function() {
 		],
 
 		'wikibase.experts.modules' => $moduleTemplate + [
-				'factory' => function () {
+				'factory' => static function () {
 					return WikibaseRepo::getPropertyValueExpertsModule();
 				},
 		],
@@ -347,7 +347,7 @@ return call_user_func( function() {
 					'wikibase.federatedPropertiesLeavingSiteNotice.js',
 					[
 						'name' => 'federatedPropertiesHostWikibase.json',
-						'callback' => function () {
+						'callback' => static function () {
 							return parse_url(
 								WikibaseRepo::getSettings()->getSetting( 'federatedPropertiesSourceScriptUrl' ),
 								PHP_URL_HOST
diff --git a/repo/rest-api/src/Application/UseCases/PatchItem/PatchedItemValidator.php b/repo/rest-api/src/Application/UseCases/PatchItem/PatchedItemValidator.php
index 3078db4..f5d9d9e 100644
--- a/repo/rest-api/src/Application/UseCases/PatchItem/PatchedItemValidator.php
+++ b/repo/rest-api/src/Application/UseCases/PatchItem/PatchedItemValidator.php
@@ -286,7 +286,7 @@ class PatchedItemValidator {
 	private function getModifiedSitelinksSites( Sitelinks $originalSitelinks, array $patchedSitelinks ): array {
 		return array_filter(
 			array_keys( $patchedSitelinks ),
-			function( string $siteId ) use ( $patchedSitelinks, $originalSitelinks ) {
+			static function( string $siteId ) use ( $patchedSitelinks, $originalSitelinks ) {
 				$originalBadges = fn() => array_map( fn( ItemId $i ) => (string)$i, $originalSitelinks[$siteId]->getBadges() );
 
 				return !isset( $originalSitelinks[$siteId] )
diff --git a/repo/rest-api/src/Infrastructure/DataAccess/WikibaseEntityRevisionLookupPropertyRevisionMetadataRetriever.php b/repo/rest-api/src/Infrastructure/DataAccess/WikibaseEntityRevisionLookupPropertyRevisionMetadataRetriever.php
index 5d93f29..ad45d58 100644
--- a/repo/rest-api/src/Infrastructure/DataAccess/WikibaseEntityRevisionLookupPropertyRevisionMetadataRetriever.php
+++ b/repo/rest-api/src/Infrastructure/DataAccess/WikibaseEntityRevisionLookupPropertyRevisionMetadataRetriever.php
@@ -24,7 +24,7 @@ class WikibaseEntityRevisionLookupPropertyRevisionMetadataRetriever implements P
 			->onConcreteRevision( fn( $id, $timestamp ) => MetadataResult::concreteRevision( $id, $timestamp ) )
 			->onRedirect(
 				/** @return never */
-				function (): void {
+				static function (): void {
 					throw new LogicException( 'Properties cannot be redirected' );
 				}
 			)->onNonexistentEntity( fn() => MetadataResult::propertyNotFound() )
diff --git a/repo/rest-api/src/WbRestApi.ServiceWiring.php b/repo/rest-api/src/WbRestApi.ServiceWiring.php
index 49235fe..d8ea4f4 100644
--- a/repo/rest-api/src/WbRestApi.ServiceWiring.php
+++ b/repo/rest-api/src/WbRestApi.ServiceWiring.php
@@ -199,17 +199,17 @@ use Wikibase\Repo\WikibaseRepo;
 return [
 
 	VRD::ALIAS_LANGUAGE_CODE_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): LanguageCodeRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): LanguageCodeRequestValidatingDeserializer {
 			return new LanguageCodeRequestValidatingDeserializer( WbRestApi::getAliasLanguageCodeValidator( $services ) );
 		},
 
 	VRD::DESCRIPTION_LANGUAGE_CODE_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): LanguageCodeRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): LanguageCodeRequestValidatingDeserializer {
 			return new LanguageCodeRequestValidatingDeserializer( WbRestApi::getDescriptionLanguageCodeValidator( $services ) );
 		},
 
 	VRD::EDIT_METADATA_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): EditMetadataRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): EditMetadataRequestValidatingDeserializer {
 			return new EditMetadataRequestValidatingDeserializer(
 				new EditMetadataValidator(
 					CommentStore::COMMENT_CHARACTER_LIMIT,
@@ -219,7 +219,7 @@ return [
 		},
 
 	VRD::ITEM_ALIASES_IN_LANGUAGE_EDIT_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): ItemAliasesInLanguageEditRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): ItemAliasesInLanguageEditRequestValidatingDeserializer {
 			return new ItemAliasesInLanguageEditRequestValidatingDeserializer(
 				new AliasesInLanguageDeserializer(),
 				new TermValidatorFactoryAliasesInLanguageValidator( WikibaseRepo::getTermValidatorFactory( $services ) )
@@ -227,7 +227,7 @@ return [
 		},
 
 	VRD::ITEM_DESCRIPTION_EDIT_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): ItemDescriptionEditRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): ItemDescriptionEditRequestValidatingDeserializer {
 			return new ItemDescriptionEditRequestValidatingDeserializer(
 				new TermValidatorFactoryItemDescriptionValidator(
 					WikibaseRepo::getTermValidatorFactory( $services ),
@@ -237,19 +237,19 @@ return [
 			);
 		},
 
-	VRD::ITEM_FIELDS_REQUEST_VALIDATING_DESERIALIZER => function (): MappedRequestValidatingDeserializer {
+	VRD::ITEM_FIELDS_REQUEST_VALIDATING_DESERIALIZER => static function (): MappedRequestValidatingDeserializer {
 		$fieldsValidator = new FieldsFilterValidatingDeserializer( ItemParts::VALID_FIELDS );
 		return new MappedRequestValidatingDeserializer(
 			fn( ItemFieldsRequest $r ) => $fieldsValidator->validateAndDeserialize( $r->getItemFields() )
 		);
 	},
 
-	VRD::ITEM_ID_REQUEST_VALIDATING_DESERIALIZER => function(): ItemIdRequestValidatingDeserializer {
+	VRD::ITEM_ID_REQUEST_VALIDATING_DESERIALIZER => static function(): ItemIdRequestValidatingDeserializer {
 		return new ItemIdRequestValidatingDeserializer();
 	},
 
 	VRD::ITEM_LABEL_EDIT_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): ItemLabelEditRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): ItemLabelEditRequestValidatingDeserializer {
 			return new ItemLabelEditRequestValidatingDeserializer(
 				new TermValidatorFactoryItemLabelValidator(
 					WikibaseRepo::getTermValidatorFactory( $services ),
@@ -260,7 +260,7 @@ return [
 		},
 
 	VRD::ITEM_SERIALIZATION_REQUEST_VALIDATING_DESERIALIZER =>
-		function( MediaWikiServices $services ): ItemSerializationRequestValidatingDeserializer {
+		static function( MediaWikiServices $services ): ItemSerializationRequestValidatingDeserializer {
 			return new ItemSerializationRequestValidatingDeserializer(
 				new ItemValidator(
 					new LabelsSyntaxValidator(
@@ -302,21 +302,21 @@ return [
 			);
 		},
 
-	VRD::ITEM_STATEMENT_ID_REQUEST_VALIDATOR => function (): ItemStatementIdRequestValidator {
+	VRD::ITEM_STATEMENT_ID_REQUEST_VALIDATOR => static function (): ItemStatementIdRequestValidator {
 		return new ItemStatementIdRequestValidator();
 	},
 
 	VRD::LABEL_LANGUAGE_CODE_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): LanguageCodeRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): LanguageCodeRequestValidatingDeserializer {
 			return new LanguageCodeRequestValidatingDeserializer( WbRestApi::getLabelLanguageCodeValidator( $services ) );
 		},
 
-	VRD::PATCH_REQUEST_VALIDATING_DESERIALIZER => function (): PatchRequestValidatingDeserializer {
+	VRD::PATCH_REQUEST_VALIDATING_DESERIALIZER => static function (): PatchRequestValidatingDeserializer {
 		return new PatchRequestValidatingDeserializer( new JsonDiffJsonPatchValidator() );
 	},
 
 	VRD::PROPERTY_ALIASES_IN_LANGUAGE_EDIT_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): PropertyAliasesInLanguageEditRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): PropertyAliasesInLanguageEditRequestValidatingDeserializer {
 			return new PropertyAliasesInLanguageEditRequestValidatingDeserializer(
 				new AliasesInLanguageDeserializer(),
 				new TermValidatorFactoryAliasesInLanguageValidator( WikibaseRepo::getTermValidatorFactory( $services ) )
@@ -324,21 +324,21 @@ return [
 		},
 
 	VRD::PROPERTY_DESCRIPTION_EDIT_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): PropertyDescriptionEditRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): PropertyDescriptionEditRequestValidatingDeserializer {
 			return new PropertyDescriptionEditRequestValidatingDeserializer(
 				new TermValidatorFactoryPropertyDescriptionValidator( WikibaseRepo::getTermValidatorFactory( $services ) ),
 				WbRestApi::getPropertyDataRetriever( $services )
 			);
 		},
 
-	VRD::PROPERTY_FIELDS_REQUEST_VALIDATING_DESERIALIZER => function (): MappedRequestValidatingDeserializer {
+	VRD::PROPERTY_FIELDS_REQUEST_VALIDATING_DESERIALIZER => static function (): MappedRequestValidatingDeserializer {
 		$fieldsValidator = new FieldsFilterValidatingDeserializer( PropertyParts::VALID_FIELDS );
 		return new MappedRequestValidatingDeserializer(
 			fn( PropertyFieldsRequest $r ) => $fieldsValidator->validateAndDeserialize( $r->getPropertyFields() )
 		);
 	},
 
-	VRD::PROPERTY_ID_FILTER_REQUEST_VALIDATING_DESERIALIZER => function(): MappedRequestValidatingDeserializer {
+	VRD::PROPERTY_ID_FILTER_REQUEST_VALIDATING_DESERIALIZER => static function(): MappedRequestValidatingDeserializer {
 		$propertyIdFilterValidatingDeserializer = new PropertyIdFilterValidatingDeserializer( new PropertyIdValidator() );
 		return new MappedRequestValidatingDeserializer(
 			fn( PropertyIdFilterRequest $r ) => $r->getPropertyIdFilter() === null
@@ -348,7 +348,7 @@ return [
 		);
 	},
 
-	VRD::PROPERTY_ID_REQUEST_VALIDATING_DESERIALIZER => function(): MappedRequestValidatingDeserializer {
+	VRD::PROPERTY_ID_REQUEST_VALIDATING_DESERIALIZER => static function(): MappedRequestValidatingDeserializer {
 		$propertyIdValidatingDeserializer = new PropertyIdValidatingDeserializer( new PropertyIdValidator() );
 		return new MappedRequestValidatingDeserializer(
 			fn( PropertyIdRequest $r ) => $propertyIdValidatingDeserializer->validateAndDeserialize( $r->getPropertyId() )
@@ -356,7 +356,7 @@ return [
 	},
 
 	VRD::PROPERTY_LABEL_EDIT_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): PropertyLabelEditRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): PropertyLabelEditRequestValidatingDeserializer {
 			return new PropertyLabelEditRequestValidatingDeserializer(
 				new TermValidatorFactoryPropertyLabelValidator(
 					WikibaseRepo::getTermValidatorFactory( $services ),
@@ -366,12 +366,12 @@ return [
 			);
 		},
 
-	VRD::PROPERTY_STATEMENT_ID_REQUEST_VALIDATOR => function (): PropertyStatementIdRequestValidator {
+	VRD::PROPERTY_STATEMENT_ID_REQUEST_VALIDATOR => static function (): PropertyStatementIdRequestValidator {
 		return new PropertyStatementIdRequestValidator();
 	},
 
 	VRD::SITELINK_EDIT_REQUEST_VALIDATING_DESERIALIZER =>
-		function( MediaWikiServices $services ): SitelinkEditRequestValidatingDeserializer {
+		static function( MediaWikiServices $services ): SitelinkEditRequestValidatingDeserializer {
 			return new SitelinkEditRequestValidatingDeserializer(
 				new SiteLinkLookupSitelinkValidator(
 					WbRestApi::getSitelinkDeserializer( $services ),
@@ -381,7 +381,7 @@ return [
 		},
 
 	VRD::SITE_ID_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): SiteIdRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): SiteIdRequestValidatingDeserializer {
 			return new SiteIdRequestValidatingDeserializer(
 				new SiteIdValidator( WikibaseRepo::getSiteLinkGlobalIdentifiersProvider( $services )->getList(
 					WikibaseRepo::getSettings( $services )->getSetting( 'siteLinkGroups' )
@@ -389,7 +389,7 @@ return [
 			);
 		},
 
-	VRD::STATEMENT_ID_REQUEST_VALIDATING_DESERIALIZER => function(): StatementIdRequestValidatingDeserializer {
+	VRD::STATEMENT_ID_REQUEST_VALIDATING_DESERIALIZER => static function(): StatementIdRequestValidatingDeserializer {
 		$entityIdParser = new BasicEntityIdParser();
 
 		return new StatementIdRequestValidatingDeserializer(
@@ -399,13 +399,13 @@ return [
 	},
 
 	VRD::STATEMENT_SERIALIZATION_REQUEST_VALIDATING_DESERIALIZER =>
-		function ( MediaWikiServices $services ): StatementSerializationRequestValidatingDeserializer {
+		static function ( MediaWikiServices $services ): StatementSerializationRequestValidatingDeserializer {
 			return new StatementSerializationRequestValidatingDeserializer(
 				new StatementValidator( WbRestApi::getStatementDeserializer( $services ) )
 			);
 		},
 
-	'WbRestApi.AddItemAliasesInLanguage' => function( MediaWikiServices $services ): AddItemAliasesInLanguage {
+	'WbRestApi.AddItemAliasesInLanguage' => static function( MediaWikiServices $services ): AddItemAliasesInLanguage {
 		return new AddItemAliasesInLanguage(
 			WbRestApi::getItemDataRetriever( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -415,7 +415,7 @@ return [
 		);
 	},
 
-	'WbRestApi.AddItemStatement' => function( MediaWikiServices $services ): AddItemStatement {
+	'WbRestApi.AddItemStatement' => static function( MediaWikiServices $services ): AddItemStatement {
 		return new AddItemStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -426,7 +426,7 @@ return [
 		);
 	},
 
-	'WbRestApi.AddPropertyAliasesInLanguage' => function( MediaWikiServices $services ): AddPropertyAliasesInLanguage {
+	'WbRestApi.AddPropertyAliasesInLanguage' => static function( MediaWikiServices $services ): AddPropertyAliasesInLanguage {
 		return new AddPropertyAliasesInLanguage(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertPropertyExists( $services ),
@@ -436,7 +436,7 @@ return [
 		);
 	},
 
-	'WbRestApi.AddPropertyStatement' => function( MediaWikiServices $services ): AddPropertyStatement {
+	'WbRestApi.AddPropertyStatement' => static function( MediaWikiServices $services ): AddPropertyStatement {
 		$statementReadModelConverter = new StatementReadModelConverter(
 			WikibaseRepo::getStatementGuidParser( $services ),
 			WikibaseRepo::getPropertyDataTypeLookup( $services )
@@ -459,23 +459,23 @@ return [
 		);
 	},
 
-	'WbRestApi.AliasLanguageCodeValidator' => function( MediaWikiServices $services ): AliasLanguageCodeValidator {
+	'WbRestApi.AliasLanguageCodeValidator' => static function( MediaWikiServices $services ): AliasLanguageCodeValidator {
 		return new ValueValidatorLanguageCodeValidator( WikibaseRepo::getTermValidatorFactory( $services )->getAliasLanguageValidator() );
 	},
 
-	'WbRestApi.AssertItemExists' => function( MediaWikiServices $services ): AssertItemExists {
+	'WbRestApi.AssertItemExists' => static function( MediaWikiServices $services ): AssertItemExists {
 		return new AssertItemExists( WbRestApi::getGetLatestItemRevisionMetadata( $services ) );
 	},
 
-	'WbRestApi.AssertPropertyExists' => function( MediaWikiServices $services ): AssertPropertyExists {
+	'WbRestApi.AssertPropertyExists' => static function( MediaWikiServices $services ): AssertPropertyExists {
 		return new AssertPropertyExists( WbRestApi::getGetLatestPropertyRevisionMetadata( $services ) );
 	},
 
-	'WbRestApi.AssertStatementSubjectExists' => function( MediaWikiServices $services ): AssertStatementSubjectExists {
+	'WbRestApi.AssertStatementSubjectExists' => static function( MediaWikiServices $services ): AssertStatementSubjectExists {
 		return new AssertStatementSubjectExists( WbRestApi::getGetLatestStatementSubjectRevisionMetadata( $services ) );
 	},
 
-	'WbRestApi.AssertUserIsAuthorized' => function( MediaWikiServices $services ): AssertUserIsAuthorized {
+	'WbRestApi.AssertUserIsAuthorized' => static function( MediaWikiServices $services ): AssertUserIsAuthorized {
 		return new AssertUserIsAuthorized(
 			new WikibaseEntityPermissionChecker(
 				WikibaseRepo::getEntityPermissionChecker( $services ),
@@ -484,7 +484,7 @@ return [
 		);
 	},
 
-	'WbRestApi.CreateItem' => function( MediaWikiServices $services ): CreateItem {
+	'WbRestApi.CreateItem' => static function( MediaWikiServices $services ): CreateItem {
 		return new CreateItem(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getItemUpdater( $services ),
@@ -492,7 +492,7 @@ return [
 		);
 	},
 
-	'WbRestApi.CreateProperty' => function( MediaWikiServices $services ): CreateProperty {
+	'WbRestApi.CreateProperty' => static function( MediaWikiServices $services ): CreateProperty {
 		return new CreateProperty(
 			new CreatePropertyValidator(
 				WbRestApi::getEditMetadataRequestValidatingDeserializer( $services ),
@@ -526,13 +526,13 @@ return [
 		);
 	},
 
-	'WbRestApi.DescriptionLanguageCodeValidator' => function( MediaWikiServices $services ): DescriptionLanguageCodeValidator {
+	'WbRestApi.DescriptionLanguageCodeValidator' => static function( MediaWikiServices $services ): DescriptionLanguageCodeValidator {
 		return new ValueValidatorLanguageCodeValidator(
 			WikibaseRepo::getTermValidatorFactory( $services )->getDescriptionLanguageValidator()
 		);
 	},
 
-	'WbRestApi.EntityUpdater' => function( MediaWikiServices $services ): EntityUpdater {
+	'WbRestApi.EntityUpdater' => static function( MediaWikiServices $services ): EntityUpdater {
 		return new EntityUpdater(
 			RequestContext::getMain(),
 			WikibaseRepo::getEditEntityFactory( $services ),
@@ -549,11 +549,11 @@ return [
 		);
 	},
 
-	'WbRestApi.ErrorReporter' => function( MediaWikiServices $services ): ErrorReporter {
+	'WbRestApi.ErrorReporter' => static function( MediaWikiServices $services ): ErrorReporter {
 		return new MWErrorReporter();
 	},
 
-	'WbRestApi.GetItem' => function( MediaWikiServices $services ): GetItem {
+	'WbRestApi.GetItem' => static function( MediaWikiServices $services ): GetItem {
 		return new GetItem(
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
 			WbRestApi::getItemDataRetriever( $services ),
@@ -561,7 +561,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetItemAliases' => function( MediaWikiServices $services ): GetItemAliases {
+	'WbRestApi.GetItemAliases' => static function( MediaWikiServices $services ): GetItemAliases {
 		return new GetItemAliases(
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
 			new PrefetchingTermLookupAliasesRetriever(
@@ -572,7 +572,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetItemAliasesInLanguage' => function( MediaWikiServices $services ): GetItemAliasesInLanguage {
+	'WbRestApi.GetItemAliasesInLanguage' => static function( MediaWikiServices $services ): GetItemAliasesInLanguage {
 		return new GetItemAliasesInLanguage(
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
 			new PrefetchingTermLookupAliasesRetriever(
@@ -583,7 +583,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetItemDescription' => function( MediaWikiServices $services ): GetItemDescription {
+	'WbRestApi.GetItemDescription' => static function( MediaWikiServices $services ): GetItemDescription {
 		return new GetItemDescription(
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
 			WbRestApi::getTermLookupEntityTermsRetriever( $services ),
@@ -591,7 +591,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetItemDescriptions' => function( MediaWikiServices $services ): GetItemDescriptions {
+	'WbRestApi.GetItemDescriptions' => static function( MediaWikiServices $services ): GetItemDescriptions {
 		return new GetItemDescriptions(
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
 			WbRestApi::getTermLookupEntityTermsRetriever( $services ),
@@ -599,7 +599,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetItemDescriptionWithFallback' => function( MediaWikiServices $services ): GetItemDescriptionWithFallback {
+	'WbRestApi.GetItemDescriptionWithFallback' => static function( MediaWikiServices $services ): GetItemDescriptionWithFallback {
 		return new GetItemDescriptionWithFallback(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
@@ -610,7 +610,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetItemLabel' => function( MediaWikiServices $services ): GetItemLabel {
+	'WbRestApi.GetItemLabel' => static function( MediaWikiServices $services ): GetItemLabel {
 		return new GetItemLabel(
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
 			WbRestApi::getTermLookupEntityTermsRetriever( $services ),
@@ -618,7 +618,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetItemLabels' => function( MediaWikiServices $services ): GetItemLabels {
+	'WbRestApi.GetItemLabels' => static function( MediaWikiServices $services ): GetItemLabels {
 		return new GetItemLabels(
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
 			WbRestApi::getTermLookupEntityTermsRetriever( $services ),
@@ -626,7 +626,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetItemLabelWithFallback' => function( MediaWikiServices $services ): GetItemLabelWithFallback {
+	'WbRestApi.GetItemLabelWithFallback' => static function( MediaWikiServices $services ): GetItemLabelWithFallback {
 		return new GetItemLabelWithFallback(
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
 			new FallbackLookupFactoryTermsRetriever(
@@ -637,7 +637,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetItemStatement' => function( MediaWikiServices $services ): GetItemStatement {
+	'WbRestApi.GetItemStatement' => static function( MediaWikiServices $services ): GetItemStatement {
 		return new GetItemStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -645,7 +645,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetItemStatements' => function( MediaWikiServices $services ): GetItemStatements {
+	'WbRestApi.GetItemStatements' => static function( MediaWikiServices $services ): GetItemStatements {
 		return new GetItemStatements(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getItemDataRetriever( $services ),
@@ -653,19 +653,19 @@ return [
 		);
 	},
 
-	'WbRestApi.GetLatestItemRevisionMetadata' => function( MediaWikiServices $services ): GetLatestItemRevisionMetadata {
+	'WbRestApi.GetLatestItemRevisionMetadata' => static function( MediaWikiServices $services ): GetLatestItemRevisionMetadata {
 		return new GetLatestItemRevisionMetadata( new WikibaseEntityRevisionLookupItemRevisionMetadataRetriever(
 			WikibaseRepo::getEntityRevisionLookup( $services )
 		) );
 	},
 
-	'WbRestApi.GetLatestPropertyRevisionMetadata' => function( MediaWikiServices $services ): GetLatestPropertyRevisionMetadata {
+	'WbRestApi.GetLatestPropertyRevisionMetadata' => static function( MediaWikiServices $services ): GetLatestPropertyRevisionMetadata {
 		return new GetLatestPropertyRevisionMetadata( new WikibaseEntityRevisionLookupPropertyRevisionMetadataRetriever(
 			WikibaseRepo::getEntityRevisionLookup( $services )
 		) );
 	},
 
-	'WbRestApi.GetLatestStatementSubjectRevisionMetadata' => function(
+	'WbRestApi.GetLatestStatementSubjectRevisionMetadata' => static function(
 		MediaWikiServices $services
 	): GetLatestStatementSubjectRevisionMetadata {
 		return new GetLatestStatementSubjectRevisionMetadata( new WikibaseEntityRevisionLookupStatementSubjectRevisionMetadataRetriever(
@@ -673,7 +673,7 @@ return [
 		) );
 	},
 
-	'WbRestApi.GetProperty' => function( MediaWikiServices $services ): GetProperty {
+	'WbRestApi.GetProperty' => static function( MediaWikiServices $services ): GetProperty {
 		return new GetProperty(
 			WbRestApi::getGetLatestPropertyRevisionMetadata( $services ),
 			WbRestApi::getPropertyDataRetriever( $services ),
@@ -681,7 +681,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetPropertyAliases' => function( MediaWikiServices $services ): GetPropertyAliases {
+	'WbRestApi.GetPropertyAliases' => static function( MediaWikiServices $services ): GetPropertyAliases {
 		return new GetPropertyAliases(
 			WbRestApi::getGetLatestPropertyRevisionMetadata( $services ),
 			new PrefetchingTermLookupAliasesRetriever(
@@ -692,7 +692,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetPropertyAliasesInLanguage' => function( MediaWikiServices $services ): GetPropertyAliasesInLanguage {
+	'WbRestApi.GetPropertyAliasesInLanguage' => static function( MediaWikiServices $services ): GetPropertyAliasesInLanguage {
 		return new GetPropertyAliasesInLanguage(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getGetLatestPropertyRevisionMetadata( $services ),
@@ -703,7 +703,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetPropertyDescription' => function( MediaWikiServices $services ): GetPropertyDescription {
+	'WbRestApi.GetPropertyDescription' => static function( MediaWikiServices $services ): GetPropertyDescription {
 		return new GetPropertyDescription(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getGetLatestPropertyRevisionMetadata( $services ),
@@ -711,7 +711,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetPropertyDescriptions' => function( MediaWikiServices $services ): GetPropertyDescriptions {
+	'WbRestApi.GetPropertyDescriptions' => static function( MediaWikiServices $services ): GetPropertyDescriptions {
 		return new GetPropertyDescriptions(
 			WbRestApi::getGetLatestPropertyRevisionMetadata( $services ),
 			WbRestApi::getTermLookupEntityTermsRetriever( $services ),
@@ -719,7 +719,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetPropertyDescriptionWithFallback' => function( MediaWikiServices $services ): GetPropertyDescriptionWithFallback {
+	'WbRestApi.GetPropertyDescriptionWithFallback' => static function( MediaWikiServices $services ): GetPropertyDescriptionWithFallback {
 		return new GetPropertyDescriptionWithFallback(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getGetLatestPropertyRevisionMetadata( $services ),
@@ -730,7 +730,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetPropertyLabel' => function( MediaWikiServices $services ): GetPropertyLabel {
+	'WbRestApi.GetPropertyLabel' => static function( MediaWikiServices $services ): GetPropertyLabel {
 		return new GetPropertyLabel(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getGetLatestPropertyRevisionMetadata( $services ),
@@ -738,7 +738,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetPropertyLabels' => function( MediaWikiServices $services ): GetPropertyLabels {
+	'WbRestApi.GetPropertyLabels' => static function( MediaWikiServices $services ): GetPropertyLabels {
 		return new GetPropertyLabels(
 			WbRestApi::getGetLatestPropertyRevisionMetadata( $services ),
 			WbRestApi::getTermLookupEntityTermsRetriever( $services ),
@@ -746,7 +746,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetPropertyLabelWithFallback' => function( MediaWikiServices $services ): GetPropertyLabelWithFallback {
+	'WbRestApi.GetPropertyLabelWithFallback' => static function( MediaWikiServices $services ): GetPropertyLabelWithFallback {
 		return new GetPropertyLabelWithFallback(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getGetLatestPropertyRevisionMetadata( $services ),
@@ -757,7 +757,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetPropertyStatement' => function( MediaWikiServices $services ): GetPropertyStatement {
+	'WbRestApi.GetPropertyStatement' => static function( MediaWikiServices $services ): GetPropertyStatement {
 		return new GetPropertyStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertPropertyExists( $services ),
@@ -765,7 +765,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetPropertyStatements' => function( MediaWikiServices $services ): GetPropertyStatements {
+	'WbRestApi.GetPropertyStatements' => static function( MediaWikiServices $services ): GetPropertyStatements {
 		return new GetPropertyStatements(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getPropertyDataRetriever( $services ),
@@ -773,7 +773,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetSitelink' => function( MediaWikiServices $services ): GetSitelink {
+	'WbRestApi.GetSitelink' => static function( MediaWikiServices $services ): GetSitelink {
 		return new GetSitelink(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
@@ -781,7 +781,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetSitelinks' => function( MediaWikiServices $services ): GetSitelinks {
+	'WbRestApi.GetSitelinks' => static function( MediaWikiServices $services ): GetSitelinks {
 		return new GetSitelinks(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getGetLatestItemRevisionMetadata( $services ),
@@ -789,7 +789,7 @@ return [
 		);
 	},
 
-	'WbRestApi.GetStatement' => function( MediaWikiServices $services ): GetStatement {
+	'WbRestApi.GetStatement' => static function( MediaWikiServices $services ): GetStatement {
 		return new GetStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getStatementRetriever( $services ),
@@ -797,7 +797,7 @@ return [
 		);
 	},
 
-	'WbRestApi.ItemDataRetriever' => function( MediaWikiServices $services ): EntityRevisionLookupItemDataRetriever {
+	'WbRestApi.ItemDataRetriever' => static function( MediaWikiServices $services ): EntityRevisionLookupItemDataRetriever {
 		return new EntityRevisionLookupItemDataRetriever(
 			WikibaseRepo::getEntityRevisionLookup( $services ),
 			new StatementReadModelConverter(
@@ -808,7 +808,7 @@ return [
 		);
 	},
 
-	'WbRestApi.ItemUpdater' => function( MediaWikiServices $services ): EntityUpdaterItemUpdater {
+	'WbRestApi.ItemUpdater' => static function( MediaWikiServices $services ): EntityUpdaterItemUpdater {
 		return new EntityUpdaterItemUpdater(
 			WbRestApi::getEntityUpdater( $services ),
 			new SitelinksReadModelConverter( $services->getSiteLookup() ),
@@ -819,11 +819,11 @@ return [
 		);
 	},
 
-	'WbRestApi.LabelLanguageCodeValidator' => function( MediaWikiServices $services ): LabelLanguageCodeValidator {
+	'WbRestApi.LabelLanguageCodeValidator' => static function( MediaWikiServices $services ): LabelLanguageCodeValidator {
 		return new ValueValidatorLanguageCodeValidator( WikibaseRepo::getTermValidatorFactory( $services )->getLabelLanguageValidator() );
 	},
 
-	'WbRestApi.PatchItem' => function( MediaWikiServices $services ): PatchItem {
+	'WbRestApi.PatchItem' => static function( MediaWikiServices $services ): PatchItem {
 		return new PatchItem(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists(),
@@ -879,7 +879,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchItemAliases' => function( MediaWikiServices $services ): PatchItemAliases {
+	'WbRestApi.PatchItemAliases' => static function( MediaWikiServices $services ): PatchItemAliases {
 		return new PatchItemAliases(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -900,7 +900,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchItemDescriptions' => function( MediaWikiServices $services ): PatchItemDescriptions {
+	'WbRestApi.PatchItemDescriptions' => static function( MediaWikiServices $services ): PatchItemDescriptions {
 		return new PatchItemDescriptions(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -923,7 +923,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchItemLabels' => function( MediaWikiServices $services ): PatchItemLabels {
+	'WbRestApi.PatchItemLabels' => static function( MediaWikiServices $services ): PatchItemLabels {
 		return new PatchItemLabels(
 			WbRestApi::getAssertItemExists( $services ),
 			WbRestApi::getTermLookupEntityTermsRetriever( $services ),
@@ -948,7 +948,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchItemStatement' => function( MediaWikiServices $services ): PatchItemStatement {
+	'WbRestApi.PatchItemStatement' => static function( MediaWikiServices $services ): PatchItemStatement {
 		return new PatchItemStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -956,7 +956,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchProperty' => function( MediaWikiServices $services ): PatchProperty {
+	'WbRestApi.PatchProperty' => static function( MediaWikiServices $services ): PatchProperty {
 		return new PatchProperty(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertPropertyExists( $services ),
@@ -999,7 +999,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchPropertyAliases' => function( MediaWikiServices $services ): PatchPropertyAliases {
+	'WbRestApi.PatchPropertyAliases' => static function( MediaWikiServices $services ): PatchPropertyAliases {
 		$termLanguages = WikibaseRepo::getTermsLanguages( $services );
 
 		return new PatchPropertyAliases(
@@ -1022,7 +1022,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchPropertyDescriptions' => function( MediaWikiServices $services ): PatchPropertyDescriptions {
+	'WbRestApi.PatchPropertyDescriptions' => static function( MediaWikiServices $services ): PatchPropertyDescriptions {
 		return new PatchPropertyDescriptions(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertPropertyExists( $services ),
@@ -1047,7 +1047,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchPropertyLabels' => function( MediaWikiServices $services ): PatchPropertyLabels {
+	'WbRestApi.PatchPropertyLabels' => static function( MediaWikiServices $services ): PatchPropertyLabels {
 		return new PatchPropertyLabels(
 			new TermLookupEntityTermsRetriever(
 				WikibaseRepo::getTermLookup( $services ),
@@ -1073,7 +1073,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchPropertyStatement' => function( MediaWikiServices $services ): PatchPropertyStatement {
+	'WbRestApi.PatchPropertyStatement' => static function( MediaWikiServices $services ): PatchPropertyStatement {
 		return new PatchPropertyStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertPropertyExists( $services ),
@@ -1081,7 +1081,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchSitelinks' => function( MediaWikiServices $services ): PatchSitelinks {
+	'WbRestApi.PatchSitelinks' => static function( MediaWikiServices $services ): PatchSitelinks {
 		return new PatchSitelinks(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -1103,7 +1103,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PatchStatement' => function( MediaWikiServices $services ): PatchStatement {
+	'WbRestApi.PatchStatement' => static function( MediaWikiServices $services ): PatchStatement {
 		return new PatchStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			new PatchedStatementValidator( new StatementValidator( WbRestApi::getStatementDeserializer( $services ) ) ),
@@ -1116,7 +1116,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PreconditionMiddlewareFactory' => function( MediaWikiServices $services ): PreconditionMiddlewareFactory {
+	'WbRestApi.PreconditionMiddlewareFactory' => static function( MediaWikiServices $services ): PreconditionMiddlewareFactory {
 		return new PreconditionMiddlewareFactory(
 			WikibaseRepo::getEntityRevisionLookup( $services ),
 			WikibaseRepo::getEntityIdParser( $services ),
@@ -1124,7 +1124,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PropertyDataRetriever' => function( MediaWikiServices $services ): EntityRevisionLookupPropertyDataRetriever {
+	'WbRestApi.PropertyDataRetriever' => static function( MediaWikiServices $services ): EntityRevisionLookupPropertyDataRetriever {
 		return new EntityRevisionLookupPropertyDataRetriever(
 			WikibaseRepo::getEntityRevisionLookup( $services ),
 			new StatementReadModelConverter(
@@ -1134,7 +1134,7 @@ return [
 		);
 	},
 
-	'WbRestApi.PropertyUpdater' => function( MediaWikiServices $services ): EntityUpdaterPropertyUpdater {
+	'WbRestApi.PropertyUpdater' => static function( MediaWikiServices $services ): EntityUpdaterPropertyUpdater {
 		return new EntityUpdaterPropertyUpdater(
 			WbRestApi::getEntityUpdater( $services ),
 			new StatementReadModelConverter(
@@ -1144,7 +1144,7 @@ return [
 		);
 	},
 
-	'WbRestApi.RemoveItemDescription' => function( MediaWikiServices $services ): RemoveItemDescription {
+	'WbRestApi.RemoveItemDescription' => static function( MediaWikiServices $services ): RemoveItemDescription {
 		return new RemoveItemDescription(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -1154,7 +1154,7 @@ return [
 		);
 	},
 
-	'WbRestApi.RemoveItemLabel' => function( MediaWikiServices $services ): RemoveItemLabel {
+	'WbRestApi.RemoveItemLabel' => static function( MediaWikiServices $services ): RemoveItemLabel {
 		return new RemoveItemLabel(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -1164,7 +1164,7 @@ return [
 		);
 	},
 
-	'WbRestApi.RemoveItemStatement' => function( MediaWikiServices $services ): RemoveItemStatement {
+	'WbRestApi.RemoveItemStatement' => static function( MediaWikiServices $services ): RemoveItemStatement {
 		return new RemoveItemStatement(
 			WbRestApi::getAssertItemExists( $services ),
 			WbRestApi::getRemoveStatement( $services ),
@@ -1172,7 +1172,7 @@ return [
 		);
 	},
 
-	'WbRestApi.RemovePropertyDescription' => function( MediaWikiServices $services ): RemovePropertyDescription {
+	'WbRestApi.RemovePropertyDescription' => static function( MediaWikiServices $services ): RemovePropertyDescription {
 		return new RemovePropertyDescription(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertPropertyExists( $services ),
@@ -1182,7 +1182,7 @@ return [
 		);
 	},
 
-	'WbRestApi.RemovePropertyLabel' => function( MediaWikiServices $services ): RemovePropertyLabel {
+	'WbRestApi.RemovePropertyLabel' => static function( MediaWikiServices $services ): RemovePropertyLabel {
 		return new RemovePropertyLabel(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertPropertyExists( $services ),
@@ -1192,7 +1192,7 @@ return [
 		);
 	},
 
-	'WbRestApi.RemovePropertyStatement' => function( MediaWikiServices $services ): RemovePropertyStatement {
+	'WbRestApi.RemovePropertyStatement' => static function( MediaWikiServices $services ): RemovePropertyStatement {
 		return new RemovePropertyStatement(
 			WbRestApi::getAssertPropertyExists( $services ),
 			WbRestApi::getRemoveStatement( $services ),
@@ -1200,7 +1200,7 @@ return [
 		);
 	},
 
-	'WbRestApi.RemoveSitelink' => function( MediaWikiServices $services ): RemoveSitelink {
+	'WbRestApi.RemoveSitelink' => static function( MediaWikiServices $services ): RemoveSitelink {
 		return new RemoveSitelink(
 			WbRestApi::getItemDataRetriever( $services ),
 			WbRestApi::getItemUpdater( $services ),
@@ -1210,7 +1210,7 @@ return [
 		);
 	},
 
-	'WbRestApi.RemoveStatement' => function( MediaWikiServices $services ): RemoveStatement {
+	'WbRestApi.RemoveStatement' => static function( MediaWikiServices $services ): RemoveStatement {
 		return new RemoveStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertUserIsAuthorized( $services ),
@@ -1220,7 +1220,7 @@ return [
 		);
 	},
 
-	'WbRestApi.ReplaceItemStatement' => function( MediaWikiServices $services ): ReplaceItemStatement {
+	'WbRestApi.ReplaceItemStatement' => static function( MediaWikiServices $services ): ReplaceItemStatement {
 		return new ReplaceItemStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -1228,7 +1228,7 @@ return [
 		);
 	},
 
-	'WbRestApi.ReplacePropertyStatement' => function( MediaWikiServices $services ): ReplacePropertyStatement {
+	'WbRestApi.ReplacePropertyStatement' => static function( MediaWikiServices $services ): ReplacePropertyStatement {
 		return new ReplacePropertyStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertPropertyExists( $services ),
@@ -1236,7 +1236,7 @@ return [
 		);
 	},
 
-	'WbRestApi.ReplaceStatement' => function( MediaWikiServices $services ): ReplaceStatement {
+	'WbRestApi.ReplaceStatement' => static function( MediaWikiServices $services ): ReplaceStatement {
 		return new ReplaceStatement(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertStatementSubjectExists( $services ),
@@ -1245,7 +1245,7 @@ return [
 		);
 	},
 
-	'WbRestApi.SetItemDescription' => function( MediaWikiServices $services ): SetItemDescription {
+	'WbRestApi.SetItemDescription' => static function( MediaWikiServices $services ): SetItemDescription {
 		return new SetItemDescription(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -1255,7 +1255,7 @@ return [
 		);
 	},
 
-	'WbRestApi.SetItemLabel' => function( MediaWikiServices $services ): SetItemLabel {
+	'WbRestApi.SetItemLabel' => static function( MediaWikiServices $services ): SetItemLabel {
 		return new SetItemLabel(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -1265,7 +1265,7 @@ return [
 		);
 	},
 
-	'WbRestApi.SetPropertyDescription' => function( MediaWikiServices $services ): SetPropertyDescription {
+	'WbRestApi.SetPropertyDescription' => static function( MediaWikiServices $services ): SetPropertyDescription {
 		return new SetPropertyDescription(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getPropertyDataRetriever( $services ),
@@ -1275,7 +1275,7 @@ return [
 		);
 	},
 
-	'WbRestApi.SetPropertyLabel' => function( MediaWikiServices $services ): SetPropertyLabel {
+	'WbRestApi.SetPropertyLabel' => static function( MediaWikiServices $services ): SetPropertyLabel {
 		return new SetPropertyLabel(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getPropertyDataRetriever( $services ),
@@ -1285,7 +1285,7 @@ return [
 		);
 	},
 
-	'WbRestApi.SetSitelink' => function( MediaWikiServices $services ): SetSitelink {
+	'WbRestApi.SetSitelink' => static function( MediaWikiServices $services ): SetSitelink {
 		return new SetSitelink(
 			WbRestApi::getValidatingRequestDeserializer( $services ),
 			WbRestApi::getAssertItemExists( $services ),
@@ -1295,7 +1295,7 @@ return [
 		);
 	},
 
-	'WbRestApi.SitelinkDeserializer' => function( MediaWikiServices $services ): SitelinkDeserializer {
+	'WbRestApi.SitelinkDeserializer' => static function( MediaWikiServices $services ): SitelinkDeserializer {
 		return new SitelinkDeserializer(
 			MediaWikiTitleCodec::getTitleInvalidRegex(),
 			array_keys( WikibaseRepo::getSettings( $services )->getSetting( 'badgeItems' ) ),
@@ -1307,7 +1307,7 @@ return [
 		);
 	},
 
-	'WbRestApi.StatementDeserializer' => function( MediaWikiServices $services ): StatementDeserializer {
+	'WbRestApi.StatementDeserializer' => static function( MediaWikiServices $services ): StatementDeserializer {
 		$propertyValuePairDeserializer = new PropertyValuePairDeserializer(
 			WikibaseRepo::getEntityIdParser( $services ),
 			WikibaseRepo::getPropertyDataTypeLookup( $services ),
@@ -1323,21 +1323,21 @@ return [
 		);
 	},
 
-	'WbRestApi.StatementRedirectMiddlewareFactory' => function( MediaWikiServices $services ): StatementRedirectMiddlewareFactory {
+	'WbRestApi.StatementRedirectMiddlewareFactory' => static function( MediaWikiServices $services ): StatementRedirectMiddlewareFactory {
 		return new StatementRedirectMiddlewareFactory(
 			WikibaseRepo::getEntityIdParser( $services ),
 			new StatementSubjectRetriever( WikibaseRepo::getEntityRevisionLookup( $services ) )
 		);
 	},
 
-	'WbRestApi.StatementRemover' => function( MediaWikiServices $services ): StatementRemover {
+	'WbRestApi.StatementRemover' => static function( MediaWikiServices $services ): StatementRemover {
 		return new EntityUpdaterStatementRemover(
 			new StatementSubjectRetriever( WikibaseRepo::getEntityRevisionLookup( $services ) ),
 			WbRestApi::getEntityUpdater( $services ),
 		);
 	},
 
-	'WbRestApi.StatementRetriever' => function( MediaWikiServices $services ): EntityRevisionLookupStatementRetriever {
+	'WbRestApi.StatementRetriever' => static function( MediaWikiServices $services ): EntityRevisionLookupStatementRetriever {
 		return new EntityRevisionLookupStatementRetriever(
 			new StatementSubjectRetriever( WikibaseRepo::getEntityRevisionLookup( $services ) ),
 			new StatementReadModelConverter(
@@ -1347,13 +1347,13 @@ return [
 		);
 	},
 
-	'WbRestApi.StatementSerializer' => function( MediaWikiServices $services ): StatementSerializer {
+	'WbRestApi.StatementSerializer' => static function( MediaWikiServices $services ): StatementSerializer {
 		$propertyValuePairSerializer = new PropertyValuePairSerializer();
 		$referenceSerializer = new ReferenceSerializer( $propertyValuePairSerializer );
 		return new StatementSerializer( $propertyValuePairSerializer, $referenceSerializer );
 	},
 
-	'WbRestApi.StatementUpdater' => function( MediaWikiServices $services ): StatementUpdater {
+	'WbRestApi.StatementUpdater' => static function( MediaWikiServices $services ): StatementUpdater {
 		return new EntityUpdaterStatementUpdater(
 			WikibaseRepo::getStatementGuidParser( $services ),
 			new StatementSubjectRetriever( WikibaseRepo::getEntityRevisionLookup( $services ) ),
@@ -1365,21 +1365,21 @@ return [
 		);
 	},
 
-	'WbRestApi.TermLookupEntityTermsRetriever' => function( MediaWikiServices $services ): TermLookupEntityTermsRetriever {
+	'WbRestApi.TermLookupEntityTermsRetriever' => static function( MediaWikiServices $services ): TermLookupEntityTermsRetriever {
 		return new TermLookupEntityTermsRetriever(
 			WikibaseRepo::getTermLookup( $services ),
 			WikibaseRepo::getTermsLanguages( $services )
 		);
 	},
 
-	'WbRestApi.UnexpectedErrorHandlerMiddleware' => function( MediaWikiServices $services ): UnexpectedErrorHandlerMiddleware {
+	'WbRestApi.UnexpectedErrorHandlerMiddleware' => static function( MediaWikiServices $services ): UnexpectedErrorHandlerMiddleware {
 		return new UnexpectedErrorHandlerMiddleware(
 			new ResponseFactory(),
 			$services->get( 'WbRestApi.ErrorReporter' )
 		);
 	},
 
-	'WbRestApi.ValidatingRequestDeserializer' => function( MediaWikiServices $services ): VRD {
+	'WbRestApi.ValidatingRequestDeserializer' => static function( MediaWikiServices $services ): VRD {
 		return new VRD( $services );
 	},
 
diff --git a/repo/rest-api/tests/phpunit/Application/UseCases/CreateProperty/CreatePropertyValidatorTest.php b/repo/rest-api/tests/phpunit/Application/UseCases/CreateProperty/CreatePropertyValidatorTest.php
index 058100d..4992092 100644
--- a/repo/rest-api/tests/phpunit/Application/UseCases/CreateProperty/CreatePropertyValidatorTest.php
+++ b/repo/rest-api/tests/phpunit/Application/UseCases/CreateProperty/CreatePropertyValidatorTest.php
@@ -171,11 +171,11 @@ class CreatePropertyValidatorTest extends TestCase {
 	}
 
 	public static function labelsValidationErrorProvider(): Generator {
-		$mockSyntaxValidator = function( self $test ) {
+		$mockSyntaxValidator = static function( self $test ) {
 			$test->labelsSyntaxValidator = $test->createMock( LabelsSyntaxValidator::class );
 			return $test->labelsSyntaxValidator;
 		};
-		$mockContentsValidator = function( self $test ) {
+		$mockContentsValidator = static function( self $test ) {
 			$test->labelsContentsValidator = $test->createMock( PropertyLabelsContentsValidator::class );
 			return $test->labelsContentsValidator;
 		};
@@ -282,11 +282,11 @@ class CreatePropertyValidatorTest extends TestCase {
 	}
 
 	public static function descriptionsValidationErrorProvider(): Generator {
-		$mockSyntaxValidator = function( self $test ) {
+		$mockSyntaxValidator = static function( self $test ) {
 			$test->descriptionsSyntaxValidator = $test->createMock( DescriptionsSyntaxValidator::class );
 			return $test->descriptionsSyntaxValidator;
 		};
-		$mockContentsValidator = function( self $test ) {
+		$mockContentsValidator = static function( self $test ) {
 			$test->descriptionsContentsValidator = $test->createMock( PropertyDescriptionsContentsValidator::class );
 			return $test->descriptionsContentsValidator;
 		};
diff --git a/repo/rest-api/tests/phpunit/Application/UseCases/PatchItem/PatchedItemValidatorTest.php b/repo/rest-api/tests/phpunit/Application/UseCases/PatchItem/PatchedItemValidatorTest.php
index ebe04b9..34a74f0 100644
--- a/repo/rest-api/tests/phpunit/Application/UseCases/PatchItem/PatchedItemValidatorTest.php
+++ b/repo/rest-api/tests/phpunit/Application/UseCases/PatchItem/PatchedItemValidatorTest.php
@@ -342,11 +342,11 @@ class PatchedItemValidatorTest extends TestCase {
 	}
 
 	public static function labelsValidationErrorProvider(): Generator {
-		$mockSyntaxValidator = function( self $test ) {
+		$mockSyntaxValidator = static function( self $test ) {
 			$test->labelsSyntaxValidator = $test->createMock( LabelsSyntaxValidator::class );
 			return $test->labelsSyntaxValidator;
 		};
-		$mockContentsValidator = function( self $test ) {
+		$mockContentsValidator = static function( self $test ) {
 			$test->labelsContentsValidator = $test->createMock( ItemLabelsContentsValidator::class );
 			return $test->labelsContentsValidator;
 		};
@@ -459,11 +459,11 @@ class PatchedItemValidatorTest extends TestCase {
 	}
 
 	public static function descriptionsValidationErrorProvider(): Generator {
-		$mockSyntaxValidator = function ( self $test ) {
+		$mockSyntaxValidator = static function ( self $test ) {
 			$test->descriptionsSyntaxValidator = $test->createMock( DescriptionsSyntaxValidator::class );
 			return $test->descriptionsSyntaxValidator;
 		};
-		$mockContentsValidator = function ( self $test ) {
+		$mockContentsValidator = static function ( self $test ) {
 			$test->descriptionsContentsValidator = $test->createMock( ItemDescriptionsContentsValidator::class );
 			return $test->descriptionsContentsValidator;
 		};
diff --git a/repo/rest-api/tests/phpunit/Application/UseCases/PatchProperty/PatchedPropertyValidatorTest.php b/repo/rest-api/tests/phpunit/Application/UseCases/PatchProperty/PatchedPropertyValidatorTest.php
index 5e21fba..579bf97 100644
--- a/repo/rest-api/tests/phpunit/Application/UseCases/PatchProperty/PatchedPropertyValidatorTest.php
+++ b/repo/rest-api/tests/phpunit/Application/UseCases/PatchProperty/PatchedPropertyValidatorTest.php
@@ -364,11 +364,11 @@ class PatchedPropertyValidatorTest extends TestCase {
 	}
 
 	public static function labelsValidationErrorProvider(): Generator {
-		$mockSyntaxValidator = function ( self $test ) {
+		$mockSyntaxValidator = static function ( self $test ) {
 			$test->labelsSyntaxValidator = $test->createMock( LabelsSyntaxValidator::class );
 			return $test->labelsSyntaxValidator;
 		};
-		$mockContentsValidator = function ( self $test ) {
+		$mockContentsValidator = static function ( self $test ) {
 			$test->labelsContentsValidator = $test->createMock( PropertyLabelsContentsValidator::class );
 			return $test->labelsContentsValidator;
 		};
@@ -476,11 +476,11 @@ class PatchedPropertyValidatorTest extends TestCase {
 	}
 
 	public static function descriptionsValidationErrorProvider(): Generator {
-		$mockSyntaxValidator = function ( self $test ) {
+		$mockSyntaxValidator = static function ( self $test ) {
 			$test->descriptionsSyntaxValidator = $test->createMock( DescriptionsSyntaxValidator::class );
 			return $test->descriptionsSyntaxValidator;
 		};
-		$mockContentsValidator = function ( self $test ) {
+		$mockContentsValidator = static function ( self $test ) {
 			$test->descriptionsContentsValidator = $test->createMock( PropertyDescriptionsContentsValidator::class );
 			return $test->descriptionsContentsValidator;
 		};
diff --git a/repo/rest-api/tests/phpunit/Application/Validation/LabelsAndDescriptionsContentsValidatorTest.php b/repo/rest-api/tests/phpunit/Application/Validation/LabelsAndDescriptionsContentsValidatorTest.php
index f9cd538..36764db 100644
--- a/repo/rest-api/tests/phpunit/Application/Validation/LabelsAndDescriptionsContentsValidatorTest.php
+++ b/repo/rest-api/tests/phpunit/Application/Validation/LabelsAndDescriptionsContentsValidatorTest.php
@@ -122,7 +122,7 @@ class LabelsAndDescriptionsContentsValidatorTest extends TestCase {
 
 	public static function validatorProvider(): Generator {
 		yield PropertyLabelsContentsValidator::class => [
-			function ( self $self ) {
+			static function ( self $self ) {
 				$propertyLabelValidator = $self->createMock( PropertyLabelValidator::class );
 				$propertyLabelsContentsValidator = new PropertyLabelsContentsValidator( $propertyLabelValidator );
 				return [
@@ -135,7 +135,7 @@ class LabelsAndDescriptionsContentsValidatorTest extends TestCase {
 		];
 
 		yield PropertyDescriptionsContentsValidator::class => [
-			function ( self $self ) {
+			static function ( self $self ) {
 				$propertyDescriptionValidator = $self->createMock( PropertyDescriptionValidator::class );
 				$propertyDescriptionsContentsValidator = new PropertyDescriptionsContentsValidator( $propertyDescriptionValidator );
 				return [
@@ -148,7 +148,7 @@ class LabelsAndDescriptionsContentsValidatorTest extends TestCase {
 		];
 
 		yield ItemLabelsContentsValidator::class => [
-			function ( self $self ) {
+			static function ( self $self ) {
 				$itemLabelValidator = $self->createMock( ItemLabelValidator::class );
 				$itemLabelsContentsValidator = new ItemLabelsContentsValidator( $itemLabelValidator );
 				return [
@@ -161,7 +161,7 @@ class LabelsAndDescriptionsContentsValidatorTest extends TestCase {
 		];
 
 		yield ItemDescriptionsContentsValidator::class => [
-			function ( self $self ) {
+			static function ( self $self ) {
 				$itemDescriptionValidator = $self->createMock( ItemDescriptionValidator::class );
 				$itemDescriptionsContentsValidator = new ItemDescriptionsContentsValidator( $itemDescriptionValidator );
 				return [
diff --git a/repo/rest-api/tests/phpunit/Application/Validation/StatementsValidatorTest.php b/repo/rest-api/tests/phpunit/Application/Validation/StatementsValidatorTest.php
index 28855b2..66f4b8f 100644
--- a/repo/rest-api/tests/phpunit/Application/Validation/StatementsValidatorTest.php
+++ b/repo/rest-api/tests/phpunit/Application/Validation/StatementsValidatorTest.php
@@ -66,7 +66,7 @@ class StatementsValidatorTest extends TestCase {
 
 	public function testMissingStatementValue_returnsValidationError(): void {
 		$this->propValPairDeserializer = $this->createStub( PropertyValuePairDeserializer::class );
-		$this->propValPairDeserializer->method( 'deserialize' )->willReturnCallback( function( $_, $basePath ): void {
+		$this->propValPairDeserializer->method( 'deserialize' )->willReturnCallback( static function( $_, $basePath ): void {
 			throw new MissingFieldException( 'value', $basePath );
 		} );
 
diff --git a/repo/rest-api/tests/phpunit/Infrastructure/DataAccess/EntityUpdaterItemUpdaterTest.php b/repo/rest-api/tests/phpunit/Infrastructure/DataAccess/EntityUpdaterItemUpdaterTest.php
index a23f117..87a9f9a 100644
--- a/repo/rest-api/tests/phpunit/Infrastructure/DataAccess/EntityUpdaterItemUpdaterTest.php
+++ b/repo/rest-api/tests/phpunit/Infrastructure/DataAccess/EntityUpdaterItemUpdaterTest.php
@@ -66,7 +66,7 @@ class EntityUpdaterItemUpdaterTest extends TestCase {
 		$this->entityUpdater->expects( $this->once() )
 			->method( 'create' )
 			->with( $itemToCreate, $editMetaData )
-			->willReturnCallback( function () use ( $itemToCreate, $expectedRevisionId, $expectedRevisionTimestamp ) {
+			->willReturnCallback( static function () use ( $itemToCreate, $expectedRevisionId, $expectedRevisionTimestamp ) {
 				$itemToCreate->setId( new ItemId( 'Q123' ) );
 				return new EntityRevision( $itemToCreate, $expectedRevisionId, $expectedRevisionTimestamp );
 			} );
diff --git a/repo/rest-api/tests/phpunit/Infrastructure/DataAccess/EntityUpdaterPropertyUpdaterTest.php b/repo/rest-api/tests/phpunit/Infrastructure/DataAccess/EntityUpdaterPropertyUpdaterTest.php
index c556c6a..8e6f46f 100644
--- a/repo/rest-api/tests/phpunit/Infrastructure/DataAccess/EntityUpdaterPropertyUpdaterTest.php
+++ b/repo/rest-api/tests/phpunit/Infrastructure/DataAccess/EntityUpdaterPropertyUpdaterTest.php
@@ -57,7 +57,7 @@ class EntityUpdaterPropertyUpdaterTest extends TestCase {
 		$this->entityUpdater->expects( $this->once() )
 			->method( 'create' )
 			->with( $propertyToCreate, $editMetaData )
-			->willReturnCallback( function () use ( $propertyToCreate, $expectedRevisionId, $expectedRevisionTimestamp ) {
+			->willReturnCallback( static function () use ( $propertyToCreate, $expectedRevisionId, $expectedRevisionTimestamp ) {
 				$propertyToCreate->setId( new NumericPropertyId( 'P123' ) );
 				return new EntityRevision( $propertyToCreate, $expectedRevisionId, $expectedRevisionTimestamp );
 			} );
diff --git a/repo/rest-api/tests/phpunit/RouteHandlers/Middleware/TempUserCreationResponseHeaderMiddlewareTest.php b/repo/rest-api/tests/phpunit/RouteHandlers/Middleware/TempUserCreationResponseHeaderMiddlewareTest.php
index 4e5980e..2bc3387 100644
--- a/repo/rest-api/tests/phpunit/RouteHandlers/Middleware/TempUserCreationResponseHeaderMiddlewareTest.php
+++ b/repo/rest-api/tests/phpunit/RouteHandlers/Middleware/TempUserCreationResponseHeaderMiddlewareTest.php
@@ -37,7 +37,7 @@ class TempUserCreationResponseHeaderMiddlewareTest extends TestCase {
 
 		$hookRunner = $this->createMock( HookRunner::class );
 		$hookRunner->method( 'onTempUserCreatedRedirect' )->willReturnCallback(
-			function( $session, $user, $returnTo, $returnToQuery, $returnToAnchor, &$redirectUrl ): void {
+			static function( $session, $user, $returnTo, $returnToQuery, $returnToAnchor, &$redirectUrl ): void {
 				$redirectUrl = 'https://en.wikipedia.org/wiki/Test';
 			}
 		);
@@ -73,7 +73,7 @@ class TempUserCreationResponseHeaderMiddlewareTest extends TestCase {
 
 		$hookRunner = $this->createMock( HookRunner::class );
 		$hookRunner->method( 'onTempUserCreatedRedirect' )->willReturnCallback(
-			function( $session, $user, $returnTo, $returnToQuery, $returnToAnchor, &$redirectUrl ): void {
+			static function( $session, $user, $returnTo, $returnToQuery, $returnToAnchor, &$redirectUrl ): void {
 				$redirectUrl = '';
 			}
 		);
diff --git a/repo/rest-api/tests/phpunit/RouteHandlers/Middleware/UnexpectedErrorHandlerMiddlewareTest.php b/repo/rest-api/tests/phpunit/RouteHandlers/Middleware/UnexpectedErrorHandlerMiddlewareTest.php
index 1b717ec..43e919f 100644
--- a/repo/rest-api/tests/phpunit/RouteHandlers/Middleware/UnexpectedErrorHandlerMiddlewareTest.php
+++ b/repo/rest-api/tests/phpunit/RouteHandlers/Middleware/UnexpectedErrorHandlerMiddlewareTest.php
@@ -37,7 +37,7 @@ class UnexpectedErrorHandlerMiddlewareTest extends TestCase {
 	public function testHandlesError( Throwable $throwable ): void {
 		$response = $this->newMiddleware()->run(
 			$this->createStub( Handler::class ),
-			function () use ( $throwable ): Response {
+			static function () use ( $throwable ): Response {
 				throw $throwable;
 			}
 		);
@@ -75,7 +75,7 @@ class UnexpectedErrorHandlerMiddlewareTest extends TestCase {
 
 		$this->newMiddleware()->run(
 			$routeHandler,
-			function () use ( $exception ): void {
+			static function () use ( $exception ): void {
 				throw $exception;
 			}
 		);
diff --git a/repo/tests/phpunit/includes/Actions/EditEntityActionTest.php b/repo/tests/phpunit/includes/Actions/EditEntityActionTest.php
index 7ca19c8..3a45d40 100644
--- a/repo/tests/phpunit/includes/Actions/EditEntityActionTest.php
+++ b/repo/tests/phpunit/includes/Actions/EditEntityActionTest.php
@@ -44,7 +44,7 @@ class EditEntityActionTest extends ActionTestCase {
 		$method = __METHOD__;
 		$this->setTemporaryHook(
 			'EditFilterMergedContent',
-			function ( IContextSource $context, EntityContent $entityContent, Status $status ) use ( $method ) {
+			static function ( IContextSource $context, EntityContent $entityContent, Status $status ) use ( $method ) {
 				if ( !$entityContent->isRedirect() ) {
 					$entity = $entityContent->getEntity();
 					if ( $entity instanceof LabelsProvider ) {
diff --git a/repo/tests/phpunit/includes/Actions/HistoryEntityActionTest.php b/repo/tests/phpunit/includes/Actions/HistoryEntityActionTest.php
index 4fdabb3..5f7b4c1 100644
--- a/repo/tests/phpunit/includes/Actions/HistoryEntityActionTest.php
+++ b/repo/tests/phpunit/includes/Actions/HistoryEntityActionTest.php
@@ -85,7 +85,7 @@ class HistoryEntityActionTest extends \PHPUnit\Framework\TestCase {
 		$context->method( 'getUser' )
 			->willReturn( new User() );
 		$context->method( 'msg' )
-			->willReturnCallback( function( ...$args ) {
+			->willReturnCallback( static function( ...$args ) {
 				return wfMessage( ...$args )
 					->inLanguage( self::DUMMY_LANGUAGE );
 			} );
@@ -142,7 +142,7 @@ class HistoryEntityActionTest extends \PHPUnit\Framework\TestCase {
 		$pageTitle = null;
 		$output = $this->createMock( OutputPage::class );
 		$output->method( 'setPageTitleMsg' )
-			->willReturnCallback( function( $m ) use( &$pageTitle ) {
+			->willReturnCallback( static function( $m ) use( &$pageTitle ) {
 				$pageTitle = $m->escaped();
 			} );
 
diff --git a/repo/tests/phpunit/includes/Api/ApiJsonFormatTest.php b/repo/tests/phpunit/includes/Api/ApiJsonFormatTest.php
index 4b72526..3ca262c 100644
--- a/repo/tests/phpunit/includes/Api/ApiJsonFormatTest.php
+++ b/repo/tests/phpunit/includes/Api/ApiJsonFormatTest.php
@@ -155,7 +155,7 @@ class ApiJsonFormatTest extends ApiFormatTestCase {
 	private function replaceHashesWithPlaceholder( array $json ) {
 		array_walk_recursive(
 			$json,
-			function( &$value, $key ) {
+			static function( &$value, $key ) {
 				if ( $key === 'hash' ) {
 					$value = 'XXX';
 				}
diff --git a/repo/tests/phpunit/includes/Api/CreateRedirectTest.php b/repo/tests/phpunit/includes/Api/CreateRedirectTest.php
index 258b629..5b3f766 100644
--- a/repo/tests/phpunit/includes/Api/CreateRedirectTest.php
+++ b/repo/tests/phpunit/includes/Api/CreateRedirectTest.php
@@ -79,7 +79,7 @@ class CreateRedirectTest extends MediaWikiIntegrationTestCase {
 		$permissionChecker = $this->createMock( EntityPermissionChecker::class );
 
 		$permissionChecker->method( 'getPermissionStatusForEntityId' )
-			->willReturnCallback( function( User $user ) {
+			->willReturnCallback( static function( User $user ) {
 				if ( $user->getName() === 'UserWithoutPermission' ) {
 					return Status::newFatal( 'permissiondenied' );
 				} else {
diff --git a/repo/tests/phpunit/includes/Api/EditEntityClearChangeOpValidateIntegrationTest.php b/repo/tests/phpunit/includes/Api/EditEntityClearChangeOpValidateIntegrationTest.php
index 1b4eb4a..a689e10 100644
--- a/repo/tests/phpunit/includes/Api/EditEntityClearChangeOpValidateIntegrationTest.php
+++ b/repo/tests/phpunit/includes/Api/EditEntityClearChangeOpValidateIntegrationTest.php
@@ -146,7 +146,7 @@ class EditEntityClearChangeOpValidateIntegrationTest extends MediaWikiIntegratio
 		$changeOp = $this->createMock( ChangeOp::class );
 
 		$changeOp->method( 'validate' )
-			->willReturnCallback( function( Item $item ) {
+			->willReturnCallback( static function( Item $item ) {
 				if ( $item->getLabels()->isEmpty() ) {
 					return Result::newError( [ Error::newError( 'item without labels is no good' ) ] );
 				}
@@ -154,7 +154,7 @@ class EditEntityClearChangeOpValidateIntegrationTest extends MediaWikiIntegratio
 			} );
 
 		$changeOp->method( 'apply' )
-			->willReturnCallback( function( Item $item ) {
+			->willReturnCallback( static function( Item $item ) {
 				if ( $item->getLabels()->isEmpty() ) {
 					throw new ChangeOpApplyException( 'item without labels is really no good' );
 				}
diff --git a/repo/tests/phpunit/includes/Api/EntitySavingHelperTest.php b/repo/tests/phpunit/includes/Api/EntitySavingHelperTest.php
index e11afcc..5cb074c 100644
--- a/repo/tests/phpunit/includes/Api/EntitySavingHelperTest.php
+++ b/repo/tests/phpunit/includes/Api/EntitySavingHelperTest.php
@@ -81,11 +81,11 @@ class EntitySavingHelperTest extends EntityLoadingHelperTest {
 	private function getMockEntityStore() {
 		$mock = $this->createMock( EntityStore::class );
 		$mock->method( 'canCreateWithCustomId' )
-			->willReturnCallback( function ( EntityId $id ) {
+			->willReturnCallback( static function ( EntityId $id ) {
 				return $id->getEntityType() === 'mediainfo';
 			} );
 		$mock->method( 'assignFreshId' )
-			->willReturnCallback( function ( EntityDocument $entity ) {
+			->willReturnCallback( static function ( EntityDocument $entity ) {
 				$entity->setId( new ItemId( 'Q333' ) );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Api/EntityTermSearchHelperTest.php b/repo/tests/phpunit/includes/Api/EntityTermSearchHelperTest.php
index dde9a44..f00a091 100644
--- a/repo/tests/phpunit/includes/Api/EntityTermSearchHelperTest.php
+++ b/repo/tests/phpunit/includes/Api/EntityTermSearchHelperTest.php
@@ -66,7 +66,7 @@ class EntityTermSearchHelperTest extends \PHPUnit\Framework\TestCase {
 		$searchInteractor->expects( $this->atLeastOnce() )
 			->method( 'setTermSearchOptions' )
 			->with( $this->callback(
-				function ( TermSearchOptions $options ) use ( $strictLanguage ) {
+				static function ( TermSearchOptions $options ) use ( $strictLanguage ) {
 					return $options->getUseLanguageFallback() !== $strictLanguage;
 				}
 			) );
diff --git a/repo/tests/phpunit/includes/Api/FormatSnakValueTest.php b/repo/tests/phpunit/includes/Api/FormatSnakValueTest.php
index 33320a8..5d2d792 100644
--- a/repo/tests/phpunit/includes/Api/FormatSnakValueTest.php
+++ b/repo/tests/phpunit/includes/Api/FormatSnakValueTest.php
@@ -55,7 +55,7 @@ class FormatSnakValueTest extends ApiTestCase {
 		$deletedItem = wfMessage( 'wikibase-deletedentity-item' )->inLanguage( 'en' )->text();
 
 		return [
-			[ function () {
+			[ static function () {
 				return [
 					new StringValue( 'test' ),
 					null,
@@ -65,7 +65,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'/^test$/',
 				];
 			} ],
-			[ function () use ( $november11 ) {
+			[ static function () use ( $november11 ) {
 				return [
 					$november11,
 					null,
@@ -75,7 +75,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'/^11 November 2013$/',
 				];
 			} ],
-			[ function () use ( $november ) {
+			[ static function () use ( $november ) {
 				return [
 					$november,
 					null,
@@ -85,7 +85,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'/^November 2013$/',
 				];
 			} ],
-			[ function () {
+			[ static function () {
 				return [
 					new StringValue( 'http://acme.test' ),
 					'string',
@@ -95,7 +95,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'@^http://acme\.test$@',
 				];
 			} ],
-			[ function () {
+			[ static function () {
 				return [
 					new StringValue( 'http://acme.test' ),
 					'string',
@@ -105,7 +105,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'@^http&#58;//acme\.test$@',
 				];
 			} ],
-			[ function () {
+			[ static function () {
 				return [
 					new StringValue( 'http://acme.test' ),
 					'url',
@@ -115,7 +115,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'@^http://acme\.test$@',
 				];
 			} ],
-			[ function () {
+			[ static function () {
 				return [
 					UnboundedQuantityValue::newFromNumber( '+12.33' ),
 					'quantity',
@@ -125,7 +125,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'@^12,33$@', // german decimal separator
 				];
 			} ],
-			[ function () {
+			[ static function () {
 				return [
 					new StringValue( 'http://acme.test' ),
 					'url',
@@ -135,7 +135,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'@^http://acme\.test$@',
 				];
 			} ],
-			[ function () {
+			[ static function () {
 				return [
 					new StringValue( 'example.jpg' ),
 					'commonsMedia',
@@ -145,7 +145,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'@commons\.wikimedia\.org\/wiki\/File:Example\.jpg@',
 				];
 			} ],
-			[ function () use ( $wordSeparator, $deletedItem ) {
+			[ static function () use ( $wordSeparator, $deletedItem ) {
 				return [
 					new EntityIdValue( new ItemId( 'Q404' ) ),
 					'wikibase-item',
@@ -156,7 +156,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					preg_quote( $deletedItem, '/' ) . '\)<\/span>$/',
 				];
 			} ],
-			[ function ( self $test ) {
+			[ static function ( self $test ) {
 				$id = $test->testingItem->getId();
 				$idString = $id->getSerialization();
 
@@ -170,7 +170,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'">George Washington<\/a>$/',
 				];
 			} ],
-			[ function ( self $test ) {
+			[ static function ( self $test ) {
 				$id = $test->testingItem->getId();
 				$idString = $id->getSerialization();
 
@@ -185,7 +185,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'<sup class="wb-language-fallback-indicator">[^<>]+<\/sup>$/',
 				];
 			} ],
-			[ function () {
+			[ static function () {
 				return [
 					new StringValue( 'whatever' ),
 					null,
@@ -195,7 +195,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'/wikibase-snakformatter-property-not-found/',
 				];
 			} ],
-			'wikibase-snakformatter-valuetype-mismatch' => [ function ( self $test ) {
+			'wikibase-snakformatter-valuetype-mismatch' => [ static function ( self $test ) {
 				$qid = $test->testingItem->getId();
 				$pid = $test->testingProperty->getId();
 
@@ -208,7 +208,7 @@ class FormatSnakValueTest extends ApiTestCase {
 					'/wikibase-snakformatter-valuetype-mismatch/',
 				];
 			} ],
-			[ function ( self $test ) {
+			[ static function ( self $test ) {
 				$pid = $test->testingProperty->getId();
 
 				return [
@@ -375,7 +375,7 @@ class FormatSnakValueTest extends ApiTestCase {
 	}
 
 	protected function createPropertyWithDataTypeWithCustomDeserializer( string $dataType, callable $deserialize ): PropertyId {
-		$this->setTemporaryHook( 'WikibaseRepoDataTypes', function ( array &$dataTypes ) use ( $dataType, $deserialize ) {
+		$this->setTemporaryHook( 'WikibaseRepoDataTypes', static function ( array &$dataTypes ) use ( $dataType, $deserialize ) {
 			$dataTypes["PT:$dataType"] = [
 				'value-type' => 'string',
 				'deserializer-builder' => $deserialize,
diff --git a/repo/tests/phpunit/includes/Api/MergeItemsTest.php b/repo/tests/phpunit/includes/Api/MergeItemsTest.php
index ff14ab0..fc56b9a 100644
--- a/repo/tests/phpunit/includes/Api/MergeItemsTest.php
+++ b/repo/tests/phpunit/includes/Api/MergeItemsTest.php
@@ -94,7 +94,7 @@ class MergeItemsTest extends MediaWikiIntegrationTestCase {
 	private function getPermissionCheckers(): EntityPermissionChecker {
 		$permissionChecker = $this->createMock( EntityPermissionChecker::class );
 
-		$callback = function ( User $user, $permission ) {
+		$callback = static function ( User $user, $permission ) {
 			if ( $user->getName() === 'UserWithoutPermission' && $permission === 'edit' ) {
 				return Status::newFatal( 'permissiondenied' );
 			} else {
@@ -118,7 +118,7 @@ class MergeItemsTest extends MediaWikiIntegrationTestCase {
 			$mock->expects( $this->once() )
 				->method( 'createRedirect' )
 				->with( $redirect->getEntityId(), $redirect->getTargetId() )
-				->willReturnCallback( function() use ( $redirect ) {
+				->willReturnCallback( static function() use ( $redirect ) {
 					return EntityRedirectCreationStatus::newGood( [
 						'entityRedirect' => $redirect,
 						'context' => new RequestContext(),
@@ -136,7 +136,7 @@ class MergeItemsTest extends MediaWikiIntegrationTestCase {
 	private function getEntityTitleStoreLookup(): EntityTitleStoreLookup {
 		$entityTitleStoreLookup = $this->createMock( EntityTitleStoreLookup::class );
 		$entityTitleStoreLookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $entityId ) {
+			->willReturnCallback( static function( EntityId $entityId ) {
 				return Title::newFromTextThrow( $entityId->getSerialization() );
 			} );
 
@@ -209,7 +209,7 @@ class MergeItemsTest extends MediaWikiIntegrationTestCase {
 				$services->getPermissionManager()
 			),
 			$errorReporter,
-			function ( $module ) use ( $apiResultBuilder ) {
+			static function ( $module ) use ( $apiResultBuilder ) {
 				return $apiResultBuilder;
 			},
 			[ 'mainItem' => 'Q100', 'auxItem' => 'Q200' ]
diff --git a/repo/tests/phpunit/includes/Api/RemoveQualifiersTest.php b/repo/tests/phpunit/includes/Api/RemoveQualifiersTest.php
index fff0b4f..b30b8ae 100644
--- a/repo/tests/phpunit/includes/Api/RemoveQualifiersTest.php
+++ b/repo/tests/phpunit/includes/Api/RemoveQualifiersTest.php
@@ -96,7 +96,7 @@ class RemoveQualifiersTest extends WikibaseApiTestCase {
 				);
 			} else {
 				$hashes = array_map(
-					function( Snak $qualifier ) {
+					static function( Snak $qualifier ) {
 						return $qualifier->getHash();
 					},
 					iterator_to_array( $qualifiers )
@@ -127,7 +127,7 @@ class RemoveQualifiersTest extends WikibaseApiTestCase {
 
 		$qualifiers = $statement->getQualifiers();
 		$hashes = array_map(
-			function( Snak $qualifier ) {
+			static function( Snak $qualifier ) {
 				return $qualifier->getHash();
 			},
 			iterator_to_array( $qualifiers )
diff --git a/repo/tests/phpunit/includes/Api/RemoveReferencesTest.php b/repo/tests/phpunit/includes/Api/RemoveReferencesTest.php
index 8523d14..bc5a6ab 100644
--- a/repo/tests/phpunit/includes/Api/RemoveReferencesTest.php
+++ b/repo/tests/phpunit/includes/Api/RemoveReferencesTest.php
@@ -97,7 +97,7 @@ class RemoveReferencesTest extends WikibaseApiTestCase {
 				);
 			} else {
 				$hashes = array_map(
-					function( Reference $reference ) {
+					static function( Reference $reference ) {
 						return $reference->getHash();
 					},
 					iterator_to_array( $references )
@@ -127,7 +127,7 @@ class RemoveReferencesTest extends WikibaseApiTestCase {
 		$references = $statement->getReferences();
 
 		$hashes = array_map(
-			function( Reference $reference ) {
+			static function( Reference $reference ) {
 				return $reference->getHash();
 			},
 			iterator_to_array( $references )
diff --git a/repo/tests/phpunit/includes/Api/ResultBuilderTest.php b/repo/tests/phpunit/includes/Api/ResultBuilderTest.php
index 869649c..fe9959a 100644
--- a/repo/tests/phpunit/includes/Api/ResultBuilderTest.php
+++ b/repo/tests/phpunit/includes/Api/ResultBuilderTest.php
@@ -68,7 +68,7 @@ class ResultBuilderTest extends \PHPUnit\Framework\TestCase {
 
 		$mockPropertyDataTypeLookup = $this->createMock( PropertyDataTypeLookup::class );
 		$mockPropertyDataTypeLookup->method( 'getDataTypeIdForProperty' )
-			->willReturnCallback( function( NumericPropertyId $id ) {
+			->willReturnCallback( static function( NumericPropertyId $id ) {
 				return 'DtIdFor_' . $id->getSerialization();
 			} );
 
@@ -1742,7 +1742,7 @@ class ResultBuilderTest extends \PHPUnit\Framework\TestCase {
 		] );
 
 		$calledWithUser = null;
-		$resultBuilder->addTempUser( $status, function ( $user ) use ( &$calledWithUser ) {
+		$resultBuilder->addTempUser( $status, static function ( $user ) use ( &$calledWithUser ) {
 			$calledWithUser = $user;
 			return '';
 		} );
@@ -1768,7 +1768,7 @@ class ResultBuilderTest extends \PHPUnit\Framework\TestCase {
 		] );
 
 		$calledWithUser = null;
-		$resultBuilder->addTempUser( $status, function ( $user ) use ( &$calledWithUser ) {
+		$resultBuilder->addTempUser( $status, static function ( $user ) use ( &$calledWithUser ) {
 			$calledWithUser = $user;
 			return 'https://example.com/?foo#bar';
 		} );
diff --git a/repo/tests/phpunit/includes/Api/SetClaimValueTest.php b/repo/tests/phpunit/includes/Api/SetClaimValueTest.php
index bb704c9..fda19fa 100644
--- a/repo/tests/phpunit/includes/Api/SetClaimValueTest.php
+++ b/repo/tests/phpunit/includes/Api/SetClaimValueTest.php
@@ -265,7 +265,7 @@ class SetClaimValueTest extends WikibaseApiTestCase {
 
 			$options = new FormatterOptions();
 			$options->setOption( 'formatter-builders-text/plain', [
-				'VT:wikibase-entityid' => function() use ( $idFormatter ) {
+				'VT:wikibase-entityid' => static function() use ( $idFormatter ) {
 					return new EntityIdValueFormatter( $idFormatter );
 				},
 			] );
diff --git a/repo/tests/phpunit/includes/Api/StatementModificationHelperTest.php b/repo/tests/phpunit/includes/Api/StatementModificationHelperTest.php
index 5be8571..324c48a 100644
--- a/repo/tests/phpunit/includes/Api/StatementModificationHelperTest.php
+++ b/repo/tests/phpunit/includes/Api/StatementModificationHelperTest.php
@@ -91,10 +91,10 @@ class StatementModificationHelperTest extends MediaWikiIntegrationTestCase {
 			$changeOpFactoryProvider->getStatementChangeOpFactory(),
 			$apiHelperFactory->getErrorReporter( $apiMain ),
 			$modificationHelper,
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getResultBuilder( $module );
 			},
-			function ( $module ) use ( $apiHelperFactory ) {
+			static function ( $module ) use ( $apiHelperFactory ) {
 				return $apiHelperFactory->getEntitySavingHelper( $module );
 			},
 			false,
@@ -207,12 +207,12 @@ class StatementModificationHelperTest extends MediaWikiIntegrationTestCase {
 		$errorReporter = $this->createMock( ApiErrorReporter::class );
 
 		$errorReporter->method( 'dieException' )
-			->willReturnCallback( function ( $exception, $message ) {
+			->willReturnCallback( static function ( $exception, $message ) {
 				throw new RuntimeException( $message );
 			} );
 
 		$errorReporter->method( 'dieError' )
-			->willReturnCallback( function ( $description, $message ) {
+			->willReturnCallback( static function ( $description, $message ) {
 				throw new RuntimeException( $message );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Api/WikibaseApiTestCase.php b/repo/tests/phpunit/includes/Api/WikibaseApiTestCase.php
index 5ad65f7..6efb314 100644
--- a/repo/tests/phpunit/includes/Api/WikibaseApiTestCase.php
+++ b/repo/tests/phpunit/includes/Api/WikibaseApiTestCase.php
@@ -165,7 +165,7 @@ abstract class WikibaseApiTestCase extends ApiTestCase {
 				'normalizer-factory-callback' => function (): DataValueNormalizer {
 					$normalizer = $this->createMock( DataValueNormalizer::class );
 					$normalizer->method( 'normalize' )
-						->willReturnCallback( function ( StringValue $value ): StringValue {
+						->willReturnCallback( static function ( StringValue $value ): StringValue {
 							return new StringValue( strtoupper( $value->getValue() ) );
 						} );
 					return $normalizer;
diff --git a/repo/tests/phpunit/includes/BuilderBasedDataTypeValidatorFactoryTest.php b/repo/tests/phpunit/includes/BuilderBasedDataTypeValidatorFactoryTest.php
index 1abe835..7f64aaa 100644
--- a/repo/tests/phpunit/includes/BuilderBasedDataTypeValidatorFactoryTest.php
+++ b/repo/tests/phpunit/includes/BuilderBasedDataTypeValidatorFactoryTest.php
@@ -30,7 +30,7 @@ class BuilderBasedDataTypeValidatorFactoryTest extends \PHPUnit\Framework\TestCa
 	}
 
 	public function testInvalidValidatorsArray() {
-		$factory = new BuilderBasedDataTypeValidatorFactory( [ 'id' => function() {
+		$factory = new BuilderBasedDataTypeValidatorFactory( [ 'id' => static function() {
 			return 'invalid';
 		} ] );
 		$this->expectException( PostconditionException::class );
@@ -38,14 +38,14 @@ class BuilderBasedDataTypeValidatorFactoryTest extends \PHPUnit\Framework\TestCa
 	}
 
 	public function testEmptyValidatorsArray() {
-		$factory = new BuilderBasedDataTypeValidatorFactory( [ 'id' => function() {
+		$factory = new BuilderBasedDataTypeValidatorFactory( [ 'id' => static function() {
 			return [];
 		} ] );
 		$this->assertSame( [], $factory->getValidators( 'id' ) );
 	}
 
 	public function testInvalidValidatorObject() {
-		$factory = new BuilderBasedDataTypeValidatorFactory( [ 'id' => function() {
+		$factory = new BuilderBasedDataTypeValidatorFactory( [ 'id' => static function() {
 			return [ 'invalid' ];
 		} ] );
 		$this->expectException( PostconditionException::class );
@@ -55,7 +55,7 @@ class BuilderBasedDataTypeValidatorFactoryTest extends \PHPUnit\Framework\TestCa
 	public function testGetValidators() {
 		$validators = [ new CompositeValidator( [] ) ];
 		$factory = new BuilderBasedDataTypeValidatorFactory( [
-			'id' => function() use ( $validators ) {
+			'id' => static function() use ( $validators ) {
 				return $validators;
 			},
 		] );
diff --git a/repo/tests/phpunit/includes/ChangeModification/DispatchChangeVisibilityNotificationJobTest.php b/repo/tests/phpunit/includes/ChangeModification/DispatchChangeVisibilityNotificationJobTest.php
index f0bab6c..08ed1fb 100644
--- a/repo/tests/phpunit/includes/ChangeModification/DispatchChangeVisibilityNotificationJobTest.php
+++ b/repo/tests/phpunit/includes/ChangeModification/DispatchChangeVisibilityNotificationJobTest.php
@@ -225,7 +225,7 @@ class DispatchChangeVisibilityNotificationJobTest extends MediaWikiIntegrationTe
 			->willReturnCallback( function ( string $wikiId ) use ( &$actualJobs ) {
 				$jobQueueGroup = $this->createMock( JobQueueGroup::class );
 				$jobQueueGroup->method( 'push' )
-					->willReturnCallback( function ( array $jobs ) use ( $wikiId, &$actualJobs ) {
+					->willReturnCallback( static function ( array $jobs ) use ( $wikiId, &$actualJobs ) {
 						foreach ( $jobs as $job ) {
 							$actualJobs[$wikiId][] = $job->getParams();
 						}
@@ -241,7 +241,7 @@ class DispatchChangeVisibilityNotificationJobTest extends MediaWikiIntegrationTe
 		$entityIdLookup = $this->createMock( EntityIdLookup::class );
 		$entityIdLookup->expects( $this->once() )
 			->method( 'getEntityIdForTitle' )
-			->willReturnCallback( function ( Title $title ): EntityId {
+			->willReturnCallback( static function ( Title $title ): EntityId {
 				return ( new BasicEntityIdParser() )->parse( $title->getText() );
 			} );
 
diff --git a/repo/tests/phpunit/includes/ChangeOp/ChangeOpTestMockProvider.php b/repo/tests/phpunit/includes/ChangeOp/ChangeOpTestMockProvider.php
index ee614a0..e6248fe 100644
--- a/repo/tests/phpunit/includes/ChangeOp/ChangeOpTestMockProvider.php
+++ b/repo/tests/phpunit/includes/ChangeOp/ChangeOpTestMockProvider.php
@@ -162,7 +162,7 @@ class ChangeOpTestMockProvider {
 
 		$mock = $this->createMock( DataTypeFactory::class );
 		$mock->method( 'getType' )
-			->willReturnCallback( function( $id ) use ( $types ) {
+			->willReturnCallback( static function( $id ) use ( $types ) {
 				if ( !isset( $types[$id] ) ) {
 					throw new OutOfBoundsException( "No such type: $id" );
 				}
@@ -192,7 +192,7 @@ class ChangeOpTestMockProvider {
 
 		$mock = $this->createMock( DataTypeValidatorFactory::class );
 		$mock->method( 'getValidators' )
-			->willReturnCallback( function( $id ) use ( $validators ) {
+			->willReturnCallback( static function( $id ) use ( $validators ) {
 				return $validators;
 			} );
 
@@ -208,7 +208,7 @@ class ChangeOpTestMockProvider {
 	public function getMockTermValidator() {
 		$mock = $this->createMock( ValueValidator::class );
 		$mock->method( 'validate' )
-			->willReturnCallback( function( $text ) {
+			->willReturnCallback( static function( $text ) {
 				if ( $text === 'INVALID' ) {
 					$error = Error::newError( 'Invalid', '', 'test-invalid' );
 					return Result::newError( [ $error ] );
@@ -303,7 +303,7 @@ class ChangeOpTestMockProvider {
 		$mock = $this->createMock( SiteLinkConflictLookup::class );
 
 		$mock->method( 'getConflictsForItem' )
-			->willReturnCallback( function ( ItemId $itemId, SiteLinkList $siteLinkList ) {
+			->willReturnCallback( static function ( ItemId $itemId, SiteLinkList $siteLinkList ) {
 				$conflicts = [];
 
 				foreach ( $siteLinkList->toArray() as $link ) {
diff --git a/repo/tests/phpunit/includes/ChangeOp/ChangeOpsMergeTest.php b/repo/tests/phpunit/includes/ChangeOp/ChangeOpsMergeTest.php
index d3f7143..dd1688a 100644
--- a/repo/tests/phpunit/includes/ChangeOp/ChangeOpsMergeTest.php
+++ b/repo/tests/phpunit/includes/ChangeOp/ChangeOpsMergeTest.php
@@ -74,7 +74,7 @@ class ChangeOpsMergeTest extends MediaWikiIntegrationTestCase {
 		// A validator which makes sure that no site link is for page 'DUPE'
 		$siteLinkUniquenessValidator = $this->createMock( EntityValidator::class );
 		$siteLinkUniquenessValidator->method( 'validateEntity' )
-			->willReturnCallback( function( Item $item ) {
+			->willReturnCallback( static function( Item $item ) {
 				foreach ( $item->getSiteLinkList()->toArray() as $siteLink ) {
 					if ( $siteLink->getPageName() === 'DUPE' ) {
 						return Result::newError( [ Error::newError( 'SiteLink conflict' ) ] );
diff --git a/repo/tests/phpunit/includes/ChangeOp/ChangeOpsTest.php b/repo/tests/phpunit/includes/ChangeOp/ChangeOpsTest.php
index 584dbf5..829f198 100644
--- a/repo/tests/phpunit/includes/ChangeOp/ChangeOpsTest.php
+++ b/repo/tests/phpunit/includes/ChangeOp/ChangeOpsTest.php
@@ -115,7 +115,7 @@ class ChangeOpsTest extends \PHPUnit\Framework\TestCase {
 		$newLabel = 'newLabel';
 		$newDescription = 'newDescription';
 
-		$changeOpsFactory = function ( self $self ) use ( $language, $newLabel, $newDescription ): ChangeOps {
+		$changeOpsFactory = static function ( self $self ) use ( $language, $newLabel, $newDescription ): ChangeOps {
 			$validatorFactory = $self->getTermValidatorFactory();
 			$changeOps = new ChangeOps();
 			$changeOps->add( new ChangeOpLabel( $language, $newLabel, $validatorFactory ) );
@@ -193,14 +193,14 @@ class ChangeOpsTest extends \PHPUnit\Framework\TestCase {
 
 		$changeOp = $this->createMock( ChangeOp::class );
 		$changeOp->method( 'validate' )
-			->willReturnCallback( function( Item $item ) {
+			->willReturnCallback( static function( Item $item ) {
 				// Fail when the label is already set (by a previous apply call).
 				return $item->getFingerprint()->hasLabel( 'en' )
 					? Result::newError( [] )
 					: Result::newSuccess();
 			} );
 		$changeOp->method( 'apply' )
-			->willReturnCallback( function( Item $item ) {
+			->willReturnCallback( static function( Item $item ) {
 				$item->setLabel( 'en', 'Label' );
 			} );
 
diff --git a/repo/tests/phpunit/includes/ChangeOp/Deserialization/AliasChangeOpDeserializationTester.php b/repo/tests/phpunit/includes/ChangeOp/Deserialization/AliasChangeOpDeserializationTester.php
index dd36732..b81e145 100644
--- a/repo/tests/phpunit/includes/ChangeOp/Deserialization/AliasChangeOpDeserializationTester.php
+++ b/repo/tests/phpunit/includes/ChangeOp/Deserialization/AliasChangeOpDeserializationTester.php
@@ -51,7 +51,7 @@ trait AliasChangeOpDeserializationTester {
 		$entity = $this->getEntityWithExistingAliases();
 		$existingAliases = $entity->getAliasGroups()->getByLanguage( 'en' )->getAliases();
 		$changeOp = $this->getChangeOpDeserializer()->createEntityChangeOp( [
-			'aliases' => array_map( function( $alias ) {
+			'aliases' => array_map( static function( $alias ) {
 				return [ 'language' => 'en', 'value' => $alias, 'remove' => '' ];
 			}, $existingAliases ),
 		] );
diff --git a/repo/tests/phpunit/includes/ChangeOp/Deserialization/FingerprintChangeOpDeserializerTest.php b/repo/tests/phpunit/includes/ChangeOp/Deserialization/FingerprintChangeOpDeserializerTest.php
index 88ef964..c78058b 100644
--- a/repo/tests/phpunit/includes/ChangeOp/Deserialization/FingerprintChangeOpDeserializerTest.php
+++ b/repo/tests/phpunit/includes/ChangeOp/Deserialization/FingerprintChangeOpDeserializerTest.php
@@ -31,7 +31,7 @@ class FingerprintChangeOpDeserializerTest extends \PHPUnit\Framework\TestCase {
 	private $aliasesChangeOpDeserializerMock;
 
 	protected function setUp(): void {
-		$createNullChangeOpCallback = function ( $changeRequest ) {
+		$createNullChangeOpCallback = static function ( $changeRequest ) {
 			return new NullChangeOp();
 		};
 
diff --git a/repo/tests/phpunit/includes/ChangeOp/Deserialization/SiteLinkBadgeChangeOpSerializationValidatorTest.php b/repo/tests/phpunit/includes/ChangeOp/Deserialization/SiteLinkBadgeChangeOpSerializationValidatorTest.php
index 335ed6d..0776530 100644
--- a/repo/tests/phpunit/includes/ChangeOp/Deserialization/SiteLinkBadgeChangeOpSerializationValidatorTest.php
+++ b/repo/tests/phpunit/includes/ChangeOp/Deserialization/SiteLinkBadgeChangeOpSerializationValidatorTest.php
@@ -33,7 +33,7 @@ class SiteLinkBadgeChangeOpSerializationValidatorTest extends \PHPUnit\Framework
 		);
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function() use ( $validator, $serialization ) {
+			static function() use ( $validator, $serialization ) {
 				$validator->validateBadgeSerialization( $serialization );
 			},
 			'not-recognized-string'
@@ -58,7 +58,7 @@ class SiteLinkBadgeChangeOpSerializationValidatorTest extends \PHPUnit\Framework
 		);
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function() use ( $validator, $serialization ) {
+			static function() use ( $validator, $serialization ) {
 				$validator->validateBadgeSerialization( $serialization );
 			},
 			'invalid-entity-id'
@@ -75,7 +75,7 @@ class SiteLinkBadgeChangeOpSerializationValidatorTest extends \PHPUnit\Framework
 		);
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function() use ( $validator, $invalidBadgeItemId ) {
+			static function() use ( $validator, $invalidBadgeItemId ) {
 				$validator->validateBadgeSerialization( [ $invalidBadgeItemId ] );
 			},
 			'not-badge'
@@ -95,7 +95,7 @@ class SiteLinkBadgeChangeOpSerializationValidatorTest extends \PHPUnit\Framework
 		);
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function() use ( $validator, $badgeItemId ) {
+			static function() use ( $validator, $badgeItemId ) {
 				$validator->validateBadgeSerialization( [ $badgeItemId ] );
 			},
 			'no-such-entity'
@@ -119,7 +119,7 @@ class SiteLinkBadgeChangeOpSerializationValidatorTest extends \PHPUnit\Framework
 		);
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function() use ( $validator, $badgeItemId ) {
+			static function() use ( $validator, $badgeItemId ) {
 				$validator->validateBadgeSerialization( [ $badgeItemId ] );
 			},
 			'no-such-entity'
diff --git a/repo/tests/phpunit/includes/ChangeOp/Deserialization/SiteLinksChangeOpDeserializerTest.php b/repo/tests/phpunit/includes/ChangeOp/Deserialization/SiteLinksChangeOpDeserializerTest.php
index d13ba69..b91cfcb 100644
--- a/repo/tests/phpunit/includes/ChangeOp/Deserialization/SiteLinksChangeOpDeserializerTest.php
+++ b/repo/tests/phpunit/includes/ChangeOp/Deserialization/SiteLinksChangeOpDeserializerTest.php
@@ -67,7 +67,7 @@ class SiteLinksChangeOpDeserializerTest extends \PHPUnit\Framework\TestCase {
 		$deserializer = $this->newSiteLinksChangeOpDeserializer();
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function() use ( $deserializer ) {
+			static function() use ( $deserializer ) {
 				$deserializer->createEntityChangeOp( [ 'sitelinks' => 'foo' ] );
 			},
 			'not-recognized-array'
@@ -91,7 +91,7 @@ class SiteLinksChangeOpDeserializerTest extends \PHPUnit\Framework\TestCase {
 		$deserializer = $this->newSiteLinksChangeOpDeserializer();
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function() use ( $deserializer, $serialization ) {
+			static function() use ( $deserializer, $serialization ) {
 				$deserializer->createEntityChangeOp( [ 'sitelinks' => [ self::SITE_ID => $serialization ] ] );
 			},
 			$expectedError
@@ -102,7 +102,7 @@ class SiteLinksChangeOpDeserializerTest extends \PHPUnit\Framework\TestCase {
 		$deserializer = $this->newSiteLinksChangeOpDeserializer();
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function() use ( $deserializer ) {
+			static function() use ( $deserializer ) {
 				$deserializer->createEntityChangeOp( [ 'sitelinks' => [ self::SITE_ID => [ 'site' => 'someotherwiki' ] ] ] );
 			},
 			'inconsistent-site'
@@ -113,7 +113,7 @@ class SiteLinksChangeOpDeserializerTest extends \PHPUnit\Framework\TestCase {
 		$deserializer = $this->newSiteLinksChangeOpDeserializer();
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function() use ( $deserializer ) {
+			static function() use ( $deserializer ) {
 				$deserializer->createEntityChangeOp( [ 'sitelinks' => [ 'someotherwiki' => [ 'site' => 'someotherwiki' ] ] ] );
 			},
 			'not-recognized-site'
@@ -140,7 +140,7 @@ class SiteLinksChangeOpDeserializerTest extends \PHPUnit\Framework\TestCase {
 		);
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function() use ( $deserializer ) {
+			static function() use ( $deserializer ) {
 				$deserializer->createEntityChangeOp(
 					[ 'sitelinks' => [ self::SITE_ID => [ 'site' => self::SITE_ID, 'badges' => [ 'BAD' ] ] ] ]
 				);
@@ -353,7 +353,7 @@ class SiteLinksChangeOpDeserializerTest extends \PHPUnit\Framework\TestCase {
 		$deserializer = $this->newSiteLinksChangeOpDeserializer( $item );
 
 		ChangeOpDeserializationAssert::assertThrowsChangeOpDeserializationException(
-			function () use ( $deserializer, $item ) {
+			static function () use ( $deserializer, $item ) {
 				$deserializer->createEntityChangeOp(
 					[
 						'id' => $item->getId()->getSerialization(),
diff --git a/repo/tests/phpunit/includes/ChangeOp/EntityChangeOpProviderTest.php b/repo/tests/phpunit/includes/ChangeOp/EntityChangeOpProviderTest.php
index 746b4e9..74e6ee5 100644
--- a/repo/tests/phpunit/includes/ChangeOp/EntityChangeOpProviderTest.php
+++ b/repo/tests/phpunit/includes/ChangeOp/EntityChangeOpProviderTest.php
@@ -22,7 +22,7 @@ class EntityChangeOpProviderTest extends \PHPUnit\Framework\TestCase {
 		return [
 			'not a callback as a value' => [ [ 'entity-type' => 'foo' ] ],
 			'not a string as a key' => [ [
-				100 => function() {
+				100 => static function() {
 				},
 			] ],
 		];
@@ -49,7 +49,7 @@ class EntityChangeOpProviderTest extends \PHPUnit\Framework\TestCase {
 		$deserializer = $this->getChangeOpDeserializer();
 
 		$changeOpProvider = new EntityChangeOpProvider( [
-			'entity-type' => function() use ( $deserializer ) {
+			'entity-type' => static function() use ( $deserializer ) {
 				return $deserializer;
 			},
 		] );
@@ -61,7 +61,7 @@ class EntityChangeOpProviderTest extends \PHPUnit\Framework\TestCase {
 
 	public function testGivenCallbackNotReturningChangeOpDeserializer_exceptionIsThrown() {
 		$changeOpProvider = new EntityChangeOpProvider( [
-			'entity-type' => function() {
+			'entity-type' => static function() {
 				return (object)[];
 			},
 		] );
@@ -75,7 +75,7 @@ class EntityChangeOpProviderTest extends \PHPUnit\Framework\TestCase {
 		$deserializer = $this->getChangeOpDeserializer();
 
 		$changeOpProvider = new EntityChangeOpProvider( [
-			'entity-type' => function() use ( $deserializer ) {
+			'entity-type' => static function() use ( $deserializer ) {
 				return $deserializer;
 			},
 		] );
diff --git a/repo/tests/phpunit/includes/Content/ContentHandlerEntityIdLookupTest.php b/repo/tests/phpunit/includes/Content/ContentHandlerEntityIdLookupTest.php
index 12e1e52..146d102 100644
--- a/repo/tests/phpunit/includes/Content/ContentHandlerEntityIdLookupTest.php
+++ b/repo/tests/phpunit/includes/Content/ContentHandlerEntityIdLookupTest.php
@@ -56,10 +56,10 @@ class ContentHandlerEntityIdLookupTest extends MediaWikiIntegrationTestCase {
 				'property' => PropertyContent::CONTENT_MODEL_ID,
 			],
 			[
-				'item' => function() {
+				'item' => static function() {
 					return WikibaseRepo::getItemHandler();
 				},
-				'property' => function() {
+				'property' => static function() {
 					return WikibaseRepo::getPropertyHandler();
 				},
 			]
diff --git a/repo/tests/phpunit/includes/Content/ContentHandlerEntityTitleLookupTest.php b/repo/tests/phpunit/includes/Content/ContentHandlerEntityTitleLookupTest.php
index d9705ba..b271ea9 100644
--- a/repo/tests/phpunit/includes/Content/ContentHandlerEntityTitleLookupTest.php
+++ b/repo/tests/phpunit/includes/Content/ContentHandlerEntityTitleLookupTest.php
@@ -49,10 +49,10 @@ class ContentHandlerEntityTitleLookupTest extends MediaWikiIntegrationTestCase {
 				'property' => PropertyContent::CONTENT_MODEL_ID,
 			],
 			[
-				'item' => function() {
+				'item' => static function() {
 					return WikibaseRepo::getItemHandler();
 				},
-				'property' => function() {
+				'property' => static function() {
 					return WikibaseRepo::getPropertyHandler();
 				},
 			]
diff --git a/repo/tests/phpunit/includes/Content/DataUpdateAdapterTest.php b/repo/tests/phpunit/includes/Content/DataUpdateAdapterTest.php
index a671626..397ed90 100644
--- a/repo/tests/phpunit/includes/Content/DataUpdateAdapterTest.php
+++ b/repo/tests/phpunit/includes/Content/DataUpdateAdapterTest.php
@@ -23,7 +23,7 @@ class DataUpdateAdapterTest extends \PHPUnit\Framework\TestCase {
 		$reporter->expects( $this->once() )
 			->method( 'reportMessage' );
 
-		$update = new DataUpdateAdapter( function() {
+		$update = new DataUpdateAdapter( static function() {
 			throw new RuntimeException( 'Test' );
 		} );
 		$update->setExceptionHandler( new ReportingExceptionHandler( $reporter ) );
@@ -38,7 +38,7 @@ class DataUpdateAdapterTest extends \PHPUnit\Framework\TestCase {
 		$reporter->expects( $this->once() )
 			->method( 'reportMessage' );
 
-		$update = new DataUpdateAdapter( function() {
+		$update = new DataUpdateAdapter( static function() {
 			throw new DBError( null, 'db error' );
 		} );
 		$update->setExceptionHandler( new ReportingExceptionHandler( $reporter ) );
diff --git a/repo/tests/phpunit/includes/Content/EntityContentFactoryTest.php b/repo/tests/phpunit/includes/Content/EntityContentFactoryTest.php
index f57ae82..8d4236b 100644
--- a/repo/tests/phpunit/includes/Content/EntityContentFactoryTest.php
+++ b/repo/tests/phpunit/includes/Content/EntityContentFactoryTest.php
@@ -116,10 +116,10 @@ class EntityContentFactoryTest extends MediaWikiIntegrationTestCase {
 				'property' => PropertyContent::CONTENT_MODEL_ID,
 			],
 			[
-				'item' => function() {
+				'item' => static function() {
 					return WikibaseRepo::getItemHandler();
 				},
-				'property' => function() {
+				'property' => static function() {
 					return WikibaseRepo::getPropertyHandler();
 				},
 			]
diff --git a/repo/tests/phpunit/includes/Content/EntityContentTestCase.php b/repo/tests/phpunit/includes/Content/EntityContentTestCase.php
index 33d75cb..39df54f 100644
--- a/repo/tests/phpunit/includes/Content/EntityContentTestCase.php
+++ b/repo/tests/phpunit/includes/Content/EntityContentTestCase.php
@@ -175,7 +175,7 @@ abstract class EntityContentTestCase extends MediaWikiIntegrationTestCase {
 				],
 			],
 			'labels' => [
-				function ( self $self ) {
+				static function ( self $self ) {
 					$labeledEntityContent = $self->newBlank();
 					$self->setLabel( $labeledEntityContent->getEntity(), 'de', 'xyz' );
 					return $labeledEntityContent;
diff --git a/repo/tests/phpunit/includes/Content/ItemContentTest.php b/repo/tests/phpunit/includes/Content/ItemContentTest.php
index 3ae1041..d7068d9 100644
--- a/repo/tests/phpunit/includes/Content/ItemContentTest.php
+++ b/repo/tests/phpunit/includes/Content/ItemContentTest.php
@@ -95,7 +95,7 @@ class ItemContentTest extends EntityContentTestCase {
 
 		$propertyHolder = new EntityInstanceHolder( Property::newFromType( 'string' ) );
 
-		$badTitleFactory = function ( self $self ) {
+		$badTitleFactory = static function ( self $self ) {
 			$badTitle = $self->createMock( Title::class );
 			$badTitle->method( 'getContentModel' )
 				->willReturn( 'bad content model' );
@@ -372,7 +372,7 @@ class ItemContentTest extends EntityContentTestCase {
 		);
 
 		$cases['same redir'] = [
-			function ( self $self ) use ( $q10 ) {
+			static function ( self $self ) use ( $q10 ) {
 				$redir = $self->newRedirect( $q10, new ItemId( 'Q17' ) );
 				return [ $redir, $redir ];
 			},
@@ -474,7 +474,7 @@ class ItemContentTest extends EntityContentTestCase {
 		$labels1->getItem()->setLabel( 'en', 'Foo' );
 
 		$cases['same redirect'] = [
-			function ( self $self ) {
+			static function ( self $self ) {
 				$redir = $self->newRedirect( new ItemId( 'Q5' ), new ItemId( 'Q7' ) );
 				return [ $redir, $redir ];
 			},
diff --git a/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php b/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
index e94ca69..fec9069 100644
--- a/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
+++ b/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
@@ -93,7 +93,7 @@ class BasicEntityDiffVisualizerTest extends MediaWikiIntegrationTestCase {
 		$mock = $this->createMock( MessageLocalizer::class );
 
 		$mock->method( 'msg' )
-			->willReturnCallback( function ( $key ) {
+			->willReturnCallback( static function ( $key ) {
 				return new RawMessage( "($key)" );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php b/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php
index 6f4f48d..21ffbc0 100644
--- a/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php
+++ b/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php
@@ -37,23 +37,23 @@ class ClaimDifferenceVisualizerTest extends MediaWikiIntegrationTestCase {
 		$instance = $this->createMock( DifferencesSnakVisualizer::class );
 
 		$instance->method( 'getPropertyAndDetailedValue' )
-			->willReturnCallback( function( PropertyValueSnak $snak ) {
+			->willReturnCallback( static function( PropertyValueSnak $snak ) {
 				return $snak->getPropertyId()->getSerialization() . ': ' . $snak->getDataValue()->getValue()
 					. ' (DETAILED)';
 			} );
 
 		$instance->method( 'getDetailedValue' )
-			->willReturnCallback( function( PropertyValueSnak $snak = null ) {
+			->willReturnCallback( static function( PropertyValueSnak $snak = null ) {
 				return $snak === null ? null : $snak->getDataValue()->getValue() . ' (DETAILED)';
 			} );
 
 		$instance->method( 'getPropertyHeader' )
-			->willReturnCallback( function( Snak $snak ) {
+			->willReturnCallback( static function( Snak $snak ) {
 				return 'property / ' . $snak->getPropertyId()->getSerialization();
 			} );
 
 		$instance->method( 'getPropertyAndValueHeader' )
-			->willReturnCallback( function( PropertyValueSnak $snak ) {
+			->willReturnCallback( static function( PropertyValueSnak $snak ) {
 				return 'property / ' . $snak->getPropertyId()->getSerialization() . ': ' .
 					$snak->getDataValue()->getValue();
 			} );
diff --git a/repo/tests/phpunit/includes/Diff/DispatchingEntityDiffVisualizerTest.php b/repo/tests/phpunit/includes/Diff/DispatchingEntityDiffVisualizerTest.php
index c532b5e..18d0310 100644
--- a/repo/tests/phpunit/includes/Diff/DispatchingEntityDiffVisualizerTest.php
+++ b/repo/tests/phpunit/includes/Diff/DispatchingEntityDiffVisualizerTest.php
@@ -34,10 +34,10 @@ class DispatchingEntityDiffVisualizerTest extends \PHPUnit\Framework\TestCase {
 			->willReturn( 'PrOPERTY DIFF' );
 
 		$factory = $this->newFactory( [
-			'item' => function () use ( $itemVisualizer ) {
+			'item' => static function () use ( $itemVisualizer ) {
 				return $itemVisualizer;
 			},
-			'property' => function () use ( $propertyVisualizer ) {
+			'property' => static function () use ( $propertyVisualizer ) {
 				return $propertyVisualizer;
 			},
 		] );
diff --git a/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerFactoryTest.php b/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerFactoryTest.php
index dc3c02d..609f597 100644
--- a/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerFactoryTest.php
+++ b/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerFactoryTest.php
@@ -44,7 +44,7 @@ class EntityDiffVisualizerFactoryTest extends \PHPUnit\Framework\TestCase {
 		$dummyVisualizer = $this->createMock( EntityDiffVisualizer::class );
 
 		$factory = $this->newFactory( [
-			'item' => function () use ( $dummyVisualizer ) {
+			'item' => static function () use ( $dummyVisualizer ) {
 				return $dummyVisualizer;
 			},
 		] );
@@ -54,7 +54,7 @@ class EntityDiffVisualizerFactoryTest extends \PHPUnit\Framework\TestCase {
 
 	public function testGivenInstantiatorDoesReturnDiffVisualizer_factoryThrowsException() {
 		$factory = $this->newFactory( [
-			'item' => function () {
+			'item' => static function () {
 				return 'WOOO';
 			},
 		] );
@@ -76,7 +76,7 @@ class EntityDiffVisualizerFactoryTest extends \PHPUnit\Framework\TestCase {
 	public static function provideInvalidConstructorArgs(): iterable {
 		return [
 			[ 'non-string key' => [
-				123 => function () {
+				123 => static function () {
 					throw new \Exception( 'this should never be called' );
 				},
 			] ],
diff --git a/repo/tests/phpunit/includes/Diff/ItemDiffVisualizerTest.php b/repo/tests/phpunit/includes/Diff/ItemDiffVisualizerTest.php
index 3bf0992..b5aa959 100644
--- a/repo/tests/phpunit/includes/Diff/ItemDiffVisualizerTest.php
+++ b/repo/tests/phpunit/includes/Diff/ItemDiffVisualizerTest.php
@@ -87,7 +87,7 @@ class ItemDiffVisualizerTest extends MediaWikiIntegrationTestCase {
 		$mock = $this->createMock( MessageLocalizer::class );
 
 		$mock->method( 'msg' )
-			->willReturnCallback( function ( $key ) {
+			->willReturnCallback( static function ( $key ) {
 				return new RawMessage( "($key)" );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Dumpers/JsonDataTypeInjectorTest.php b/repo/tests/phpunit/includes/Dumpers/JsonDataTypeInjectorTest.php
index c7e7692..dc79232 100644
--- a/repo/tests/phpunit/includes/Dumpers/JsonDataTypeInjectorTest.php
+++ b/repo/tests/phpunit/includes/Dumpers/JsonDataTypeInjectorTest.php
@@ -124,7 +124,7 @@ class JsonDataTypeInjectorTest extends TestCase {
 	private function getMockPropertyDataTypeLookup() {
 		$mockDataTypeLookup = $this->createMock( PropertyDataTypeLookup::class );
 		$mockDataTypeLookup->method( 'getDataTypeIdForProperty' )
-			->willReturnCallback( function( PropertyId $id ) {
+			->willReturnCallback( static function( PropertyId $id ) {
 				return 'DtIdFor_' . $id->getSerialization();
 			} );
 		return $mockDataTypeLookup;
diff --git a/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php b/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
index a7a16da..99d05ae 100644
--- a/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
+++ b/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
@@ -116,7 +116,7 @@ class JsonDumpGeneratorTest extends \PHPUnit\Framework\TestCase {
 
 		$entityRevisionLookup = $this->createMock( EntityRevisionLookup::class );
 		$entityRevisionLookup->method( 'getEntityRevision' )
-			->willReturnCallback( function( EntityId $id ) use ( $entityRevisions, $missingIds, $redirectedIds ) {
+			->willReturnCallback( static function( EntityId $id ) use ( $entityRevisions, $missingIds, $redirectedIds ) {
 				if ( in_array( $id, $missingIds ) ) {
 					return null;
 				}
@@ -271,7 +271,7 @@ class JsonDumpGeneratorTest extends \PHPUnit\Framework\TestCase {
 	private function getEntityRevisionLookupThrows( Exception $ex ) {
 		$entityRevisionLookup = $this->createMock( EntityRevisionLookup::class );
 		$entityRevisionLookup->method( 'getEntityRevision' )
-			->willReturnCallback( function( EntityId $id ) use ( $ex ) {
+			->willReturnCallback( static function( EntityId $id ) use ( $ex ) {
 				throw $ex;
 			} );
 
@@ -382,7 +382,7 @@ class JsonDumpGeneratorTest extends \PHPUnit\Framework\TestCase {
 			$actualIds = array_merge( $actualIds, $shardIds );
 		}
 
-		$expectedIds = array_map( function( EntityId $id ) {
+		$expectedIds = array_map( static function( EntityId $id ) {
 			return $id->getSerialization();
 		}, $ids );
 
diff --git a/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php b/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php
index 22226e2..91f7856 100644
--- a/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php
+++ b/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php
@@ -235,7 +235,7 @@ class RdfDumpGeneratorTest extends MediaWikiIntegrationTestCase {
 	 */
 	private function getStubRdfBuilderFactoryCallbacks(): array {
 		return [
-			'property' => function(
+			'property' => static function(
 				RdfVocabulary $vocabulary,
 				RdfWriter $writer
 			) {
@@ -280,7 +280,7 @@ class RdfDumpGeneratorTest extends MediaWikiIntegrationTestCase {
 		$entityRevisionLookup = $this->createMock( EntityRevisionLookup::class );
 
 		$entityRevisionLookup->method( 'getEntityRevision' )
-			->willReturnCallback( function( EntityId $id ) use ( $entityRevisions, $redirects ) {
+			->willReturnCallback( static function( EntityId $id ) use ( $entityRevisions, $redirects ) {
 				$key = $id->getSerialization();
 
 				if ( isset( $redirects[$key] ) ) {
diff --git a/repo/tests/phpunit/includes/EntityReferenceExtractors/EntityReferenceExtractorDelegatorTest.php b/repo/tests/phpunit/includes/EntityReferenceExtractors/EntityReferenceExtractorDelegatorTest.php
index 7e28b81..eb79ca9 100644
--- a/repo/tests/phpunit/includes/EntityReferenceExtractors/EntityReferenceExtractorDelegatorTest.php
+++ b/repo/tests/phpunit/includes/EntityReferenceExtractors/EntityReferenceExtractorDelegatorTest.php
@@ -41,7 +41,7 @@ class EntityReferenceExtractorDelegatorTest extends TestCase {
 			'property' => function () {
 				$this->fail( 'This should not be called' );
 			},
-			'item' => function () use ( $mockEntityReferenceExtractor ) {
+			'item' => static function () use ( $mockEntityReferenceExtractor ) {
 				return $mockEntityReferenceExtractor;
 			},
 		], $this->createMock( StatementEntityReferenceExtractor::class ) );
@@ -82,7 +82,7 @@ class EntityReferenceExtractorDelegatorTest extends TestCase {
 		return [
 			[ [ 'string', 'string' ] ],
 			[ [ 1, 2, 3 ] ],
-			[ [ function () {
+			[ [ static function () {
 			}, null ] ],
 		];
 	}
diff --git a/repo/tests/phpunit/includes/EntityReferenceExtractors/StatementEntityReferenceExtractorTest.php b/repo/tests/phpunit/includes/EntityReferenceExtractors/StatementEntityReferenceExtractorTest.php
index dc5a3bc..9e81e16 100644
--- a/repo/tests/phpunit/includes/EntityReferenceExtractors/StatementEntityReferenceExtractorTest.php
+++ b/repo/tests/phpunit/includes/EntityReferenceExtractors/StatementEntityReferenceExtractorTest.php
@@ -106,7 +106,7 @@ class StatementEntityReferenceExtractorTest extends TestCase {
 	private function getMockEntityIdParser() {
 		$entityIdParser = $this->createMock( SuffixEntityIdParser::class );
 		$entityIdParser->method( 'parse' )
-			->willReturnCallback( function ( $id ) {
+			->willReturnCallback( static function ( $id ) {
 				return new ItemId(
 					substr( $id, strlen( self::UNIT_PREFIX ) )
 				);
diff --git a/repo/tests/phpunit/includes/EntityTypesTest.php b/repo/tests/phpunit/includes/EntityTypesTest.php
index 7f05768..03a9e1e 100644
--- a/repo/tests/phpunit/includes/EntityTypesTest.php
+++ b/repo/tests/phpunit/includes/EntityTypesTest.php
@@ -26,7 +26,7 @@ class EntityTypesTest extends \PHPUnit\Framework\TestCase {
 
 	public static function provideEntityTypes() {
 		return array_map(
-			function( $entityType ) {
+			static function( $entityType ) {
 				return [ $entityType ];
 			},
 			array_keys( self::getRegistry() )
diff --git a/repo/tests/phpunit/includes/FederatedProperties/Api/RemoveClaimsTest.php b/repo/tests/phpunit/includes/FederatedProperties/Api/RemoveClaimsTest.php
index 252a425..f5154bd 100644
--- a/repo/tests/phpunit/includes/FederatedProperties/Api/RemoveClaimsTest.php
+++ b/repo/tests/phpunit/includes/FederatedProperties/Api/RemoveClaimsTest.php
@@ -47,7 +47,7 @@ class RemoveClaimsTest extends FederatedPropertiesApiTestCase {
 
 		$params = [
 			'action' => 'wbremoveclaims',
-			'claim' => implode( '|', array_map( function( $statement ) {
+			'claim' => implode( '|', array_map( static function( $statement ) {
 				return $statement->getGuid();
 			}, $statements ) ),
 		];
diff --git a/repo/tests/phpunit/includes/FederatedProperties/Api/RemoveQualifiersTest.php b/repo/tests/phpunit/includes/FederatedProperties/Api/RemoveQualifiersTest.php
index d17ef25..501396b 100644
--- a/repo/tests/phpunit/includes/FederatedProperties/Api/RemoveQualifiersTest.php
+++ b/repo/tests/phpunit/includes/FederatedProperties/Api/RemoveQualifiersTest.php
@@ -43,7 +43,7 @@ class RemoveQualifiersTest extends FederatedPropertiesApiTestCase {
 		$entity->getStatements()->addStatement( $statement );
 
 		$hashes = array_map(
-			function( Snak $qualifier ) {
+			static function( Snak $qualifier ) {
 				return $qualifier->getHash();
 			},
 			iterator_to_array( $statement->getQualifiers() )
diff --git a/repo/tests/phpunit/includes/FederatedProperties/ApiEntitySearchHelperTest.php b/repo/tests/phpunit/includes/FederatedProperties/ApiEntitySearchHelperTest.php
index 7d780d0..29c058d 100644
--- a/repo/tests/phpunit/includes/FederatedProperties/ApiEntitySearchHelperTest.php
+++ b/repo/tests/phpunit/includes/FederatedProperties/ApiEntitySearchHelperTest.php
@@ -223,7 +223,7 @@ class ApiEntitySearchHelperTest extends TestCase {
 	}
 
 	private function getResponseDataForId( array $searchResponses, $resultId ) {
-		$searchResponses = array_filter( $searchResponses, function ( $response ) use ( $resultId ) {
+		$searchResponses = array_filter( $searchResponses, static function ( $response ) use ( $resultId ) {
 			return $response->id === $resultId;
 		} );
 		if ( count( $searchResponses ) > 1 ) {
diff --git a/repo/tests/phpunit/includes/FederatedProperties/Hooks/DifferenceEngineViewHeaderHookHandlerTest.php b/repo/tests/phpunit/includes/FederatedProperties/Hooks/DifferenceEngineViewHeaderHookHandlerTest.php
index 035aa46..f119553 100644
--- a/repo/tests/phpunit/includes/FederatedProperties/Hooks/DifferenceEngineViewHeaderHookHandlerTest.php
+++ b/repo/tests/phpunit/includes/FederatedProperties/Hooks/DifferenceEngineViewHeaderHookHandlerTest.php
@@ -173,11 +173,11 @@ class DifferenceEngineViewHeaderHookHandlerTest extends TestCase {
 	}
 
 	private function getRevisionRecords() {
-		$availableProperties = array_map( function( $snak ) {
+		$availableProperties = array_map( static function( $snak ) {
 			return $snak->getPropertyId();
 		}, $this->entity->getStatements()->getAllSnaks() );
 
-		$rows = array_map( function ( $prop ) {
+		$rows = array_map( static function ( $prop ) {
 			$object = new MutableRevisionRecord( Title::newFromTextThrow( $prop->getSerialization() ) );
 			$object->setComment( new CommentStoreComment(
 				null,
diff --git a/repo/tests/phpunit/includes/FederatedProperties/ParserOutput/FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecoratorTest.php b/repo/tests/phpunit/includes/FederatedProperties/ParserOutput/FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecoratorTest.php
index b0f7750..7594fce 100644
--- a/repo/tests/phpunit/includes/FederatedProperties/ParserOutput/FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecoratorTest.php
+++ b/repo/tests/phpunit/includes/FederatedProperties/ParserOutput/FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecoratorTest.php
@@ -83,10 +83,10 @@ class FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecoratorTest ext
 		) use (
 			$expectedIds
 		) {
-			$expectedIdStrings = array_map( function( EntityId $id ) {
+			$expectedIdStrings = array_map( static function( EntityId $id ) {
 				return $id->getSerialization();
 			}, $expectedIds );
-			$entityIdStrings = array_map( function( EntityId $id ) {
+			$entityIdStrings = array_map( static function( EntityId $id ) {
 				return $id->getSerialization();
 			}, $entityIds );
 
diff --git a/repo/tests/phpunit/includes/Hooks/EditFilterHookRunnerTest.php b/repo/tests/phpunit/includes/Hooks/EditFilterHookRunnerTest.php
index 84e90c8..9a7dc0b 100644
--- a/repo/tests/phpunit/includes/Hooks/EditFilterHookRunnerTest.php
+++ b/repo/tests/phpunit/includes/Hooks/EditFilterHookRunnerTest.php
@@ -40,7 +40,7 @@ class EditFilterHookRunnerTest extends MediaWikiIntegrationTestCase {
 
 		$entityTitleLookup = $this->createMock( EntityTitleStoreLookup::class );
 		$entityTitleLookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				return Title::newFromTextThrow( $id->getSerialization(), NS_MAIN );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Hooks/Formatters/EntityLinkFormatterFactoryTest.php b/repo/tests/phpunit/includes/Hooks/Formatters/EntityLinkFormatterFactoryTest.php
index 4277bff..3e7ce64 100644
--- a/repo/tests/phpunit/includes/Hooks/Formatters/EntityLinkFormatterFactoryTest.php
+++ b/repo/tests/phpunit/includes/Hooks/Formatters/EntityLinkFormatterFactoryTest.php
@@ -94,7 +94,7 @@ class EntityLinkFormatterFactoryTest extends MediaWikiIntegrationTestCase {
 			[ [ 'asdf' ] ],
 			[ [ 1, 2, 3 ] ],
 			[ [
-				'foo' => function () {
+				'foo' => static function () {
 				},
 				'bar' => null,
 			] ],
diff --git a/repo/tests/phpunit/includes/Hooks/HtmlPageLinkRendererEndHookHandlerTestBase.php b/repo/tests/phpunit/includes/Hooks/HtmlPageLinkRendererEndHookHandlerTestBase.php
index 722b005..c8d851e 100644
--- a/repo/tests/phpunit/includes/Hooks/HtmlPageLinkRendererEndHookHandlerTestBase.php
+++ b/repo/tests/phpunit/includes/Hooks/HtmlPageLinkRendererEndHookHandlerTestBase.php
@@ -125,10 +125,10 @@ abstract class HtmlPageLinkRendererEndHookHandlerTestBase extends MediaWikiLangT
 		$languageFactory = $this->getServiceContainer()->getLanguageFactory();
 
 		return new EntityLinkFormatterFactory( $titleTextLookup, $languageFactory, [
-			'item' => function( $language ) use ( $titleTextLookup, $languageFactory ) {
+			'item' => static function( $language ) use ( $titleTextLookup, $languageFactory ) {
 				return new DefaultEntityLinkFormatter( $language, $titleTextLookup, $languageFactory );
 			},
-			'property' => function( $language ) use ( $titleTextLookup, $languageFactory ) {
+			'property' => static function( $language ) use ( $titleTextLookup, $languageFactory ) {
 				return new DefaultEntityLinkFormatter( $language, $titleTextLookup, $languageFactory );
 			},
 		] );
@@ -179,7 +179,7 @@ abstract class HtmlPageLinkRendererEndHookHandlerTestBase extends MediaWikiLangT
 		$termLookup = $this->createMock( TermLookup::class );
 
 		$termLookup->method( 'getLabels' )
-			->willReturnCallback( function ( EntityId $id ) {
+			->willReturnCallback( static function ( EntityId $id ) {
 				switch ( $id->getSerialization() ) {
 					case self::ITEM_WITH_LABEL:
 					case self::ITEM_LABEL_NO_DESCRIPTION:
@@ -198,7 +198,7 @@ abstract class HtmlPageLinkRendererEndHookHandlerTestBase extends MediaWikiLangT
 			} );
 
 		$termLookup->method( 'getDescriptions' )
-			->willReturnCallback( function ( EntityId $id ) {
+			->willReturnCallback( static function ( EntityId $id ) {
 				switch ( $id->getSerialization() ) {
 					case self::ITEM_WITH_LABEL:
 						return [ 'en' => self::DUMMY_DESCRIPTION ];
@@ -234,7 +234,7 @@ abstract class HtmlPageLinkRendererEndHookHandlerTestBase extends MediaWikiLangT
 	private function getInterwikiLookup() {
 		$lookup = $this->createMock( InterwikiLookup::class );
 		$lookup->method( 'isValidInterwiki' )
-			->willReturnCallback( function( $interwiki ) {
+			->willReturnCallback( static function( $interwiki ) {
 				return $interwiki === self::FOREIGN_REPO_PREFIX;
 			} );
 		return $lookup;
diff --git a/repo/tests/phpunit/includes/Hooks/LabelPrefetchHookHandlerTestBase.php b/repo/tests/phpunit/includes/Hooks/LabelPrefetchHookHandlerTestBase.php
index d951c27..ab0c748 100644
--- a/repo/tests/phpunit/includes/Hooks/LabelPrefetchHookHandlerTestBase.php
+++ b/repo/tests/phpunit/includes/Hooks/LabelPrefetchHookHandlerTestBase.php
@@ -105,10 +105,10 @@ abstract class LabelPrefetchHookHandlerTestBase extends TestCase {
 			$expectedTermTypes,
 			$expectedLanguageCodes
 		) {
-			$expectedIdStrings = array_map( function( EntityId $id ) {
+			$expectedIdStrings = array_map( static function( EntityId $id ) {
 				return $id->getSerialization();
 			}, $expectedIds );
-			$entityIdStrings = array_map( function( EntityId $id ) {
+			$entityIdStrings = array_map( static function( EntityId $id ) {
 				return $id->getSerialization();
 			}, $entityIds );
 
diff --git a/repo/tests/phpunit/includes/Hooks/PageHistoryPagerHookHandlerTest.php b/repo/tests/phpunit/includes/Hooks/PageHistoryPagerHookHandlerTest.php
index e195dc0..45ee902 100644
--- a/repo/tests/phpunit/includes/Hooks/PageHistoryPagerHookHandlerTest.php
+++ b/repo/tests/phpunit/includes/Hooks/PageHistoryPagerHookHandlerTest.php
@@ -105,12 +105,12 @@ class PageHistoryPagerHookHandlerTest extends TestCase {
 	}
 
 	private function setupResultWithSummaries( StatementList $statementList ) {
-		$availableProperties = array_map( function( $snak ) {
+		$availableProperties = array_map( static function( $snak ) {
 			return $snak->getPropertyId();
 		}, $statementList->getAllSnaks() );
 
 		$i = 0;
-		$summaries = array_map( function ( $prop ) use ( &$i ) {
+		$summaries = array_map( static function ( $prop ) use ( &$i ) {
 			$i++;
 			$object = (object)[
 				'rev_comment_text' => "/* wbsetclaim-update:1||1 */ [[Property:{$prop->getSerialization()}]]: foo [[Q$i]] bar.",
diff --git a/repo/tests/phpunit/includes/Hooks/RecentChangeSaveHookHandlerTest.php b/repo/tests/phpunit/includes/Hooks/RecentChangeSaveHookHandlerTest.php
index d906598..69eeac9 100644
--- a/repo/tests/phpunit/includes/Hooks/RecentChangeSaveHookHandlerTest.php
+++ b/repo/tests/phpunit/includes/Hooks/RecentChangeSaveHookHandlerTest.php
@@ -52,7 +52,7 @@ class RecentChangeSaveHookHandlerTest extends MediaWikiIntegrationTestCase {
 
 		$this->changeHolder = new ChangeHolder();
 		$this->changeStore = $this->createStub( ChangeStore::class );
-		$this->changeStore->method( 'saveChange' )->willReturnCallback( function ( $change ) {
+		$this->changeStore->method( 'saveChange' )->willReturnCallback( static function ( $change ) {
 			$change->setField( 'id', 123 );
 		} );
 		$this->centralIdLookup = null; // CentralIdLookupFactory::getNonLocalLookup() may return null in the hook's factory function
@@ -308,7 +308,7 @@ class RecentChangeSaveHookHandlerTest extends MediaWikiIntegrationTestCase {
 	private function newStubRecentChangeWithAttributes( array $attributes ): RecentChange {
 		$rc = $this->createStub( RecentChange::class );
 		$rc->method( 'getAttribute' )
-			->willReturnCallback( function ( $key ) use ( $attributes ) {
+			->willReturnCallback( static function ( $key ) use ( $attributes ) {
 				return $attributes[$key] ?? null;
 			} );
 
diff --git a/repo/tests/phpunit/includes/Hooks/ShowSearchHitHandlerTest.php b/repo/tests/phpunit/includes/Hooks/ShowSearchHitHandlerTest.php
index a1a6650..ee7ed83 100644
--- a/repo/tests/phpunit/includes/Hooks/ShowSearchHitHandlerTest.php
+++ b/repo/tests/phpunit/includes/Hooks/ShowSearchHitHandlerTest.php
@@ -51,7 +51,7 @@ class ShowSearchHitHandlerTest extends MediaWikiIntegrationTestCase {
 		$searchPage = $this->createMock( SpecialSearch::class );
 		$searchPage->method( 'msg' )
 			->willReturnCallback(
-				function ( ...$args ) {
+				static function ( ...$args ) {
 					return new RawMessage( implode( ",", $args ) );
 				}
 			);
@@ -123,7 +123,7 @@ class ShowSearchHitHandlerTest extends MediaWikiIntegrationTestCase {
 		$entityIdLookup = $this->createMock( EntityIdLookup::class );
 
 		$entityIdLookup->method( 'getEntityIdForTitle' )
-			->willReturnCallback( function( Title $title ) {
+			->willReturnCallback( static function( Title $title ) {
 				if ( preg_match( '/^Q(\d+)$/', $title->getText(), $m ) ) {
 					return new ItemId( $m[0] );
 				}
@@ -171,7 +171,7 @@ class ShowSearchHitHandlerTest extends MediaWikiIntegrationTestCase {
 		$mock->method( 'getFetchLanguageCodes' )
 			->willReturn( $languages );
 		$mock->method( 'extractPreferredValue' )
-			->willReturnCallback( function ( $sourceData ) use ( $languages ) {
+			->willReturnCallback( static function ( $sourceData ) use ( $languages ) {
 				foreach ( $languages as $language ) {
 					if ( isset( $sourceData[$language] ) ) {
 						return [ 'language' => $language, 'value' => $sourceData[$language] ];
@@ -190,7 +190,7 @@ class ShowSearchHitHandlerTest extends MediaWikiIntegrationTestCase {
 		$entityLookup = $this->createMock( EntityLookup::class );
 		if ( isset( $entities ) ) {
 			$entityLookup->method( 'getEntity' )
-				->willReturnCallback( function ( ItemId $id ) use ( $entities ) {
+				->willReturnCallback( static function ( ItemId $id ) use ( $entities ) {
 					$key = $id->getSerialization();
 					return $entities[$key];
 				} );
diff --git a/repo/tests/phpunit/includes/Hooks/SummaryParsingPrefetchHelperTest.php b/repo/tests/phpunit/includes/Hooks/SummaryParsingPrefetchHelperTest.php
index 4ff1ea2..40dc9a1 100644
--- a/repo/tests/phpunit/includes/Hooks/SummaryParsingPrefetchHelperTest.php
+++ b/repo/tests/phpunit/includes/Hooks/SummaryParsingPrefetchHelperTest.php
@@ -61,7 +61,7 @@ class SummaryParsingPrefetchHelperTest extends TestCase {
 
 		$this->assertSameSize( $expected, $actualOutput );
 
-		$stringOutput = array_map( function ( $propId ) {
+		$stringOutput = array_map( static function ( $propId ) {
 			return $propId->getSerialization();
 		}, $actualOutput );
 
diff --git a/repo/tests/phpunit/includes/IO/EntityIdReaderTest.php b/repo/tests/phpunit/includes/IO/EntityIdReaderTest.php
index d473910..a210907 100644
--- a/repo/tests/phpunit/includes/IO/EntityIdReaderTest.php
+++ b/repo/tests/phpunit/includes/IO/EntityIdReaderTest.php
@@ -33,7 +33,7 @@ class EntityIdReaderTest extends \PHPUnit\Framework\TestCase {
 	}
 
 	protected function getIdStrings( array $entityIds ) {
-		return array_map( function( EntityId $id ) {
+		return array_map( static function( EntityId $id ) {
 			return $id->getSerialization();
 		}, $entityIds );
 	}
diff --git a/repo/tests/phpunit/includes/Interactors/ItemMergeInteractorTest.php b/repo/tests/phpunit/includes/Interactors/ItemMergeInteractorTest.php
index 4a0b30a..715889b 100644
--- a/repo/tests/phpunit/includes/Interactors/ItemMergeInteractorTest.php
+++ b/repo/tests/phpunit/includes/Interactors/ItemMergeInteractorTest.php
@@ -100,7 +100,7 @@ class ItemMergeInteractorTest extends MediaWikiIntegrationTestCase {
 	private function getPermissionChecker(): EntityPermissionChecker {
 		$permissionChecker = $this->createMock( EntityPermissionChecker::class );
 
-		$callback = function ( User $user ) {
+		$callback = static function ( User $user ) {
 			if ( $user->getName() === self::USER_NAME_WITHOUT_PERMISSION ) {
 				return Status::newFatal( 'permissiondenied' );
 			} else {
diff --git a/repo/tests/phpunit/includes/Interactors/RedirectCreationInteractorTest.php b/repo/tests/phpunit/includes/Interactors/RedirectCreationInteractorTest.php
index f101d02..a5f711f 100644
--- a/repo/tests/phpunit/includes/Interactors/RedirectCreationInteractorTest.php
+++ b/repo/tests/phpunit/includes/Interactors/RedirectCreationInteractorTest.php
@@ -72,7 +72,7 @@ class RedirectCreationInteractorTest extends \PHPUnit\Framework\TestCase {
 		$permissionChecker = $this->createMock( EntityPermissionChecker::class );
 
 		$permissionChecker->method( 'getPermissionStatusForEntityId' )
-			->willReturnCallback( function( User $user ) {
+			->willReturnCallback( static function( User $user ) {
 				$userWithoutPermissionName = 'UserWithoutPermission';
 
 				if ( $user->getName() === $userWithoutPermissionName ) {
diff --git a/repo/tests/phpunit/includes/Interactors/TokenCheckInteractorTest.php b/repo/tests/phpunit/includes/Interactors/TokenCheckInteractorTest.php
index b9a0218..9e27294 100644
--- a/repo/tests/phpunit/includes/Interactors/TokenCheckInteractorTest.php
+++ b/repo/tests/phpunit/includes/Interactors/TokenCheckInteractorTest.php
@@ -27,7 +27,7 @@ class TokenCheckInteractorTest extends \PHPUnit\Framework\TestCase {
 		$user = $this->createMock( User::class );
 		$user->method( 'matchEditToken' )
 			->willReturnCallback(
-				function ( $token ) {
+				static function ( $token ) {
 					return $token === 'VALID';
 				}
 			);
diff --git a/repo/tests/phpunit/includes/LinkedData/EntityDataRequestHandlerTest.php b/repo/tests/phpunit/includes/LinkedData/EntityDataRequestHandlerTest.php
index 9ebef21..f741a96 100644
--- a/repo/tests/phpunit/includes/LinkedData/EntityDataRequestHandlerTest.php
+++ b/repo/tests/phpunit/includes/LinkedData/EntityDataRequestHandlerTest.php
@@ -111,7 +111,7 @@ class EntityDataRequestHandlerTest extends MediaWikiIntegrationTestCase {
 
 		$entityTitleStoreLookup = $this->createMock( EntityTitleStoreLookup::class );
 		$entityTitleStoreLookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				return Title::newFromTextThrow( $id->getEntityType() . ':' . $id->getSerialization() );
 			} );
 
diff --git a/repo/tests/phpunit/includes/LinkedData/EntityDataSerializationServiceTest.php b/repo/tests/phpunit/includes/LinkedData/EntityDataSerializationServiceTest.php
index d47d1b8..d5ea0cc 100644
--- a/repo/tests/phpunit/includes/LinkedData/EntityDataSerializationServiceTest.php
+++ b/repo/tests/phpunit/includes/LinkedData/EntityDataSerializationServiceTest.php
@@ -96,7 +96,7 @@ class EntityDataSerializationServiceTest extends MediaWikiIntegrationTestCase {
 
 		$entityTitleStoreLookup = $this->createMock( EntityTitleStoreLookup::class );
 		$entityTitleStoreLookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				return Title::newFromTextThrow( $id->getEntityType() . ':' . $id->getSerialization() );
 			} );
 
@@ -453,7 +453,7 @@ class EntityDataSerializationServiceTest extends MediaWikiIntegrationTestCase {
 	private function getMockPropertyDataTypeLookup(): PropertyDataTypeLookup {
 		$mockDataTypeLookup = $this->createMock( PropertyDataTypeLookup::class );
 		$mockDataTypeLookup->method( 'getDataTypeIdForProperty' )
-			->willReturnCallback( function( NumericPropertyId $id ) {
+			->willReturnCallback( static function( NumericPropertyId $id ) {
 				if ( $id->getSerialization() === 'P999' ) {
 					throw new PropertyDataTypeLookupException( $id );
 				}
diff --git a/repo/tests/phpunit/includes/LinkedData/EntityDataUriManagerTest.php b/repo/tests/phpunit/includes/LinkedData/EntityDataUriManagerTest.php
index 71d54fb..db4e4f3 100644
--- a/repo/tests/phpunit/includes/LinkedData/EntityDataUriManagerTest.php
+++ b/repo/tests/phpunit/includes/LinkedData/EntityDataUriManagerTest.php
@@ -26,7 +26,7 @@ class EntityDataUriManagerTest extends MediaWikiIntegrationTestCase {
 	protected function makeUriManager() {
 		$titleLookup = $this->createMock( EntityTitleLookup::class );
 		$titleLookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				return Title::newFromTextThrow( $id->getEntityType() . ':' . $id->getSerialization() );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Localizer/ChangeOpValidationExceptionLocalizerTest.php b/repo/tests/phpunit/includes/Localizer/ChangeOpValidationExceptionLocalizerTest.php
index fbca0a4..a393a5c 100644
--- a/repo/tests/phpunit/includes/Localizer/ChangeOpValidationExceptionLocalizerTest.php
+++ b/repo/tests/phpunit/includes/Localizer/ChangeOpValidationExceptionLocalizerTest.php
@@ -72,7 +72,7 @@ class ChangeOpValidationExceptionLocalizerTest extends \PHPUnit\Framework\TestCa
 		$mock = $this->createMock( ValueFormatter::class );
 		$mock->method( 'format' )
 			->willReturnCallback(
-				function ( $param ) {
+				static function ( $param ) {
 					if ( is_array( $param ) ) {
 						$param = implode( '|', $param );
 					}
diff --git a/repo/tests/phpunit/includes/Localizer/MessageParameterFormatterTest.php b/repo/tests/phpunit/includes/Localizer/MessageParameterFormatterTest.php
index 96e1d33..2bd9a85 100644
--- a/repo/tests/phpunit/includes/Localizer/MessageParameterFormatterTest.php
+++ b/repo/tests/phpunit/includes/Localizer/MessageParameterFormatterTest.php
@@ -66,7 +66,7 @@ class MessageParameterFormatterTest extends \PHPUnit\Framework\TestCase {
 		$mock = $this->createMock( ValueFormatter::class );
 		$mock->method( 'format' )
 			->willReturnCallback(
-				function ( DataValue $param ) {
+				static function ( DataValue $param ) {
 					$class = get_class( $param );
 					$value = $param->getArrayValue();
 
@@ -84,7 +84,7 @@ class MessageParameterFormatterTest extends \PHPUnit\Framework\TestCase {
 		$mock = $this->createMock( EntityIdFormatter::class );
 		$mock->method( 'formatEntityId' )
 			->willReturnCallback(
-				function ( EntityId $id ) {
+				static function ( EntityId $id ) {
 					return '[[ENTITYID]]';
 				}
 			);
diff --git a/repo/tests/phpunit/includes/Merge/StatementsMergerTest.php b/repo/tests/phpunit/includes/Merge/StatementsMergerTest.php
index d5b8cc0..c84390b 100644
--- a/repo/tests/phpunit/includes/Merge/StatementsMergerTest.php
+++ b/repo/tests/phpunit/includes/Merge/StatementsMergerTest.php
@@ -151,7 +151,7 @@ class StatementsMergerTest extends TestCase {
 		];
 
 		yield 'source and target both not entities' => [
-			function ( self $self ) {
+			static function ( self $self ) {
 				$nonEntity = $self->createMock( StatementListProvider::class );
 				return [ $nonEntity, clone $nonEntity ];
 			},
diff --git a/repo/tests/phpunit/includes/ParserOutput/DispatchingEntityMetaTagsCreatorFactoryTest.php b/repo/tests/phpunit/includes/ParserOutput/DispatchingEntityMetaTagsCreatorFactoryTest.php
index 63ec0c6..075b5eb 100644
--- a/repo/tests/phpunit/includes/ParserOutput/DispatchingEntityMetaTagsCreatorFactoryTest.php
+++ b/repo/tests/phpunit/includes/ParserOutput/DispatchingEntityMetaTagsCreatorFactoryTest.php
@@ -42,7 +42,7 @@ class DispatchingEntityMetaTagsCreatorFactoryTest extends TestCase {
 	public function testNoEntityMetaTagsReturned() {
 		$factory = new DispatchingEntityMetaTagsCreatorFactory(
 			[
-				'dummy-entity-type' => function() {
+				'dummy-entity-type' => static function() {
 					return null;
 				},
 			]
diff --git a/repo/tests/phpunit/includes/ParserOutput/DispatchingEntityViewFactoryTest.php b/repo/tests/phpunit/includes/ParserOutput/DispatchingEntityViewFactoryTest.php
index d00298c..15747e3 100644
--- a/repo/tests/phpunit/includes/ParserOutput/DispatchingEntityViewFactoryTest.php
+++ b/repo/tests/phpunit/includes/ParserOutput/DispatchingEntityViewFactoryTest.php
@@ -46,7 +46,7 @@ class DispatchingEntityViewFactoryTest extends \PHPUnit\Framework\TestCase {
 	public function testNoEntityViewReturned() {
 		$factory = new DispatchingEntityViewFactory(
 			[
-				'foo' => function() {
+				'foo' => static function() {
 					return null;
 				},
 			]
diff --git a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTestBase.php b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTestBase.php
index e22c6b7..8937716 100644
--- a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTestBase.php
+++ b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTestBase.php
@@ -49,7 +49,7 @@ class EntityParserOutputGeneratorTestBase extends MediaWikiIntegrationTestCase {
 		$fallbackChain = $this->createMock( TermLanguageFallbackChain::class );
 
 		$fallbackChain->method( 'extractPreferredValue' )
-			->willReturnCallback( function( $labels ) {
+			->willReturnCallback( static function( $labels ) {
 				if ( array_key_exists( 'en', $labels ) ) {
 					return [
 						'value' => $labels['en'],
@@ -172,7 +172,7 @@ class EntityParserOutputGeneratorTestBase extends MediaWikiIntegrationTestCase {
 		$configBuilder = $this->createMock( ParserOutputJsConfigBuilder::class );
 
 		$configBuilder->method( 'build' )
-			->willReturnCallback( function( $ignore, $parserOutput ) {
+			->willReturnCallback( static function( $ignore, $parserOutput ) {
 				$parserOutput->setJsConfigVar( '<JS>', '<JS>' );
 			} );
 
@@ -186,7 +186,7 @@ class EntityParserOutputGeneratorTestBase extends MediaWikiIntegrationTestCase {
 		$entityTitleLookup = $this->createMock( EntityTitleLookup::class );
 
 		$entityTitleLookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				return Title::makeTitle(
 					NS_MAIN,
 					$id->getEntityType() . ':' . $id->getSerialization()
diff --git a/repo/tests/phpunit/includes/ParserOutput/ExternalLinksDataUpdaterTest.php b/repo/tests/phpunit/includes/ParserOutput/ExternalLinksDataUpdaterTest.php
index dd75c7e..2f55cb1 100644
--- a/repo/tests/phpunit/includes/ParserOutput/ExternalLinksDataUpdaterTest.php
+++ b/repo/tests/phpunit/includes/ParserOutput/ExternalLinksDataUpdaterTest.php
@@ -26,7 +26,7 @@ class ExternalLinksDataUpdaterTest extends \PHPUnit\Framework\TestCase {
 	private function newInstance() {
 		$matcher = $this->createMock( PropertyDataTypeMatcher::class );
 		$matcher->method( 'isMatchingDataType' )
-			->willReturnCallback( function( PropertyId $id, $type ) {
+			->willReturnCallback( static function( PropertyId $id, $type ) {
 				return $id->getSerialization() === 'P1';
 			} );
 
@@ -53,7 +53,7 @@ class ExternalLinksDataUpdaterTest extends \PHPUnit\Framework\TestCase {
 		$parserOutput = $this->createMock( ParserOutput::class );
 		$parserOutput->expects( $this->exactly( count( $expected ) ) )
 			->method( 'addExternalLink' )
-			->willReturnCallback( function( $url ) use ( &$actual ) {
+			->willReturnCallback( static function( $url ) use ( &$actual ) {
 				$actual[] = $url;
 			} );
 
diff --git a/repo/tests/phpunit/includes/ParserOutput/ImageLinksDataUpdaterTest.php b/repo/tests/phpunit/includes/ParserOutput/ImageLinksDataUpdaterTest.php
index 8c4cff1..4dca313 100644
--- a/repo/tests/phpunit/includes/ParserOutput/ImageLinksDataUpdaterTest.php
+++ b/repo/tests/phpunit/includes/ParserOutput/ImageLinksDataUpdaterTest.php
@@ -28,7 +28,7 @@ class ImageLinksDataUpdaterTest extends \PHPUnit\Framework\TestCase {
 	private function newInstance() {
 		$matcher = $this->createMock( PropertyDataTypeMatcher::class );
 		$matcher->method( 'isMatchingDataType' )
-			->willReturnCallback( function( PropertyId $id, $type ) {
+			->willReturnCallback( static function( PropertyId $id, $type ) {
 				return $id->getSerialization() === 'P1';
 			} );
 		$repoGroup = $this->createMock( RepoGroup::class );
diff --git a/repo/tests/phpunit/includes/ParserOutput/ParserOutputJsConfigBuilderTest.php b/repo/tests/phpunit/includes/ParserOutput/ParserOutputJsConfigBuilderTest.php
index 9abc0ac..f4f3b5d 100644
--- a/repo/tests/phpunit/includes/ParserOutput/ParserOutputJsConfigBuilderTest.php
+++ b/repo/tests/phpunit/includes/ParserOutput/ParserOutputJsConfigBuilderTest.php
@@ -51,7 +51,7 @@ class ParserOutputJsConfigBuilderTest extends MediaWikiIntegrationTestCase {
 			->expects( $this->atLeastOnce() )
 			->method( 'setJsConfigVar' )
 			->with( $this->anything(), $this->anything() )
-			->willReturnCallback( function( $name, $value ) use ( &$sawOnce, $expectedId ) {
+			->willReturnCallback( static function( $name, $value ) use ( &$sawOnce, $expectedId ) {
 				if ( $name === 'wbEntityId' && $value === $expectedId ) {
 					$sawOnce = true;
 				}
diff --git a/repo/tests/phpunit/includes/ParserOutput/ReferencedEntitiesDataUpdaterTest.php b/repo/tests/phpunit/includes/ParserOutput/ReferencedEntitiesDataUpdaterTest.php
index fec8644..bb4f42c 100644
--- a/repo/tests/phpunit/includes/ParserOutput/ReferencedEntitiesDataUpdaterTest.php
+++ b/repo/tests/phpunit/includes/ParserOutput/ReferencedEntitiesDataUpdaterTest.php
@@ -80,14 +80,14 @@ class ReferencedEntitiesDataUpdaterTest extends MediaWikiIntegrationTestCase {
 		$parserOutput = $this->createMock( ParserOutput::class );
 		$parserOutput->expects( $this->exactly( count( $expectedEntityIds ) ) )
 			->method( 'addLink' )
-			->willReturnCallback( function( Title $title ) use ( &$actual ) {
+			->willReturnCallback( static function( Title $title ) use ( &$actual ) {
 				$actual[] = $title->getText();
 			} );
 
 		$instance = $this->newInstance( $item, $expectedEntityIds );
 
 		$instance->updateParserOutput( $parserOutput, $item );
-		$expectedEntityIdStrings = array_map( function ( EntityId $id ) {
+		$expectedEntityIdStrings = array_map( static function ( EntityId $id ) {
 			return $id->getSerialization();
 		}, $expectedEntityIds );
 		$this->assertArrayEquals( $expectedEntityIdStrings, $actual );
diff --git a/repo/tests/phpunit/includes/ParserOutput/TextInjectorTest.php b/repo/tests/phpunit/includes/ParserOutput/TextInjectorTest.php
index 65c0570..4d9ccf4 100644
--- a/repo/tests/phpunit/includes/ParserOutput/TextInjectorTest.php
+++ b/repo/tests/phpunit/includes/ParserOutput/TextInjectorTest.php
@@ -45,7 +45,7 @@ class TextInjectorTest extends \PHPUnit\Framework\TestCase {
 
 		$expected = 'Good morning to you!';
 
-		$actual = $injector->inject( $text, function ( ...$args ) {
+		$actual = $injector->inject( $text, static function ( ...$args ) {
 			return implode( ' ', $args );
 		} );
 
diff --git a/repo/tests/phpunit/includes/Parsers/TimeParserFactoryTest.php b/repo/tests/phpunit/includes/Parsers/TimeParserFactoryTest.php
index db9e581..b71a3a0 100644
--- a/repo/tests/phpunit/includes/Parsers/TimeParserFactoryTest.php
+++ b/repo/tests/phpunit/includes/Parsers/TimeParserFactoryTest.php
@@ -30,7 +30,7 @@ class TimeParserFactoryTest extends \PHPUnit\Framework\TestCase {
 		$monthNameProvider = $this->createMock( MonthNameProvider::class );
 
 		$monthNameProvider->method( 'getLocalizedMonthNames' )
-			->willReturnCallback( function( $languageCode ) {
+			->willReturnCallback( static function( $languageCode ) {
 				$monthNames = [];
 				for ( $i = 1; $i <= 12; $i++ ) {
 					$monthNames[$i] = $languageCode . 'Month' . $i;
@@ -39,7 +39,7 @@ class TimeParserFactoryTest extends \PHPUnit\Framework\TestCase {
 			} );
 
 		$monthNameProvider->method( 'getMonthNumbers' )
-			->willReturnCallback( function( $languageCode ) {
+			->willReturnCallback( static function( $languageCode ) {
 				$numbers = [];
 				for ( $i = 1; $i <= 12; $i++ ) {
 					$numbers[$languageCode . 'Month' . $i] = $i;
diff --git a/repo/tests/phpunit/includes/PropertyDataTypeChangerTest.php b/repo/tests/phpunit/includes/PropertyDataTypeChangerTest.php
index 71cf525..9a28212 100644
--- a/repo/tests/phpunit/includes/PropertyDataTypeChangerTest.php
+++ b/repo/tests/phpunit/includes/PropertyDataTypeChangerTest.php
@@ -127,7 +127,7 @@ class PropertyDataTypeChangerTest extends \PHPUnit\Framework\TestCase {
 				0,
 				 LookupConstants::LATEST_FROM_MASTER
 			)
-			->willReturnCallback( function( NumericPropertyId $propertyId ) {
+			->willReturnCallback( static function( NumericPropertyId $propertyId ) {
 				if ( $propertyId->getSerialization() === 'P42' ) {
 					$property = new Property(
 						new NumericPropertyId( 'P42' ),
diff --git a/repo/tests/phpunit/includes/PropertyServicesTest.php b/repo/tests/phpunit/includes/PropertyServicesTest.php
index 07d44af..7f3fe1b 100644
--- a/repo/tests/phpunit/includes/PropertyServicesTest.php
+++ b/repo/tests/phpunit/includes/PropertyServicesTest.php
@@ -25,10 +25,10 @@ class PropertyServicesTest extends TestCase {
 		$serviceName = 'some-service';
 		$definitions = [
 			$serviceName => [
-				ApiEntitySource::TYPE => function () {
+				ApiEntitySource::TYPE => static function () {
 					return 'api service';
 				},
-				DatabaseEntitySource::TYPE => function () {
+				DatabaseEntitySource::TYPE => static function () {
 					return 'db service';
 				},
 			],
diff --git a/repo/tests/phpunit/includes/Rdf/FullStatementRdfBuilderTest.php b/repo/tests/phpunit/includes/Rdf/FullStatementRdfBuilderTest.php
index d72c630..3e6b212 100644
--- a/repo/tests/phpunit/includes/Rdf/FullStatementRdfBuilderTest.php
+++ b/repo/tests/phpunit/includes/Rdf/FullStatementRdfBuilderTest.php
@@ -75,7 +75,7 @@ class FullStatementRdfBuilderTest extends \MediaWikiIntegrationTestCase {
 
 		$mentionTracker = $this->createMock( EntityMentionListener::class );
 		$mentionTracker->method( 'propertyMentioned' )
-			->willReturnCallback( function( EntityId $id ) use ( &$mentioned ) {
+			->willReturnCallback( static function( EntityId $id ) use ( &$mentioned ) {
 				$key = $id->getSerialization();
 				$mentioned[$key] = $id;
 			} );
@@ -122,7 +122,7 @@ class FullStatementRdfBuilderTest extends \MediaWikiIntegrationTestCase {
 
 	public static function provideAddEntity() {
 		$props = array_map(
-			function ( $data ) {
+			static function ( $data ) {
 				/** @var PropertyId $propertyId */
 				$propertyId = $data[0];
 				return $propertyId->getSerialization();
@@ -172,7 +172,7 @@ class FullStatementRdfBuilderTest extends \MediaWikiIntegrationTestCase {
 
 	public static function provideAddEntityTestCasesWhenPropertiesFromOtherWikibase() {
 		$props = array_map(
-			function ( $data ) {
+			static function ( $data ) {
 				/** @var PropertyId $propertyId */
 				$propertyId = $data[0];
 				return $propertyId->getSerialization();
diff --git a/repo/tests/phpunit/includes/Rdf/NTriplesRdfTestHelper.php b/repo/tests/phpunit/includes/Rdf/NTriplesRdfTestHelper.php
index ddc1801..0b32e86 100644
--- a/repo/tests/phpunit/includes/Rdf/NTriplesRdfTestHelper.php
+++ b/repo/tests/phpunit/includes/Rdf/NTriplesRdfTestHelper.php
@@ -72,7 +72,7 @@ class NTriplesRdfTestHelper {
 
 		if ( $this->allBlanksEqual ) {
 			$nTriples = array_map(
-				function ( $line ) {
+				static function ( $line ) {
 					return preg_replace( '/_:\w+/', '_:#####', $line );
 				},
 				$nTriples
diff --git a/repo/tests/phpunit/includes/Rdf/PropertyStubRdfBuilderTest.php b/repo/tests/phpunit/includes/Rdf/PropertyStubRdfBuilderTest.php
index c9016b2..1f185ce 100644
--- a/repo/tests/phpunit/includes/Rdf/PropertyStubRdfBuilderTest.php
+++ b/repo/tests/phpunit/includes/Rdf/PropertyStubRdfBuilderTest.php
@@ -85,7 +85,7 @@ class PropertyStubRdfBuilderTest extends MediaWikiIntegrationTestCase {
 	private function getPropertyDataTypeLookup(): PropertyDataTypeLookup {
 		$mockDataTypeLookup = $this->createMock( PropertyDataTypeLookup::class );
 		$mockDataTypeLookup->method( 'getDataTypeIdForProperty' )
-			->willReturnCallback( function( NumericPropertyId $id ) {
+			->willReturnCallback( static function( NumericPropertyId $id ) {
 				return 'string';
 			} );
 		return $mockDataTypeLookup;
diff --git a/repo/tests/phpunit/includes/Rdf/RdfBuilderTest.php b/repo/tests/phpunit/includes/Rdf/RdfBuilderTest.php
index 521e642..07cf62f 100644
--- a/repo/tests/phpunit/includes/Rdf/RdfBuilderTest.php
+++ b/repo/tests/phpunit/includes/Rdf/RdfBuilderTest.php
@@ -153,7 +153,7 @@ class RdfBuilderTest extends MediaWikiIntegrationTestCase {
 					$fullStatementRdfBuilderFactory
 				);
 			},
-			'property' => function(
+			'property' => static function(
 				$flavorFlags,
 				RdfVocabulary $vocabulary,
 				RdfWriter $writer,
diff --git a/repo/tests/phpunit/includes/Rdf/SnakRdfBuilderTest.php b/repo/tests/phpunit/includes/Rdf/SnakRdfBuilderTest.php
index 4e8d383..e3a1880 100644
--- a/repo/tests/phpunit/includes/Rdf/SnakRdfBuilderTest.php
+++ b/repo/tests/phpunit/includes/Rdf/SnakRdfBuilderTest.php
@@ -62,7 +62,7 @@ class SnakRdfBuilderTest extends \PHPUnit\Framework\TestCase {
 	): SnakRdfBuilder {
 		$mentionTracker = $this->createMock( EntityMentionListener::class );
 		$mentionTracker->method( 'propertyMentioned' )
-			->willReturnCallback( function( EntityId $id ) use ( &$mentioned ) {
+			->willReturnCallback( static function( EntityId $id ) use ( &$mentioned ) {
 				$key = $id->getSerialization();
 				$mentioned[$key] = $id;
 			} );
diff --git a/repo/tests/phpunit/includes/Rdf/Values/ExternalIdentifierRdfBuilderTest.php b/repo/tests/phpunit/includes/Rdf/Values/ExternalIdentifierRdfBuilderTest.php
index d9eb413..1ac30cb 100644
--- a/repo/tests/phpunit/includes/Rdf/Values/ExternalIdentifierRdfBuilderTest.php
+++ b/repo/tests/phpunit/includes/Rdf/Values/ExternalIdentifierRdfBuilderTest.php
@@ -39,7 +39,7 @@ class ExternalIdentifierRdfBuilderTest extends \PHPUnit\Framework\TestCase {
 	public function testAddValue() {
 		$uriPatternProvider = $this->createMock( PropertyInfoProvider::class );
 		$uriPatternProvider->method( 'getPropertyInfo' )
-			->willReturnCallback( function( NumericPropertyId $id ) {
+			->willReturnCallback( static function( NumericPropertyId $id ) {
 				return $id->getSerialization() === 'P1' ? 'http://xyzzy.test/vocab/$1' : null;
 			} );
 
diff --git a/repo/tests/phpunit/includes/RepoHooksTest.php b/repo/tests/phpunit/includes/RepoHooksTest.php
index e750fab..e8e3867 100644
--- a/repo/tests/phpunit/includes/RepoHooksTest.php
+++ b/repo/tests/phpunit/includes/RepoHooksTest.php
@@ -137,7 +137,7 @@ class RepoHooksTest extends MediaWikiIntegrationTestCase {
 
 		$this->overrideMwServices(
 			null,
-			[ 'WikibaseRepo.MobileSite' => function () {
+			[ 'WikibaseRepo.MobileSite' => static function () {
 				return true;
 			} ]
 		);
@@ -319,10 +319,10 @@ XML
 		$importer = $this->getServiceContainer()->getWikiImporterFactory()
 			->getWikiImporter( $source, $this->getTestSysop()->getAuthority() );
 
-		$importer->setNoticeCallback( function() {
+		$importer->setNoticeCallback( static function() {
 			// Do nothing for now. Could collect and compare notices.
 		} );
-		$importer->setPageOutCallback( function() {
+		$importer->setPageOutCallback( static function() {
 		} );
 
 		if ( $expectedException !== null ) {
@@ -342,7 +342,7 @@ XML
 		$parserOutput = $this->createMock( ParserOutput::class );
 		$parserOutput->expects( $this->exactly( 6 ) )
 			->method( 'getExtensionData' )
-			->willReturnCallback( function ( $key ) use ( $altLinks ) {
+			->willReturnCallback( static function ( $key ) use ( $altLinks ) {
 				if ( $key === 'wikibase-alternate-links' ) {
 					return $altLinks;
 				} else {
@@ -392,7 +392,7 @@ XML
 		$pOpts = ParserOptions::newFromAnon();
 
 		$used = [];
-		$pOpts->registerWatcher( function ( $opt ) use ( &$used ) {
+		$pOpts->registerWatcher( static function ( $opt ) use ( &$used ) {
 			$used[$opt] = true;
 		} );
 
diff --git a/repo/tests/phpunit/includes/Specials/HTMLForm/HTMLAliasesFieldTest.php b/repo/tests/phpunit/includes/Specials/HTMLForm/HTMLAliasesFieldTest.php
index ea47953..d95ab5a 100644
--- a/repo/tests/phpunit/includes/Specials/HTMLForm/HTMLAliasesFieldTest.php
+++ b/repo/tests/phpunit/includes/Specials/HTMLForm/HTMLAliasesFieldTest.php
@@ -21,7 +21,7 @@ class HTMLAliasesFieldTest extends MediaWikiIntegrationTestCase {
 		$this->createField(
 			[
 				'fieldname' => 'some-name',
-				'filter-callback' => function () {
+				'filter-callback' => static function () {
 				},
 			]
 		);
diff --git a/repo/tests/phpunit/includes/Specials/HTMLForm/HTMLItemReferenceFieldTest.php b/repo/tests/phpunit/includes/Specials/HTMLForm/HTMLItemReferenceFieldTest.php
index 086151f..0fb5d9a 100644
--- a/repo/tests/phpunit/includes/Specials/HTMLForm/HTMLItemReferenceFieldTest.php
+++ b/repo/tests/phpunit/includes/Specials/HTMLForm/HTMLItemReferenceFieldTest.php
@@ -73,7 +73,7 @@ class HTMLItemReferenceFieldTest extends MediaWikiIntegrationTestCase {
 		$this->givenItemExists( $existingItemId = 'Q1' );
 		$field = $this->createField(
 			[
-				'validation-callback' => function () {
+				'validation-callback' => static function () {
 					return wfMessage( 'some-message' );
 				},
 			]
diff --git a/repo/tests/phpunit/includes/Specials/SpecialAvailableBadgesTest.php b/repo/tests/phpunit/includes/Specials/SpecialAvailableBadgesTest.php
index c8761d0..8947510 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialAvailableBadgesTest.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialAvailableBadgesTest.php
@@ -33,7 +33,7 @@ class SpecialAvailableBadgesTest extends SpecialPageTestBase {
 
 		$entityTitleLookup = $this->createMock( EntityTitleLookup::class );
 		$entityTitleLookup->method( 'getTitleForId' )
-			->willReturnCallback( function ( ItemId $itemId ) {
+			->willReturnCallback( static function ( ItemId $itemId ) {
 				return Title::makeTitle( 0, $itemId->getSerialization() );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Specials/SpecialEntityDataTest.php b/repo/tests/phpunit/includes/Specials/SpecialEntityDataTest.php
index 807f310..f058b03 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialEntityDataTest.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialEntityDataTest.php
@@ -71,7 +71,7 @@ class SpecialEntityDataTest extends SpecialPageTestBase {
 
 		$entityTitleStoreLookup = $this->createMock( EntityTitleStoreLookup::class );
 		$entityTitleStoreLookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				return Title::newFromTextThrow( $id->getEntityType() . ':' . $id->getSerialization() );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Specials/SpecialGoToLinkedPageTest.php b/repo/tests/phpunit/includes/Specials/SpecialGoToLinkedPageTest.php
index f51b32c..525f41f 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialGoToLinkedPageTest.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialGoToLinkedPageTest.php
@@ -38,7 +38,7 @@ class SpecialGoToLinkedPageTest extends SpecialPageTestBase {
 		$mock = $this->createMock( SiteLinkLookup::class );
 
 		$mock->method( 'getLinks' )
-			->willReturnCallback( function( $itemIds, $siteIds ) {
+			->willReturnCallback( static function( $itemIds, $siteIds ) {
 				$result = [ [ '', 'TestPageName' ] ];
 				if ( $siteIds === [ 'dewiki' ] && $itemIds === [ 23 ] ) {
 					return $result;
@@ -64,7 +64,7 @@ class SpecialGoToLinkedPageTest extends SpecialPageTestBase {
 	private function getEntityRedirectTargetLookup(): EntityRedirectTargetLookup {
 		$mock = $this->createMock( EntityRedirectTargetLookup::class );
 		$mock->method( 'getRedirectForEntityId' )
-			->willReturnCallback( function( ItemId $id ) {
+			->willReturnCallback( static function( ItemId $id ) {
 				if ( $id->getSerialization() === 'Q24' ) {
 					return new ItemId( 'Q23' );
 				} else {
@@ -81,7 +81,7 @@ class SpecialGoToLinkedPageTest extends SpecialPageTestBase {
 	private function getEntityIdParser() {
 		$mock = $this->createMock( EntityIdParser::class );
 		$mock->method( 'parse' )
-			->willReturnCallback( function( $itemString ) {
+			->willReturnCallback( static function( $itemString ) {
 				try {
 					return new ItemId( $itemString );
 				} catch ( InvalidArgumentException $ex ) {
@@ -98,7 +98,7 @@ class SpecialGoToLinkedPageTest extends SpecialPageTestBase {
 	private function getEntityLookup() {
 		$mock = $this->createMock( EntityLookup::class );
 		$mock->method( 'hasEntity' )
-			->willReturnCallback( function( ItemId $itemId ) {
+			->willReturnCallback( static function( ItemId $itemId ) {
 				$id = $itemId->getSerialization();
 				return $id === 'Q23' || $id === 'Q24';
 			} );
diff --git a/repo/tests/phpunit/includes/Specials/SpecialItemByTitleTest.php b/repo/tests/phpunit/includes/Specials/SpecialItemByTitleTest.php
index 62fffc0..a2615a8 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialItemByTitleTest.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialItemByTitleTest.php
@@ -47,7 +47,7 @@ class SpecialItemByTitleTest extends SpecialPageTestBase {
 		$mock = $this->createMock( EntityTitleLookup::class );
 
 		$mock->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				return Title::makeTitle( NS_MAIN, $id->getSerialization() );
 			} );
 
@@ -73,7 +73,7 @@ class SpecialItemByTitleTest extends SpecialPageTestBase {
 		$siteLinkLookup = $this->createMock( SiteLinkLookup::class );
 
 		$siteLinkLookup->method( 'getItemIdForLink' )
-			->willReturnCallback( function ( $wiki, $page ) {
+			->willReturnCallback( static function ( $wiki, $page ) {
 				if ( $wiki === self::EXISTING_WIKI && $page === self::EXISTING_PAGE ) {
 					return new ItemId( self::EXISTING_ITEM_ID );
 				} else {
diff --git a/repo/tests/phpunit/includes/Specials/SpecialItemDisambiguationTest.php b/repo/tests/phpunit/includes/Specials/SpecialItemDisambiguationTest.php
index 4cb2b98..516f710 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialItemDisambiguationTest.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialItemDisambiguationTest.php
@@ -46,7 +46,7 @@ class SpecialItemDisambiguationTest extends SpecialPageTestBase {
 	private function getMockItemDisambiguationFactory(): ItemDisambiguationFactory {
 		$mock = $this->createMock( ItemDisambiguation::class );
 		$mock->method( 'getHTML' )
-			->willReturnCallback( function ( $searchResult ) {
+			->willReturnCallback( static function ( $searchResult ) {
 				return '<span class="mock-span" >ItemDisambiguationHTML-' . count( $searchResult ) . '</span>';
 			} );
 
@@ -81,7 +81,7 @@ class SpecialItemDisambiguationTest extends SpecialPageTestBase {
 		} else {
 			$mock->method( 'getRankedSearchResults' )
 				->willReturnCallback(
-					function( $text, $lang, $entityType ) use ( $searchResults ) {
+					static function( $text, $lang, $entityType ) use ( $searchResults ) {
 						if ( $lang !== 'fr' ) {
 							throw new InvalidArgumentException( 'Not a valid language code' );
 						}
diff --git a/repo/tests/phpunit/includes/Specials/SpecialListPropertiesTest.php b/repo/tests/phpunit/includes/Specials/SpecialListPropertiesTest.php
index 9fb9596..70c4e3d 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialListPropertiesTest.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialListPropertiesTest.php
@@ -56,7 +56,7 @@ class SpecialListPropertiesTest extends SpecialPageTestBase {
 	private function getFallbackLabelDescriptionLookup(): FallbackLabelDescriptionLookup {
 		$lookup = $this->createMock( FallbackLabelDescriptionLookup::class );
 		$lookup->method( 'getLabel' )
-			->willReturnCallback( function( PropertyId $id ): TermFallback {
+			->willReturnCallback( static function( PropertyId $id ): TermFallback {
 				return new TermFallback(
 					'en',
 					'Property with label ' . $id->getSerialization(),
diff --git a/repo/tests/phpunit/includes/Specials/SpecialMergeItemsTest.php b/repo/tests/phpunit/includes/Specials/SpecialMergeItemsTest.php
index 75ae44c..2f46489 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialMergeItemsTest.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialMergeItemsTest.php
@@ -94,7 +94,7 @@ class SpecialMergeItemsTest extends SpecialPageTestBase {
 	private function getEntityTitleLookup(): EntityTitleStoreLookup {
 		$entityTitleLookup = $this->createMock( EntityTitleStoreLookup::class );
 		$entityTitleLookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $entityId ) {
+			->willReturnCallback( static function( EntityId $entityId ) {
 				return Title::newFromTextThrow( $entityId->getSerialization() );
 			} );
 
@@ -113,7 +113,7 @@ class SpecialMergeItemsTest extends SpecialPageTestBase {
 
 		$exceptionLocalizer = $this->createMock( ExceptionLocalizer::class );
 		$exceptionLocalizer->method( 'getExceptionMessage' )
-			->willReturnCallback( function( Exception $ex ) {
+			->willReturnCallback( static function( Exception $ex ) {
 				if ( $ex instanceof Error ) {
 					throw $ex;
 				}
@@ -244,7 +244,7 @@ class SpecialMergeItemsTest extends SpecialPageTestBase {
 	private function getPermissionCheckers(): EntityPermissionChecker {
 		$permissionChecker = $this->createMock( EntityPermissionChecker::class );
 
-		$callback = function ( User $user ) {
+		$callback = static function ( User $user ) {
 			$name = 'UserWithoutPermission';
 			if ( $user->getName() === $name ) {
 				return Status::newFatal( 'permissiondenied' );
diff --git a/repo/tests/phpunit/includes/Specials/SpecialNewItemTest.php b/repo/tests/phpunit/includes/Specials/SpecialNewItemTest.php
index 42f7ef2..d1db78c 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialNewItemTest.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialNewItemTest.php
@@ -516,7 +516,7 @@ class SpecialNewItemTest extends SpecialNewEntityTestCase {
 		$siteMock->setGlobalId( $existingSiteId );
 		$siteMock->setGroup( 'wikiblah' );
 		$siteMock->method( 'normalizePageName' )
-			->willReturnCallback( function ( $pageName, $followRedirect ) {
+			->willReturnCallback( static function ( $pageName, $followRedirect ) {
 				if ( $followRedirect === MediaWikiPageNameNormalizer::FOLLOW_REDIRECT ) {
 					return "Redirect target of $pageName";
 				} else {
@@ -551,7 +551,7 @@ class SpecialNewItemTest extends SpecialNewEntityTestCase {
 		/** @var MockObject|ValueValidator $validatorMock */
 		$validatorMock = $this->createMock( ValueValidator::class );
 		$validatorMock->method( 'validate' )->willReturnCallback(
-			function ( $value ) {
+			static function ( $value ) {
 				if ( $value === 'TOO_LONG_ERROR' ) {
 					return Result::newError( [ Error::newError( 'This is the too long error', null, 'too-long' ) ] );
 				}
diff --git a/repo/tests/phpunit/includes/Specials/SpecialNewPropertyTest.php b/repo/tests/phpunit/includes/Specials/SpecialNewPropertyTest.php
index c936c7c..e7339e7 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialNewPropertyTest.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialNewPropertyTest.php
@@ -370,7 +370,7 @@ class SpecialNewPropertyTest extends SpecialNewEntityTestCase {
 		/** @var MockObject|ValueValidator $validatorMock */
 		$validatorMock = $this->createMock( ValueValidator::class );
 		$validatorMock->method( 'validate' )->willReturnCallback(
-			function ( $value ) {
+			static function ( $value ) {
 				if ( $value === 'TOO_LONG_ERROR' ) {
 					return Result::newError( [ Error::newError( 'This is the too long error', null, 'too-long' ) ] );
 				}
diff --git a/repo/tests/phpunit/includes/Specials/SpecialRedirectEntityTest.php b/repo/tests/phpunit/includes/Specials/SpecialRedirectEntityTest.php
index 579263b..0ecfb79 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialRedirectEntityTest.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialRedirectEntityTest.php
@@ -92,7 +92,7 @@ class SpecialRedirectEntityTest extends SpecialPageTestBase {
 	protected function newSpecialPage(): SpecialRedirectEntity {
 		$exceptionLocalizer = $this->createMock( ExceptionLocalizer::class );
 		$exceptionLocalizer->method( 'getExceptionMessage' )
-			->willReturnCallback( function( Exception $ex ) {
+			->willReturnCallback( static function( Exception $ex ) {
 				if ( $ex instanceof Error ) {
 					throw $ex;
 				}
@@ -174,7 +174,7 @@ class SpecialRedirectEntityTest extends SpecialPageTestBase {
 		$permissionChecker = $this->createMock( EntityPermissionChecker::class );
 
 		$permissionChecker->method( 'getPermissionStatusForEntityId' )
-			->willReturnCallback( function( User $user ) {
+			->willReturnCallback( static function( User $user ) {
 				$name = 'UserWithoutPermission';
 				if ( $user->getName() === $name ) {
 					return Status::newFatal( 'permissiondenied' );
diff --git a/repo/tests/phpunit/includes/Specials/SpecialWikibaseRepoPageTestBase.php b/repo/tests/phpunit/includes/Specials/SpecialWikibaseRepoPageTestBase.php
index 6ddd0aa..40d84f1 100644
--- a/repo/tests/phpunit/includes/Specials/SpecialWikibaseRepoPageTestBase.php
+++ b/repo/tests/phpunit/includes/Specials/SpecialWikibaseRepoPageTestBase.php
@@ -67,7 +67,7 @@ abstract class SpecialWikibaseRepoPageTestBase extends SpecialPageTestBase {
 		$titleLookup = $this->createMock( EntityTitleStoreLookup::class );
 
 		$titleLookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				return Title::makeTitle( NS_MAIN, $id->getEntityType() . ':' . $id->getSerialization() );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Store/CachingPrefetchingTermLookupTest.php b/repo/tests/phpunit/includes/Store/CachingPrefetchingTermLookupTest.php
index e19fe3b..c585387 100644
--- a/repo/tests/phpunit/includes/Store/CachingPrefetchingTermLookupTest.php
+++ b/repo/tests/phpunit/includes/Store/CachingPrefetchingTermLookupTest.php
@@ -643,7 +643,7 @@ class CachingPrefetchingTermLookupTest extends TestCase {
 	private function newStubRedirectResolvingRevisionLookup() {
 		$revisionAndRedirectResolver = $this->createMock( RedirectResolvingLatestRevisionLookup::class );
 		$revisionAndRedirectResolver->method( 'lookupLatestRevisionResolvingRedirect' )
-			->willReturnCallback( function ( EntityId $id ) {
+			->willReturnCallback( static function ( EntityId $id ) {
 				return [ self::TEST_REVISION, $id ];
 			} );
 
diff --git a/repo/tests/phpunit/includes/Store/CachingPropertyInfoTest.php b/repo/tests/phpunit/includes/Store/CachingPropertyInfoTest.php
index e09f8a8..b901ea4 100644
--- a/repo/tests/phpunit/includes/Store/CachingPropertyInfoTest.php
+++ b/repo/tests/phpunit/includes/Store/CachingPropertyInfoTest.php
@@ -44,7 +44,7 @@ class CachingPropertyInfoTest extends MediaWikiIntegrationTestCase {
 
 	private function getEntityComposer() {
 		return new EntityIdComposer( [
-			Property::ENTITY_TYPE => function( $uniquePart ) {
+			Property::ENTITY_TYPE => static function( $uniquePart ) {
 				return new NumericPropertyId( 'P' . $uniquePart );
 			},
 		] );
diff --git a/repo/tests/phpunit/includes/Store/Sql/SqlEntityIdPagerFactoryTest.php b/repo/tests/phpunit/includes/Store/Sql/SqlEntityIdPagerFactoryTest.php
index b17d28d..858b3c2 100644
--- a/repo/tests/phpunit/includes/Store/Sql/SqlEntityIdPagerFactoryTest.php
+++ b/repo/tests/phpunit/includes/Store/Sql/SqlEntityIdPagerFactoryTest.php
@@ -39,7 +39,7 @@ class SqlEntityIdPagerFactoryTest extends \PHPUnit\Framework\TestCase {
 		$entityIdLookup = $this->createMock( EntityIdLookup::class );
 
 		$entityIdLookup->method( 'getEntityIdForTitle' )
-			->willReturnCallback( function ( Title $title ) {
+			->willReturnCallback( static function ( Title $title ) {
 				return new ItemId( $title->getText() );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Store/Sql/SqlEntityIdPagerTest.php b/repo/tests/phpunit/includes/Store/Sql/SqlEntityIdPagerTest.php
index 18c9917..9ab8b90 100644
--- a/repo/tests/phpunit/includes/Store/Sql/SqlEntityIdPagerTest.php
+++ b/repo/tests/phpunit/includes/Store/Sql/SqlEntityIdPagerTest.php
@@ -118,7 +118,7 @@ class SqlEntityIdPagerTest extends MediaWikiIntegrationTestCase {
 	}
 
 	private function getIdStrings( array $entities ) {
-		$ids = array_map( function ( $entity ) {
+		$ids = array_map( static function ( $entity ) {
 			if ( $entity instanceof EntityDocument ) {
 				$entity = $entity->getId();
 			} elseif ( $entity instanceof EntityRedirect ) {
diff --git a/repo/tests/phpunit/includes/Store/Sql/SqlSiteLinkConflictLookupTest.php b/repo/tests/phpunit/includes/Store/Sql/SqlSiteLinkConflictLookupTest.php
index c1b48af..97e3fda 100644
--- a/repo/tests/phpunit/includes/Store/Sql/SqlSiteLinkConflictLookupTest.php
+++ b/repo/tests/phpunit/includes/Store/Sql/SqlSiteLinkConflictLookupTest.php
@@ -81,7 +81,7 @@ class SqlSiteLinkConflictLookupTest extends MediaWikiIntegrationTestCase {
 
 	private function newSqlSiteLinkConflictLookup() {
 		$entityIdComposer = new EntityIdComposer( [
-			'item' => function ( $uniquePart ) {
+			'item' => static function ( $uniquePart ) {
 				return ItemId::newFromNumber( $uniquePart );
 			},
 		] );
diff --git a/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityMetaDataLookupTest.php b/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityMetaDataLookupTest.php
index ef4b716..f10763b 100644
--- a/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityMetaDataLookupTest.php
+++ b/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityMetaDataLookupTest.php
@@ -171,7 +171,7 @@ class WikiPageEntityMetaDataLookupTest extends MediaWikiIntegrationTestCase {
 
 		$db->expects( $this->exactly( $selectCount ) )
 			->method( 'select' )
-			->willReturnCallback( function( ...$args ) use ( $realDB ) {
+			->willReturnCallback( static function( ...$args ) use ( $realDB ) {
 				// Get the actual result
 				$res = $realDB->select( ...$args );
 
diff --git a/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityRedirectLookupTest.php b/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityRedirectLookupTest.php
index 4a74a80..b64e1eb 100644
--- a/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityRedirectLookupTest.php
+++ b/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityRedirectLookupTest.php
@@ -131,7 +131,7 @@ class WikiPageEntityRedirectLookupTest extends MediaWikiIntegrationTestCase {
 		$entityTitleLookup = $this->createMock( EntityTitleStoreLookup::class );
 
 		$entityTitleLookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				return Title::makeTitle( NS_MAIN, $id->getSerialization() );
 			} );
 
@@ -142,7 +142,7 @@ class WikiPageEntityRedirectLookupTest extends MediaWikiIntegrationTestCase {
 		$entityIdLookup = $this->createMock( EntityIdLookup::class );
 
 		$entityIdLookup->method( 'getEntityIdForTitle' )
-			->willReturnCallback( function( Title $title ) {
+			->willReturnCallback( static function( Title $title ) {
 				return new ItemId( $title->getText() );
 			} );
 
diff --git a/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityStoreTest.php b/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityStoreTest.php
index bb8ed22..8cf863e 100644
--- a/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityStoreTest.php
+++ b/repo/tests/phpunit/includes/Store/Sql/WikiPageEntityStoreTest.php
@@ -135,10 +135,10 @@ class WikiPageEntityStoreTest extends MediaWikiIntegrationTestCase {
 					'custom-type' => 'wikibase-custom-type',
 				],
 				[
-					'item' => function() {
+					'item' => static function() {
 						return WikibaseRepo::getItemHandler();
 					},
-					'property' => function() {
+					'property' => static function() {
 						return WikibaseRepo::getPropertyHandler();
 					},
 					'custom-type' => function() {
@@ -969,10 +969,10 @@ class WikiPageEntityStoreTest extends MediaWikiIntegrationTestCase {
 					'property' => PropertyContent::CONTENT_MODEL_ID,
 				],
 				[
-					'item' => function() {
+					'item' => static function() {
 						return WikibaseRepo::getItemHandler();
 					},
-					'property' => function() {
+					'property' => static function() {
 						return WikibaseRepo::getPropertyHandler();
 					},
 				]
@@ -1042,7 +1042,7 @@ class WikiPageEntityStoreTest extends MediaWikiIntegrationTestCase {
 
 		return $result->onRedirect( $shouldNotBeCalled )
 			->onNonexistentEntity( $shouldNotBeCalled )
-			->onConcreteRevision( function ( $revId ) {
+			->onConcreteRevision( static function ( $revId ) {
 				return $revId;
 			} )
 			->map();
diff --git a/repo/tests/phpunit/includes/Store/TypeDispatchingEntityTitleStoreLookupTest.php b/repo/tests/phpunit/includes/Store/TypeDispatchingEntityTitleStoreLookupTest.php
index 27f451c..1c8a46f 100644
--- a/repo/tests/phpunit/includes/Store/TypeDispatchingEntityTitleStoreLookupTest.php
+++ b/repo/tests/phpunit/includes/Store/TypeDispatchingEntityTitleStoreLookupTest.php
@@ -24,7 +24,7 @@ class TypeDispatchingEntityTitleStoreLookupTest extends \PHPUnit\Framework\TestC
 	public function testGivenInvalidCallback_getTitleForIdFails() {
 		$lookup = new TypeDispatchingEntityTitleStoreLookup(
 			[
-				'property' => function ( EntityTitleStoreLookup $defaultService ) {
+				'property' => static function ( EntityTitleStoreLookup $defaultService ) {
 					return (object)[];
 				},
 			],
diff --git a/repo/tests/phpunit/includes/Store/WikiPageEntityRevisionLookupTest.php b/repo/tests/phpunit/includes/Store/WikiPageEntityRevisionLookupTest.php
index b015171..0fd740f 100644
--- a/repo/tests/phpunit/includes/Store/WikiPageEntityRevisionLookupTest.php
+++ b/repo/tests/phpunit/includes/Store/WikiPageEntityRevisionLookupTest.php
@@ -502,7 +502,7 @@ class WikiPageEntityRevisionLookupTest extends EntityRevisionLookupTestCase {
 		$entityId->method( '__toString' )->willReturn( $idString );
 		$entityId->method( 'getSerialization' )->willReturn( $idString );
 		$entityId->method( 'equals' )->willReturnCallback(
-			function ( EntityId $otherEntityId ) use ( $entityId ) {
+			static function ( EntityId $otherEntityId ) use ( $entityId ) {
 				return $otherEntityId->getSerialization() === $entityId->getSerialization();
 			}
 		);
diff --git a/repo/tests/phpunit/includes/Store/WikiPageEntityStorePermissionCheckerTest.php b/repo/tests/phpunit/includes/Store/WikiPageEntityStorePermissionCheckerTest.php
index 2dfef31..aa7ff0b 100644
--- a/repo/tests/phpunit/includes/Store/WikiPageEntityStorePermissionCheckerTest.php
+++ b/repo/tests/phpunit/includes/Store/WikiPageEntityStorePermissionCheckerTest.php
@@ -562,7 +562,7 @@ class WikiPageEntityStorePermissionCheckerTest extends MediaWikiIntegrationTestC
 		$lookup = $this->createMock( EntityTitleLookup::class );
 
 		$lookup->method( 'getTitleForId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				if ( $id->getSerialization() === self::EXISTING_ITEM_ID ) {
 					return Title::newFromLinkTarget( new TitleValue( WB_NS_ITEM, 'Test_Item' ) );
 				}
diff --git a/repo/tests/phpunit/includes/ValidatorBuildersTest.php b/repo/tests/phpunit/includes/ValidatorBuildersTest.php
index 153fd62..d433281 100644
--- a/repo/tests/phpunit/includes/ValidatorBuildersTest.php
+++ b/repo/tests/phpunit/includes/ValidatorBuildersTest.php
@@ -78,7 +78,7 @@ class ValidatorBuildersTest extends \PHPUnit\Framework\TestCase {
 		$pageNormalizer = $this->createMock( MediaWikiPageNameNormalizer::class );
 
 		$pageNormalizer->method( 'normalizePageName' )
-			->willReturnCallback( function( $pageName ) {
+			->willReturnCallback( static function( $pageName ) {
 				return strpos( $pageName, 'NOT-FOUND' ) === false ? $pageName : false;
 			} );
 
@@ -90,7 +90,7 @@ class ValidatorBuildersTest extends \PHPUnit\Framework\TestCase {
 
 		$fileNameLookup->method( 'lookupFileName' )
 			->with( $this->isType( 'string' ) )
-			->willReturnCallback( function( $fileName ) {
+			->willReturnCallback( static function( $fileName ) {
 				return strpos( $fileName, 'NOT-FOUND' ) === false ? $fileName : null;
 			} );
 
diff --git a/repo/tests/phpunit/includes/Validators/CommonsMediaExistsValidatorTest.php b/repo/tests/phpunit/includes/Validators/CommonsMediaExistsValidatorTest.php
index 2ae4bef..f840125 100644
--- a/repo/tests/phpunit/includes/Validators/CommonsMediaExistsValidatorTest.php
+++ b/repo/tests/phpunit/includes/Validators/CommonsMediaExistsValidatorTest.php
@@ -26,7 +26,7 @@ class CommonsMediaExistsValidatorTest extends \PHPUnit\Framework\TestCase {
 
 		$fileNameLookup->method( 'lookupFileName' )
 			->with( $this->isType( 'string' ) )
-			->willReturnCallback( function( $fileName ) {
+			->willReturnCallback( static function( $fileName ) {
 				return strpos( $fileName, 'NOT-FOUND' ) === false ? $fileName : null;
 			} );
 
diff --git a/repo/tests/phpunit/includes/Validators/FingerprintUniquenessValidatorTest.php b/repo/tests/phpunit/includes/Validators/FingerprintUniquenessValidatorTest.php
index a28304a..e58881e 100644
--- a/repo/tests/phpunit/includes/Validators/FingerprintUniquenessValidatorTest.php
+++ b/repo/tests/phpunit/includes/Validators/FingerprintUniquenessValidatorTest.php
@@ -65,7 +65,7 @@ class FingerprintUniquenessValidatorTest extends TestCase {
 			],
 
 			'old label not in ChangeOpResult - no collisions detected' => [
-				'getLabelMock' => function () {
+				'getLabelMock' => static function () {
 					return 'old label';
 				},
 				'getDescriptionMock' => null,
@@ -83,7 +83,7 @@ class FingerprintUniquenessValidatorTest extends TestCase {
 
 			'old description not in ChangeOpResult - no collisions detected' => [
 				'getLabelMock' => null,
-				'getDescriptionMock' => function () {
+				'getDescriptionMock' => static function () {
 					return 'old description';
 				},
 				'detectLabelAndDescriptionCollisionMock' => function ( $lang, $label, $description ) {
diff --git a/repo/tests/phpunit/includes/Validators/InterWikiLinkExistsValidatorTest.php b/repo/tests/phpunit/includes/Validators/InterWikiLinkExistsValidatorTest.php
index e903ee7..25f2783 100644
--- a/repo/tests/phpunit/includes/Validators/InterWikiLinkExistsValidatorTest.php
+++ b/repo/tests/phpunit/includes/Validators/InterWikiLinkExistsValidatorTest.php
@@ -28,7 +28,7 @@ class InterWikiLinkExistsValidatorTest extends \PHPUnit\Framework\TestCase {
 
 		$pageNormalizer->method( 'normalizePageName' )
 			->with( $this->isType( 'string' ), $this->anything() )
-			->willReturnCallback( function( $pageName ) {
+			->willReturnCallback( static function( $pageName ) {
 				return $pageName === self::EXISTING_PAGE ? $pageName : false;
 			} );
 
diff --git a/repo/tests/phpunit/includes/Validators/SnakValidatorTest.php b/repo/tests/phpunit/includes/Validators/SnakValidatorTest.php
index 945beb2..0d85273 100644
--- a/repo/tests/phpunit/includes/Validators/SnakValidatorTest.php
+++ b/repo/tests/phpunit/includes/Validators/SnakValidatorTest.php
@@ -72,7 +72,7 @@ class SnakValidatorTest extends \PHPUnit\Framework\TestCase {
 
 		$this->validatorFactory = $this->createMock( DataTypeValidatorFactory::class );
 		$this->validatorFactory->method( 'getValidators' )
-			->willReturnCallback( function( $dataTypeId ) use (
+			->willReturnCallback( static function( $dataTypeId ) use (
 				$numericValidator,
 				$alphabeticValidator,
 				$lengthValidator
diff --git a/repo/tests/phpunit/includes/Validators/StringLengthValidatorTest.php b/repo/tests/phpunit/includes/Validators/StringLengthValidatorTest.php
index 1360526..e854d8a 100644
--- a/repo/tests/phpunit/includes/Validators/StringLengthValidatorTest.php
+++ b/repo/tests/phpunit/includes/Validators/StringLengthValidatorTest.php
@@ -55,7 +55,7 @@ class StringLengthValidatorTest extends \PHPUnit\Framework\TestCase {
 	public function testWhenErrorCodePrefixIsPassedAndErrorIsTriggered() {
 		$errorCodePrefix = '[PREFIX]';
 		$maxLength = 0;
-		$tooLongFunction = function() use ( $maxLength ) {
+		$tooLongFunction = static function() use ( $maxLength ) {
 			return $maxLength + 1;
 		};
 
diff --git a/repo/tests/phpunit/includes/Validators/ValidatorErrorLocalizerTest.php b/repo/tests/phpunit/includes/Validators/ValidatorErrorLocalizerTest.php
index 8053074..f363667 100644
--- a/repo/tests/phpunit/includes/Validators/ValidatorErrorLocalizerTest.php
+++ b/repo/tests/phpunit/includes/Validators/ValidatorErrorLocalizerTest.php
@@ -27,7 +27,7 @@ class ValidatorErrorLocalizerTest extends \PHPUnit\Framework\TestCase {
 		$mock = $this->createMock( ValueFormatter::class );
 		$mock->method( 'format' )
 			->willReturnCallback(
-				function ( $param ) {
+				static function ( $param ) {
 					if ( is_array( $param ) ) {
 						$param = implode( '|', $param );
 					}
diff --git a/repo/tests/phpunit/includes/ValueParserFactoryTest.php b/repo/tests/phpunit/includes/ValueParserFactoryTest.php
index c9456f8..45ca511 100644
--- a/repo/tests/phpunit/includes/ValueParserFactoryTest.php
+++ b/repo/tests/phpunit/includes/ValueParserFactoryTest.php
@@ -35,7 +35,7 @@ class ValueParserFactoryTest extends \PHPUnit\Framework\TestCase {
 				'id' => 'not a callable',
 			] ],
 			'id is not a string' => [ [
-				function () {
+				static function () {
 				},
 			] ],
 		];
@@ -49,7 +49,7 @@ class ValueParserFactoryTest extends \PHPUnit\Framework\TestCase {
 	}
 
 	public function testNewParser_withInvalidReturnValue() {
-		$factory = new ValueParserFactory( [ 'id' => function () {
+		$factory = new ValueParserFactory( [ 'id' => static function () {
 			return 'invalid';
 		} ] );
 
@@ -72,7 +72,7 @@ class ValueParserFactoryTest extends \PHPUnit\Framework\TestCase {
 		return [
 			[
 				[
-					'foo' => function() {
+					'foo' => static function() {
 						return new NullParser();
 					},
 				],
diff --git a/repo/tests/phpunit/maintenance/DumpJsonTest.php b/repo/tests/phpunit/maintenance/DumpJsonTest.php
index 6f58732..5e83fbb 100644
--- a/repo/tests/phpunit/maintenance/DumpJsonTest.php
+++ b/repo/tests/phpunit/maintenance/DumpJsonTest.php
@@ -202,7 +202,7 @@ class DumpJsonTest extends MediaWikiIntegrationTestCase {
 	private function getMockPropertyDataTypeLookup() {
 		$mockDataTypeLookup = $this->createMock( PropertyDataTypeLookup::class );
 		$mockDataTypeLookup->method( 'getDataTypeIdForProperty' )
-			->willReturnCallback( function( PropertyId $id ) {
+			->willReturnCallback( static function( PropertyId $id ) {
 				if ( $id->getSerialization() === 'P999' ) {
 					throw new PropertyDataTypeLookupException( $id );
 				}
diff --git a/repo/tests/phpunit/maintenance/DumpRdfTest.php b/repo/tests/phpunit/maintenance/DumpRdfTest.php
index fcd2d34..36d736b 100644
--- a/repo/tests/phpunit/maintenance/DumpRdfTest.php
+++ b/repo/tests/phpunit/maintenance/DumpRdfTest.php
@@ -283,7 +283,7 @@ class DumpRdfTest extends MediaWikiIntegrationTestCase {
 	private function getMockPropertyDataTypeLookup(): PropertyDataTypeLookup {
 		$mockDataTypeLookup = $this->createMock( PropertyDataTypeLookup::class );
 		$mockDataTypeLookup->method( 'getDataTypeIdForProperty' )
-			->willReturnCallback( function( NumericPropertyId $id ) {
+			->willReturnCallback( static function( NumericPropertyId $id ) {
 				if ( $id->getSerialization() === 'P999' ) {
 					throw new PropertyDataTypeLookupException( $id );
 				}
diff --git a/repo/tests/phpunit/unit/ServiceWiring/AllTypesEntityDeserializerTest.php b/repo/tests/phpunit/unit/ServiceWiring/AllTypesEntityDeserializerTest.php
index d086b36..74ce799 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/AllTypesEntityDeserializerTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/AllTypesEntityDeserializerTest.php
@@ -21,11 +21,11 @@ class AllTypesEntityDeserializerTest extends ServiceWiringTestCase {
 	private function makeMockDeserializer( string $validSerialization ): callable {
 		$deserializer = $this->createMock( DispatchableDeserializer::class );
 		$deserializer->method( 'isDeserializerFor' )
-			->willReturnCallback( function ( $serialization ) use ( $validSerialization ) {
+			->willReturnCallback( static function ( $serialization ) use ( $validSerialization ) {
 				return $serialization == $validSerialization;
 			} );
 
-		return function () use ( $deserializer ): DispatchableDeserializer {
+		return static function () use ( $deserializer ): DispatchableDeserializer {
 			return $deserializer;
 		};
 	}
diff --git a/repo/tests/phpunit/unit/ServiceWiring/ContentModelMappingsTest.php b/repo/tests/phpunit/unit/ServiceWiring/ContentModelMappingsTest.php
index 7ee166a..3d02095 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/ContentModelMappingsTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/ContentModelMappingsTest.php
@@ -35,7 +35,7 @@ class ContentModelMappingsTest extends ServiceWiringTestCase {
 		$this->mockService( 'WikibaseRepo.EntityTypeDefinitions',
 			new EntityTypeDefinitions( [] ) );
 		$this->configureHookContainer( [
-			'WikibaseContentModelMapping' => [ function ( array &$map ) {
+			'WikibaseContentModelMapping' => [ static function ( array &$map ) {
 				$map['test2'] = 'test2-content-model';
 			} ],
 		] );
diff --git a/repo/tests/phpunit/unit/ServiceWiring/DataTypeDefinitionsTest.php b/repo/tests/phpunit/unit/ServiceWiring/DataTypeDefinitionsTest.php
index b4fbf86..9978263 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/DataTypeDefinitionsTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/DataTypeDefinitionsTest.php
@@ -36,7 +36,7 @@ class DataTypeDefinitionsTest extends ServiceWiringTestCase {
 
 	public function testRunsHook(): void {
 		$this->configureHookContainer( [
-			'WikibaseRepoDataTypes' => [ function ( array &$dataTypes ) {
+			'WikibaseRepoDataTypes' => [ static function ( array &$dataTypes ) {
 				$dataTypes['PT:test'] = [ 'value-type' => 'string' ];
 			} ],
 		] );
diff --git a/repo/tests/phpunit/unit/ServiceWiring/DataTypeValidatorFactoryTest.php b/repo/tests/phpunit/unit/ServiceWiring/DataTypeValidatorFactoryTest.php
index 9ad0bc8..4c38150 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/DataTypeValidatorFactoryTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/DataTypeValidatorFactoryTest.php
@@ -37,7 +37,7 @@ class DataTypeValidatorFactoryTest extends ServiceWiringTestCase {
 		$dataTypeDefs = new DataTypeDefinitions( [
 			'PT:some-property' => [
 				'value-type' => 'string',
-				'validator-factory-callback' => function () use ( $fakeValidators ): array {
+				'validator-factory-callback' => static function () use ( $fakeValidators ): array {
 					return $fakeValidators;
 				},
 			],
diff --git a/repo/tests/phpunit/unit/ServiceWiring/EntityChangeOpProviderTest.php b/repo/tests/phpunit/unit/ServiceWiring/EntityChangeOpProviderTest.php
index ce7d103..ed5a172 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/EntityChangeOpProviderTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/EntityChangeOpProviderTest.php
@@ -28,7 +28,7 @@ class EntityChangeOpProviderTest extends ServiceWiringTestCase {
 		$this->mockService( 'WikibaseRepo.EntityTypeDefinitions',
 			new EntityTypeDefinitions( [
 				'test' => [
-					EntityTypeDefinitions::CHANGEOP_DESERIALIZER_CALLBACK => function () use ( $changeOpDeserializer ) {
+					EntityTypeDefinitions::CHANGEOP_DESERIALIZER_CALLBACK => static function () use ( $changeOpDeserializer ) {
 						return $changeOpDeserializer;
 					},
 				],
diff --git a/repo/tests/phpunit/unit/ServiceWiring/EntityDifferTest.php b/repo/tests/phpunit/unit/ServiceWiring/EntityDifferTest.php
index 69f2f8a..c5efd0e 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/EntityDifferTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/EntityDifferTest.php
@@ -26,13 +26,13 @@ class EntityDifferTest extends ServiceWiringTestCase {
 		$this->mockService( 'WikibaseRepo.EntityTypeDefinitions',
 			new EntityTypeDefinitions( [
 				'test1' => [
-					EntityTypeDefinitions::ENTITY_DIFFER_STRATEGY_BUILDER => function () use ( &$calls1, $strategy1 ) {
+					EntityTypeDefinitions::ENTITY_DIFFER_STRATEGY_BUILDER => static function () use ( &$calls1, $strategy1 ) {
 						$calls1++;
 						return $strategy1;
 					},
 				],
 				'test2' => [
-					EntityTypeDefinitions::ENTITY_DIFFER_STRATEGY_BUILDER => function () use ( &$calls2, $strategy2 ) {
+					EntityTypeDefinitions::ENTITY_DIFFER_STRATEGY_BUILDER => static function () use ( &$calls2, $strategy2 ) {
 						$calls2++;
 						return $strategy2;
 					},
diff --git a/repo/tests/phpunit/unit/ServiceWiring/EntityFactoryTest.php b/repo/tests/phpunit/unit/ServiceWiring/EntityFactoryTest.php
index 29733ad..b976e45 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/EntityFactoryTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/EntityFactoryTest.php
@@ -36,7 +36,7 @@ class EntityFactoryTest extends ServiceWiringTestCase {
 			'WikibaseRepo.EntityTypeDefinitions',
 			new EntityTypeDefinitions( [
 				'something' => [
-					EntityTypeDefinitions::ENTITY_FACTORY_CALLBACK => function () use ( $fakeEntity ) {
+					EntityTypeDefinitions::ENTITY_FACTORY_CALLBACK => static function () use ( $fakeEntity ) {
 						return $fakeEntity;
 					},
 				],
diff --git a/repo/tests/phpunit/unit/ServiceWiring/EntityIdComposerTest.php b/repo/tests/phpunit/unit/ServiceWiring/EntityIdComposerTest.php
index 0aad9ec..92604c9 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/EntityIdComposerTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/EntityIdComposerTest.php
@@ -22,7 +22,7 @@ class EntityIdComposerTest extends ServiceWiringTestCase {
 		$this->mockService( 'WikibaseRepo.EntityTypeDefinitions',
 			new EntityTypeDefinitions( [
 				'test' => [
-					EntityTypeDefinitions::ENTITY_ID_COMPOSER_CALLBACK => function ( $uniquePart ) {
+					EntityTypeDefinitions::ENTITY_ID_COMPOSER_CALLBACK => static function ( $uniquePart ) {
 						return new ItemId( 'Q' . $uniquePart );
 					},
 				],
diff --git a/repo/tests/phpunit/unit/ServiceWiring/EntityIdParserTest.php b/repo/tests/phpunit/unit/ServiceWiring/EntityIdParserTest.php
index 0e3a228..ec91085 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/EntityIdParserTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/EntityIdParserTest.php
@@ -28,7 +28,7 @@ class EntityIdParserTest extends ServiceWiringTestCase {
 			new EntityTypeDefinitions( [
 				'test' => [
 					EntityTypeDefinitions::ENTITY_ID_PATTERN => '/^T[1-9][0-9]*$/',
-					EntityTypeDefinitions::ENTITY_ID_BUILDER => function ( $serialization ) {
+					EntityTypeDefinitions::ENTITY_ID_BUILDER => static function ( $serialization ) {
 						return new ItemId( 'Q1000' . substr( $serialization, 1 ) );
 					},
 				],
@@ -52,7 +52,7 @@ class EntityIdParserTest extends ServiceWiringTestCase {
 		$entityTypeDefinitions = new EntityTypeDefinitions( [
 			'test' => [
 				EntityTypeDefinitions::ENTITY_ID_PATTERN => '/^T[1-9][0-9]*$/',
-				EntityTypeDefinitions::ENTITY_ID_BUILDER => function ( $serialization ) {
+				EntityTypeDefinitions::ENTITY_ID_BUILDER => static function ( $serialization ) {
 					return new ItemId( 'Q1000' . substr( $serialization, 1 ) );
 				},
 			],
diff --git a/repo/tests/phpunit/unit/ServiceWiring/EntityNamespaceLookupTest.php b/repo/tests/phpunit/unit/ServiceWiring/EntityNamespaceLookupTest.php
index 2d65d09..a8a3a66 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/EntityNamespaceLookupTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/EntityNamespaceLookupTest.php
@@ -22,7 +22,7 @@ class EntityNamespaceLookupTest extends ServiceWiringTestCase {
 
 	private function getEntitySources( array ...$entityNSDefinitions ): EntitySourceDefinitions {
 		return new EntitySourceDefinitions( array_map(
-			function ( array $nsDefinitions, int $idx ): DatabaseEntitySource {
+			static function ( array $nsDefinitions, int $idx ): DatabaseEntitySource {
 				return new DatabaseEntitySource(
 					'test-' . $idx,
 					false,
diff --git a/repo/tests/phpunit/unit/ServiceWiring/EntityPatcherTest.php b/repo/tests/phpunit/unit/ServiceWiring/EntityPatcherTest.php
index 7c95e11..35c81e6 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/EntityPatcherTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/EntityPatcherTest.php
@@ -26,13 +26,13 @@ class EntityPatcherTest extends ServiceWiringTestCase {
 		$this->mockService( 'WikibaseRepo.EntityTypeDefinitions',
 			new EntityTypeDefinitions( [
 				'test1' => [
-					EntityTypeDefinitions::ENTITY_PATCHER_STRATEGY_BUILDER => function () use ( &$calls1, $strategy1 ) {
+					EntityTypeDefinitions::ENTITY_PATCHER_STRATEGY_BUILDER => static function () use ( &$calls1, $strategy1 ) {
 						$calls1++;
 						return $strategy1;
 					},
 				],
 				'test2' => [
-					EntityTypeDefinitions::ENTITY_PATCHER_STRATEGY_BUILDER => function () use ( &$calls2, $strategy2 ) {
+					EntityTypeDefinitions::ENTITY_PATCHER_STRATEGY_BUILDER => static function () use ( &$calls2, $strategy2 ) {
 						$calls2++;
 						return $strategy2;
 					},
diff --git a/repo/tests/phpunit/unit/ServiceWiring/EntitySearchHelperCallbacksTest.php b/repo/tests/phpunit/unit/ServiceWiring/EntitySearchHelperCallbacksTest.php
index a379c09..e8c1a05 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/EntitySearchHelperCallbacksTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/EntitySearchHelperCallbacksTest.php
@@ -37,7 +37,7 @@ class EntitySearchHelperCallbacksTest extends ServiceWiringTestCase {
 			->willReturn( new HookContainer(
 				new StaticHookRegistry( [
 					'WikibaseRepoEntitySearchHelperCallbacks' => [
-						'callback' => function ( &$callbacks ) use ( $callable3 ) {
+						'callback' => static function ( &$callbacks ) use ( $callable3 ) {
 							$callbacks['type3'] = $callable3;
 						},
 					],
diff --git a/repo/tests/phpunit/unit/ServiceWiring/EntityTypeDefinitionsTest.php b/repo/tests/phpunit/unit/ServiceWiring/EntityTypeDefinitionsTest.php
index d94c29e..3503a99 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/EntityTypeDefinitionsTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/EntityTypeDefinitionsTest.php
@@ -28,7 +28,7 @@ class EntityTypeDefinitionsTest extends ServiceWiringTestCase {
 
 	public function testRunsHook(): void {
 		$this->configureHookContainer( [
-			'WikibaseRepoEntityTypes' => [ function ( array &$entityTypes ) {
+			'WikibaseRepoEntityTypes' => [ static function ( array &$entityTypes ) {
 				$entityTypes['test'] = [];
 			} ],
 		] );
diff --git a/repo/tests/phpunit/unit/ServiceWiring/FulltextSearchTypesTest.php b/repo/tests/phpunit/unit/ServiceWiring/FulltextSearchTypesTest.php
index 95cd706..cc87b6a 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/FulltextSearchTypesTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/FulltextSearchTypesTest.php
@@ -16,7 +16,7 @@ use Wikibase\Repo\Tests\Unit\ServiceWiringTestCase;
 class FulltextSearchTypesTest extends ServiceWiringTestCase {
 
 	private function getEntityTypeDefinitions( array $typesToContexts ): EntityTypeDefinitions {
-		return new EntityTypeDefinitions( array_map( function ( $context ){
+		return new EntityTypeDefinitions( array_map( static function ( $context ){
 			return [
 				EntityTypeDefinitions::FULLTEXT_SEARCH_CONTEXT => $context,
 			];
@@ -43,7 +43,7 @@ class FulltextSearchTypesTest extends ServiceWiringTestCase {
 	public function testReturnsCallbackResults(): void {
 		$mockFulltextContextStrings = [
 			'something' => 'test-context',
-			'another' => function () {
+			'another' => static function () {
 				return 'another-context';
 			},
 		];
diff --git a/repo/tests/phpunit/unit/ServiceWiring/ItemVocabularyBaseUriTest.php b/repo/tests/phpunit/unit/ServiceWiring/ItemVocabularyBaseUriTest.php
index afa0c95..6ee6a93 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/ItemVocabularyBaseUriTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/ItemVocabularyBaseUriTest.php
@@ -25,7 +25,7 @@ class ItemVocabularyBaseUriTest extends ServiceWiringTestCase {
 
 		return new EntitySourceDefinitions(
 			array_map(
-				function ( string $baseUri, array $entityTypes, int $idx ): DatabaseEntitySource {
+				static function ( string $baseUri, array $entityTypes, int $idx ): DatabaseEntitySource {
 					return new DatabaseEntitySource(
 						'test' . $idx,
 						false,
diff --git a/repo/tests/phpunit/unit/ServiceWiring/LocalEntityNamespaceLookupTest.php b/repo/tests/phpunit/unit/ServiceWiring/LocalEntityNamespaceLookupTest.php
index b30f9e8..0bfb6c7 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/LocalEntityNamespaceLookupTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/LocalEntityNamespaceLookupTest.php
@@ -27,7 +27,7 @@ class LocalEntityNamespaceLookupTest extends ServiceWiringTestCase {
 			new DatabaseEntitySource(
 				'local',
 				false,
-				array_map( function ( $nsId ) {
+				array_map( static function ( $nsId ) {
 					return [
 						'namespaceId' => $nsId,
 						'slot' => SlotRecord::MAIN,
diff --git a/repo/tests/phpunit/unit/ServiceWiring/ValueParserFactoryTest.php b/repo/tests/phpunit/unit/ServiceWiring/ValueParserFactoryTest.php
index 15ac439..b657cb3 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/ValueParserFactoryTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/ValueParserFactoryTest.php
@@ -85,7 +85,7 @@ class ValueParserFactoryTest extends ServiceWiringTestCase {
 	}
 
 	private function makeParserFactoryCallback(): callable {
-		return function () {
+		return static function () {
 			throw new AssertionError( 'Should never be called' );
 		};
 	}
diff --git a/repo/tests/phpunit/unit/ServiceWiring/ValueSnakRdfBuilderFactoryTest.php b/repo/tests/phpunit/unit/ServiceWiring/ValueSnakRdfBuilderFactoryTest.php
index 3783c7c..983a76c 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/ValueSnakRdfBuilderFactoryTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/ValueSnakRdfBuilderFactoryTest.php
@@ -22,7 +22,7 @@ class ValueSnakRdfBuilderFactoryTest extends ServiceWiringTestCase {
 		$this->mockService( 'WikibaseRepo.DataTypeDefinitions',
 			new DataTypeDefinitions( [
 				'VT:test' => [
-					'rdf-builder-factory-callback' => function () {
+					'rdf-builder-factory-callback' => static function () {
 						return null;
 					},
 				],
diff --git a/repo/tests/phpunit/unit/ServiceWiring/WikibaseContentLanguagesTest.php b/repo/tests/phpunit/unit/ServiceWiring/WikibaseContentLanguagesTest.php
index 55a1aff..c20f83e 100644
--- a/repo/tests/phpunit/unit/ServiceWiring/WikibaseContentLanguagesTest.php
+++ b/repo/tests/phpunit/unit/ServiceWiring/WikibaseContentLanguagesTest.php
@@ -19,7 +19,7 @@ class WikibaseContentLanguagesTest extends ServiceWiringTestCase {
 	public function testConstruction() {
 		$testLanguages = new StaticContentLanguages( [ 'test' ] );
 		$this->configureHookContainer( [
-			'WikibaseContentLanguages' => [ function ( array &$contentLanguages ) use ( $testLanguages ) {
+			'WikibaseContentLanguages' => [ static function ( array &$contentLanguages ) use ( $testLanguages ) {
 				$contentLanguages['test'] = $testLanguages;
 			} ],
 		] );
diff --git a/repo/tests/phpunit/unit/includes/Hooks/EntityDataPurgerTest.php b/repo/tests/phpunit/unit/includes/Hooks/EntityDataPurgerTest.php
index d89f6e8..bc90ea5 100644
--- a/repo/tests/phpunit/unit/includes/Hooks/EntityDataPurgerTest.php
+++ b/repo/tests/phpunit/unit/includes/Hooks/EntityDataPurgerTest.php
@@ -136,7 +136,7 @@ class EntityDataPurgerTest extends MediaWikiUnitTestCase {
 		$jobQueueGroup = $this->createMock( JobQueueGroup::class );
 		$jobQueueGroup->expects( $this->once() )
 			->method( 'lazyPush' )
-			->willReturnCallback( function ( IJobSpecification $job ) use ( &$actualJob ) {
+			->willReturnCallback( static function ( IJobSpecification $job ) use ( &$actualJob ) {
 				$actualJob = $job;
 			} );
 
diff --git a/view/resources.php b/view/resources.php
index 5f11a7b..9da8b8e 100644
--- a/view/resources.php
+++ b/view/resources.php
@@ -12,7 +12,7 @@ use Wikibase\View\Termbox\TermboxModule;
  * @license GPL-2.0-or-later
  * @author Adrian Heine <adrian.heine@wikimedia.de>
  */
-return call_user_func( function() {
+return call_user_func( static function() {
 	$moduleTemplate = [
 		'localBasePath' => __DIR__ . '/resources',
 		'remoteExtPath' => 'Wikibase/view/resources',
@@ -962,7 +962,7 @@ return call_user_func( function() {
 				'mountTermbox.js',
 				[
 					'name' => 'config.json',
-					'callback' => function () {
+					'callback' => static function () {
 						return [
 							'tags' => WikibaseRepo::getSettings()->getSetting( 'termboxTags' ),
 							'tempUserEnabled' => MediaWikiServices::getInstance()->getTempUserConfig()->isEnabled(),
@@ -984,7 +984,7 @@ return call_user_func( function() {
 				'dist/wikibase.termbox.init.js',
 				[
 					'name' => 'termbox.config.js',
-					'callback' => function ( Context $context ) {
+					'callback' => static function ( Context $context ) {
 						global $wgEditSubmitButtonLabelPublish;
 
 						$saveMessageKey = ( $wgEditSubmitButtonLabelPublish ) ? 'wikibase-publish' : 'wikibase-save';
diff --git a/view/resources/templates.php b/view/resources/templates.php
index 5c03a42..aa2e149 100644
--- a/view/resources/templates.php
+++ b/view/resources/templates.php
@@ -12,7 +12,7 @@ namespace Wikibase;
  * @return array templates
  */
 
-return call_user_func( function() {
+return call_user_func( static function() {
 	$templates = [];
 
 	$templates['wikibase-entityview'] =
diff --git a/view/src/DummyLocalizedTextProvider.php b/view/src/DummyLocalizedTextProvider.php
index 1af3edf..0a76688 100644
--- a/view/src/DummyLocalizedTextProvider.php
+++ b/view/src/DummyLocalizedTextProvider.php
@@ -23,7 +23,7 @@ class DummyLocalizedTextProvider implements LocalizedTextProvider {
 	public function getEscaped( $key, array $params = [] ) {
 		return $this->get(
 			htmlspecialchars( $key ),
-			array_map( function ( $param ) {
+			array_map( static function ( $param ) {
 				return $param instanceof RawMessageParameter ? $param->getContents() : htmlspecialchars( $param );
 			}, $params )
 		);
diff --git a/view/src/FallbackChainModuleMethods.php b/view/src/FallbackChainModuleMethods.php
index 9d64594..388e3df 100644
--- a/view/src/FallbackChainModuleMethods.php
+++ b/view/src/FallbackChainModuleMethods.php
@@ -21,7 +21,7 @@ class FallbackChainModuleMethods {
 		return $localCache->getWithSetCallback(
 			$localCache->makeKey( 'wikibase-fallback-chains' ),
 			$localCache::TTL_WEEK,
-			function () use ( $services ) {
+			static function () use ( $services ) {
 				$startTime = microtime( true );
 
 				$fallbackChainFactory = WikibaseRepo::getLanguageFallbackChainFactory( $services );
diff --git a/view/src/SiteLinksView.php b/view/src/SiteLinksView.php
index 6d1673e..4f045d3 100644
--- a/view/src/SiteLinksView.php
+++ b/view/src/SiteLinksView.php
@@ -240,7 +240,7 @@ class SiteLinksView {
 		// Sort the sitelinks according to their global id
 		usort(
 			$siteLinksForTable,
-			function( array $a, array $b ) {
+			static function( array $a, array $b ) {
 				/** @var SiteLink[] $a */
 				/** @var SiteLink[] $b */
 				return strcmp( $a['siteLink']->getSiteId(), $b['siteLink']->getSiteId() );
diff --git a/view/src/Termbox/Renderer/TermboxRemoteRenderer.php b/view/src/Termbox/Renderer/TermboxRemoteRenderer.php
index 693c2d5..17ed3a1 100644
--- a/view/src/Termbox/Renderer/TermboxRemoteRenderer.php
+++ b/view/src/Termbox/Renderer/TermboxRemoteRenderer.php
@@ -124,7 +124,7 @@ class TermboxRemoteRenderer implements TermboxRenderer {
 	}
 
 	private function getLanguageCodes( TermLanguageFallbackChain $preferredLanguages ) {
-		return array_map( function ( LanguageWithConversion $language ) {
+		return array_map( static function ( LanguageWithConversion $language ) {
 			return $language->getLanguageCode();
 		}, $preferredLanguages->getFallbackChain() );
 	}
diff --git a/view/tests/phpunit/FingerprintableEntityMetaTagsCreatorTest.php b/view/tests/phpunit/FingerprintableEntityMetaTagsCreatorTest.php
index 8a745ab..718f6ea 100644
--- a/view/tests/phpunit/FingerprintableEntityMetaTagsCreatorTest.php
+++ b/view/tests/phpunit/FingerprintableEntityMetaTagsCreatorTest.php
@@ -20,10 +20,10 @@ class FingerprintableEntityMetaTagsCreatorTest extends EntityMetaTagsCreatorTest
 
 	public static function provideTestGetMetaTags() {
 
-		$fingerprintableEntityMetaTagsFactory = function ( self $self ) {
+		$fingerprintableEntityMetaTagsFactory = static function ( self $self ) {
 			$mock = $self->createMock( TermLanguageFallbackChain::class );
 			$mock->method( 'extractPreferredValue' )
-				->willReturnCallback( function( $input ) {
+				->willReturnCallback( static function( $input ) {
 					$langString = $input['en'] ?? null;
 					if ( $langString !== null ) {
 						return [ 'value' => $langString ];
diff --git a/view/tests/phpunit/SimpleEntityTermsViewTest.php b/view/tests/phpunit/SimpleEntityTermsViewTest.php
index c6b8cf5..a1b50ca 100644
--- a/view/tests/phpunit/SimpleEntityTermsViewTest.php
+++ b/view/tests/phpunit/SimpleEntityTermsViewTest.php
@@ -47,13 +47,13 @@ class SimpleEntityTermsViewTest extends \PHPUnit\Framework\TestCase {
 
 		$htmlTermRenderer = $this->createMock( HtmlTermRenderer::class );
 		$htmlTermRenderer->method( 'renderTerm' )
-			->willReturnCallback( function( Term $term ) {
+			->willReturnCallback( static function( Term $term ) {
 				return htmlspecialchars( $term->getText() );
 			} );
 
 		$labelDescriptionLookup = $this->createMock( LabelDescriptionLookup::class );
 		$labelDescriptionLookup->method( 'getLabel' )
-			->willReturnCallback( function( EntityId $entityId ) {
+			->willReturnCallback( static function( EntityId $entityId ) {
 				$terms = [
 					'Q111' => new Term( 'language', '<LABEL>' ),
 					'Q666' => new Term( 'language', '<a href="#">evil html</a>' ),
@@ -61,7 +61,7 @@ class SimpleEntityTermsViewTest extends \PHPUnit\Framework\TestCase {
 				return $terms[$entityId->getSerialization()] ?? null;
 			} );
 		$labelDescriptionLookup->method( 'getDescription' )
-			->willReturnCallback( function( EntityId $entityId ) {
+			->willReturnCallback( static function( EntityId $entityId ) {
 				return $entityId->getSerialization() === 'Q111' ? new Term( 'language', '<DESCRIPTION>' ) : null;
 			} );
 
diff --git a/view/tests/phpunit/SiteLinksViewTest.php b/view/tests/phpunit/SiteLinksViewTest.php
index 720e755..de68603 100644
--- a/view/tests/phpunit/SiteLinksViewTest.php
+++ b/view/tests/phpunit/SiteLinksViewTest.php
@@ -206,7 +206,7 @@ class SiteLinksViewTest extends \PHPUnit\Framework\TestCase {
 		$formatter = $this->createMock( EntityIdFormatter::class );
 
 		$formatter->method( 'formatEntityId' )
-			->willReturnCallback( function( EntityId $id ) {
+			->willReturnCallback( static function( EntityId $id ) {
 				if ( $id->getSerialization() === 'Q42' ) {
 					return 'Featured article';
 				} elseif ( $id->getSerialization() === 'Q56' ) {
diff --git a/view/tests/phpunit/StatementGroupListViewTest.php b/view/tests/phpunit/StatementGroupListViewTest.php
index 06aa0f0..7210dc0 100644
--- a/view/tests/phpunit/StatementGroupListViewTest.php
+++ b/view/tests/phpunit/StatementGroupListViewTest.php
@@ -199,7 +199,7 @@ class StatementGroupListViewTest extends \PHPUnit\Framework\TestCase {
 		$statementHtmlGenerator = $this->createMock( StatementHtmlGenerator::class );
 
 		$statementHtmlGenerator->method( 'getHtmlForStatement' )
-			->willReturnCallback( function( Statement $statement, $editSectionHtml = null ) {
+			->willReturnCallback( static function( Statement $statement, $editSectionHtml = null ) {
 				return $statement->getGuid() . "\n";
 			} );
 
diff --git a/view/tests/phpunit/Termbox/Renderer/TermboxRemoteRendererTest.php b/view/tests/phpunit/Termbox/Renderer/TermboxRemoteRendererTest.php
index 06040d0..ec0efdb 100644
--- a/view/tests/phpunit/Termbox/Renderer/TermboxRemoteRendererTest.php
+++ b/view/tests/phpunit/Termbox/Renderer/TermboxRemoteRendererTest.php
@@ -347,7 +347,7 @@ class TermboxRemoteRendererTest extends TestCase {
 		$stubContentLanguages->method( 'hasLanguage' )
 			->willReturn( true );
 		$languageFactory = MediaWikiServices::getInstance()->getLanguageFactory();
-		return new TermLanguageFallbackChain( array_map( function ( $languageCode ) use ( $languageFactory ) {
+		return new TermLanguageFallbackChain( array_map( static function ( $languageCode ) use ( $languageFactory ) {
 			return LanguageWithConversion::factory( $languageFactory->getLanguage( $languageCode ) );
 		}, $languages ), $stubContentLanguages );
 	}
diff --git a/view/tests/phpunit/TermsListViewTest.php b/view/tests/phpunit/TermsListViewTest.php
index 4b66a19..63a1efc 100644
--- a/view/tests/phpunit/TermsListViewTest.php
+++ b/view/tests/phpunit/TermsListViewTest.php
@@ -40,7 +40,7 @@ class TermsListViewTest extends \PHPUnit\Framework\TestCase {
 		$languageNameLookup = $this->createMock( LanguageNameLookup::class );
 		$languageNameLookup->expects( $this->exactly( $languageNameCalls ) )
 			->method( 'getNameForTerms' )
-			->willReturnCallback( function( $languageCode ) {
+			->willReturnCallback( static function( $languageCode ) {
 				return "<LANGUAGENAME-$languageCode>";
 			} );
 		$languageNameLookup->expects( $this->never() )
@@ -48,7 +48,7 @@ class TermsListViewTest extends \PHPUnit\Framework\TestCase {
 
 		$languageDirectionalityLookup = $this->createMock( LanguageDirectionalityLookup::class );
 		$languageDirectionalityLookup->method( 'getDirectionality' )
-			->willReturnCallback( function( $languageCode ) {
+			->willReturnCallback( static function( $languageCode ) {
 				return [
 					'en' => 'ltr',
 					'arc' => 'rtl',
diff --git a/view/tests/phpunit/ToolbarEditSectionGeneratorTest.php b/view/tests/phpunit/ToolbarEditSectionGeneratorTest.php
index 4b44217..c26e161 100644
--- a/view/tests/phpunit/ToolbarEditSectionGeneratorTest.php
+++ b/view/tests/phpunit/ToolbarEditSectionGeneratorTest.php
@@ -105,7 +105,7 @@ class ToolbarEditSectionGeneratorTest extends \PHPUnit\Framework\TestCase {
 	private function newToolbarEditSectionGenerator() {
 		$specialPageLinker = $this->createMock( SpecialPageLinker::class );
 		$specialPageLinker->method( 'getLink' )
-			->willReturnCallback( function( $specialPage, $params = [] ) {
+			->willReturnCallback( static function( $specialPage, $params = [] ) {
 				return 'Special:' . $specialPage . '/' . implode( '/', $params );
 			} );
 
-- 
2.39.2

$ date
--- stdout ---
Fri Dec 13 07:37:59 UTC 2024

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-Wikibase.git repo --depth=1 -b master
--- stderr ---
Cloning into 'repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stderr ---
Submodule 'lib/resources/wikibase-api' (https://gerrit.wikimedia.org/r/wikibase/javascript-api) registered for path 'lib/resources/wikibase-api'
Submodule 'view/lib/wikibase-data-model' (https://phabricator.wikimedia.org/source/wikibase-data-model.git) registered for path 'view/lib/wikibase-data-model'
Submodule 'view/lib/wikibase-data-values' (https://phabricator.wikimedia.org/source/datavalues-javascript.git) registered for path 'view/lib/wikibase-data-values'
Submodule 'view/lib/wikibase-data-values-value-view' (https://gerrit.wikimedia.org/r/data-values/value-view) registered for path 'view/lib/wikibase-data-values-value-view'
Submodule 'view/lib/wikibase-serialization' (https://phabricator.wikimedia.org/source/wikibase-serialization.git) registered for path 'view/lib/wikibase-serialization'
Submodule 'view/lib/wikibase-termbox' (https://gerrit.wikimedia.org/r/wikibase/termbox) registered for path 'view/lib/wikibase-termbox'
Cloning into '/src/repo/lib/resources/wikibase-api'...
Cloning into '/src/repo/view/lib/wikibase-data-model'...
Cloning into '/src/repo/view/lib/wikibase-data-values'...
Cloning into '/src/repo/view/lib/wikibase-data-values-value-view'...
Cloning into '/src/repo/view/lib/wikibase-serialization'...
Cloning into '/src/repo/view/lib/wikibase-termbox'...
--- stdout ---
Submodule path 'lib/resources/wikibase-api': checked out '7f076e3534686ab35f7807462539fcef08b6e9f2'
Submodule path 'view/lib/wikibase-data-model': checked out '6b304daeb804591ddc4520925337429ac086515c'
Submodule path 'view/lib/wikibase-data-values': checked out '457733ebe7b0d090a67e2623350be2e4286077fe'
Submodule path 'view/lib/wikibase-data-values-value-view': checked out '0bd65f4e0cd4defdc315e15d462a09e8b6d9bf8f'
Submodule path 'view/lib/wikibase-serialization': checked out 'e9b9a736f19e42497bfe45cb6f323781b00b5023'
Submodule path 'view/lib/wikibase-termbox': checked out '87f5df732da97a7acd29b20bfd4f1aedff509fbf'

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/master
--- stdout ---
c8f017219dc50a6c5ac62433a54d0447b19d69bb refs/heads/master

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@wdio/cli": {
      "name": "@wdio/cli",
      "severity": "high",
      "isDirect": true,
      "via": [
        "webdriverio",
        "yarn-install"
      ],
      "effects": [
        "@wdio/local-runner",
        "@wdio/spec-reporter"
      ],
      "range": "5.4.10 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/cli"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.4.2",
        "isSemVerMajor": true
      }
    },
    "@wdio/local-runner": {
      "name": "@wdio/local-runner",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli",
        "@wdio/runner"
      ],
      "effects": [],
      "range": "6.0.4 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/local-runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.4.2",
        "isSemVerMajor": true
      }
    },
    "@wdio/runner": {
      "name": "@wdio/runner",
      "severity": "high",
      "isDirect": false,
      "via": [
        "webdriverio"
      ],
      "effects": [
        "@wdio/local-runner"
      ],
      "range": "7.16.5 - 8.40.6",
      "nodes": [
        "node_modules/@wdio/runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.4.2",
        "isSemVerMajor": true
      }
    },
    "@wdio/spec-reporter": {
      "name": "@wdio/spec-reporter",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli"
      ],
      "effects": [],
      "range": "6.0.4 - 8.0.0-alpha.631",
      "nodes": [
        "node_modules/@wdio/spec-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/spec-reporter",
        "version": "9.4.2",
        "isSemVerMajor": true
      }
    },
    "cross-spawn": {
      "name": "cross-spawn",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1100562,
          "name": "cross-spawn",
          "dependency": "cross-spawn",
          "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn",
          "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<6.0.6"
        }
      ],
      "effects": [
        "yarn-install"
      ],
      "range": "<6.0.6",
      "nodes": [
        "node_modules/yarn-install/node_modules/cross-spawn"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.4.2",
        "isSemVerMajor": true
      }
    },
    "devtools": {
      "name": "devtools",
      "severity": "high",
      "isDirect": false,
      "via": [
        "puppeteer-core"
      ],
      "effects": [],
      "range": ">=7.16.5",
      "nodes": [
        "node_modules/devtools"
      ],
      "fixAvailable": true
    },
    "mocha": {
      "name": "mocha",
      "severity": "low",
      "isDirect": true,
      "via": [
        "nanoid"
      ],
      "effects": [],
      "range": "8.2.0 - 10.2.0",
      "nodes": [
        "node_modules/mocha"
      ],
      "fixAvailable": true
    },
    "mwbot": {
      "name": "mwbot",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "request"
      ],
      "effects": [
        "wdio-mediawiki",
        "wdio-wikibase"
      ],
      "range": ">=0.1.6",
      "nodes": [
        "node_modules/mwbot"
      ],
      "fixAvailable": false
    },
    "nanoid": {
      "name": "nanoid",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1101092,
          "name": "nanoid",
          "dependency": "nanoid",
          "title": "Infinite loop in nanoid",
          "url": "https://github.com/advisories/GHSA-mwcw-c2x4-8c55",
          "severity": "low",
          "cwe": [
            "CWE-835"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<3.3.8"
        }
      ],
      "effects": [
        "mocha"
      ],
      "range": "<3.3.8",
      "nodes": [
        "node_modules/nanoid",
        "node_modules/postcss/node_modules/nanoid"
      ],
      "fixAvailable": true
    },
    "puppeteer-core": {
      "name": "puppeteer-core",
      "severity": "high",
      "isDirect": false,
      "via": [
        "ws"
      ],
      "effects": [
        "devtools",
        "webdriverio"
      ],
      "range": "11.0.0 - 22.11.1",
      "nodes": [
        "node_modules/devtools/node_modules/puppeteer-core",
        "node_modules/puppeteer-core"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.4.2",
        "isSemVerMajor": true
      }
    },
    "request": {
      "name": "request",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1096727,
          "name": "request",
          "dependency": "request",
          "title": "Server-Side Request Forgery in Request",
          "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
          "severity": "moderate",
          "cwe": [
            "CWE-918"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<=2.88.2"
        },
        "tough-cookie"
      ],
      "effects": [
        "mwbot"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": false
    },
    "tough-cookie": {
      "name": "tough-cookie",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1097682,
          "name": "tough-cookie",
          "dependency": "tough-cookie",
          "title": "tough-cookie Prototype Pollution vulnerability",
          "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 6.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
          },
          "range": "<4.1.3"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<4.1.3",
      "nodes": [
        "node_modules/tough-cookie"
      ],
      "fixAvailable": false
    },
    "wdio-mediawiki": {
      "name": "wdio-mediawiki",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        "mwbot"
      ],
      "effects": [],
      "range": "*",
      "nodes": [
        "node_modules/wdio-mediawiki"
      ],
      "fixAvailable": false
    },
    "wdio-wikibase": {
      "name": "wdio-wikibase",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        "mwbot",
        "wdio-mediawiki"
      ],
      "effects": [],
      "range": "*",
      "nodes": [
        "node_modules/wdio-wikibase"
      ],
      "fixAvailable": false
    },
    "webdriverio": {
      "name": "webdriverio",
      "severity": "high",
      "isDirect": false,
      "via": [
        "devtools",
        "puppeteer-core"
      ],
      "effects": [
        "@wdio/cli",
        "@wdio/runner"
      ],
      "range": "7.16.5 - 8.40.6",
      "nodes": [
        "node_modules/webdriverio"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.4.2",
        "isSemVerMajor": true
      }
    },
    "ws": {
      "name": "ws",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098392,
          "name": "ws",
          "dependency": "ws",
          "title": "ws affected by a DoS when handling a request with many HTTP headers",
          "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q",
          "severity": "high",
          "cwe": [
            "CWE-476"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=8.0.0 <8.17.1"
        }
      ],
      "effects": [
        "puppeteer-core"
      ],
      "range": "8.0.0 - 8.17.0",
      "nodes": [
        "node_modules/devtools/node_modules/ws",
        "node_modules/ws"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.4.2",
        "isSemVerMajor": true
      }
    },
    "yarn-install": {
      "name": "yarn-install",
      "severity": "high",
      "isDirect": false,
      "via": [
        "cross-spawn"
      ],
      "effects": [
        "@wdio/cli"
      ],
      "range": "*",
      "nodes": [
        "node_modules/yarn-install"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.4.2",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 2,
      "moderate": 5,
      "high": 10,
      "critical": 0,
      "total": 17
    },
    "dependencies": {
      "prod": 1,
      "dev": 1144,
      "optional": 2,
      "peer": 2,
      "peerOptional": 0,
      "total": 1144
    }
  }
}

--- end ---
$ /usr/bin/composer install
--- stderr ---
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 58 installs, 0 updates, 0 removals
  - Locking composer/installers (v1.12.0)
  - Locking composer/pcre (3.3.2)
  - Locking composer/semver (3.4.3)
  - Locking composer/spdx-licenses (1.5.8)
  - Locking composer/xdebug-handler (3.0.5)
  - Locking data-values/common (1.2.0)
  - Locking data-values/data-values (3.1.0)
  - Locking data-values/geo (4.5.0)
  - Locking data-values/interfaces (1.2.0)
  - Locking data-values/number (0.12.3)
  - Locking data-values/serialization (1.2.5)
  - Locking data-values/time (1.2.0)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v0.7.2)
  - Locking diff/diff (3.3.1)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking mediawiki/mediawiki-codesniffer (dev-master fd6ecb5)
  - Locking mediawiki/mediawiki-phan-config (0.14.0)
  - Locking mediawiki/minus-x (1.1.3)
  - Locking mediawiki/phan-taint-check-plugin (6.0.0)
  - Locking microsoft/tolerant-php-parser (v0.1.2)
  - Locking monolog/monolog (2.10.0)
  - Locking netresearch/jsonmapper (v4.5.0)
  - Locking onoi/message-reporter (1.4.2)
  - Locking phan/phan (5.4.3)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.4.0)
  - Locking phpat/phpat (0.10.20)
  - Locking phpcsstandards/phpcsextra (1.2.1)
  - Locking phpcsstandards/phpcsutils (1.0.12)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.3.0)
  - Locking phpdocumentor/type-resolver (1.6.2)
  - Locking phpstan/phpdoc-parser (0.4.9)
  - Locking phpstan/phpstan (1.12.12)
  - Locking psr/container (2.0.2)
  - Locking psr/http-message (1.1)
  - Locking psr/log (1.1.4)
  - Locking psr/simple-cache (1.0.1)
  - Locking sabre/event (5.1.7)
  - Locking serialization/serialization (4.1.0)
  - Locking slevomat/coding-standard (6.4.1)
  - Locking squizlabs/php_codesniffer (3.10.3)
  - Locking swaggest/json-diff (v3.11.0)
  - Locking symfony/console (v7.2.1)
  - Locking symfony/deprecation-contracts (v3.5.1)
  - Locking symfony/polyfill-ctype (v1.31.0)
  - Locking symfony/polyfill-intl-grapheme (v1.31.0)
  - Locking symfony/polyfill-intl-normalizer (v1.31.0)
  - Locking symfony/polyfill-mbstring (v1.31.0)
  - Locking symfony/polyfill-php80 (v1.31.0)
  - Locking symfony/service-contracts (v3.5.1)
  - Locking symfony/string (v7.2.0)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (1.11.0)
  - Locking wikimedia/at-ease (v3.0.0)
  - Locking wikimedia/purtle (v2.0.0)
  - Locking wikimedia/timestamp (v4.2.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 58 installs, 0 updates, 0 removals
  - Downloading dealerdirect/phpcodesniffer-composer-installer (v0.7.2)
  - Downloading data-values/geo (4.5.0)
  - Downloading data-values/number (0.12.3)
  - Downloading data-values/serialization (1.2.5)
  - Downloading data-values/time (1.2.0)
  - Downloading mediawiki/mediawiki-codesniffer (dev-master fd6ecb5)
  - Downloading phpdocumentor/type-resolver (1.6.2)
  - Downloading phpdocumentor/reflection-docblock (5.3.0)
  - Downloading phpstan/phpstan (1.12.12)
  - Downloading phpat/phpat (0.10.20)
  - Downloading psr/simple-cache (1.0.1)
  - Downloading phpstan/phpdoc-parser (0.4.9)
  - Downloading slevomat/coding-standard (6.4.1)
  0/13 [>---------------------------]   0%
  6/13 [============>---------------]  46%
 12/13 [=========================>--]  92%
 13/13 [============================] 100%
  - Installing composer/installers (v1.12.0): Extracting archive
  - Installing squizlabs/php_codesniffer (3.10.3): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v0.7.2): Extracting archive
  - Installing composer/pcre (3.3.2): Extracting archive
  - Installing symfony/polyfill-php80 (v1.31.0): Extracting archive
  - Installing data-values/interfaces (1.2.0): Extracting archive
  - Installing data-values/data-values (3.1.0): Extracting archive
  - Installing data-values/geo (4.5.0): Extracting archive
  - Installing data-values/common (1.2.0): Extracting archive
  - Installing data-values/number (0.12.3): Extracting archive
  - Installing serialization/serialization (4.1.0): Extracting archive
  - Installing data-values/serialization (1.2.5): Extracting archive
  - Installing data-values/time (1.2.0): Extracting archive
  - Installing diff/diff (3.3.1): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.0.12): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.2.1): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.31.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.8): Extracting archive
  - Installing composer/semver (3.4.3): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (dev-master fd6ecb5): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.31.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.31.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.31.0): Extracting archive
  - Installing symfony/string (v7.2.0): Extracting archive
  - Installing symfony/deprecation-contracts (v3.5.1): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.5.1): Extracting archive
  - Installing symfony/console (v7.2.1): Extracting archive
  - Installing sabre/event (5.1.7): Extracting archive
  - Installing netresearch/jsonmapper (v4.5.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
  - Installing webmozart/assert (1.11.0): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing phpdocumentor/type-resolver (1.6.2): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.3.0): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (1.1.4): Extracting archive
  - Installing composer/xdebug-handler (3.0.5): Extracting archive
  - Installing phan/phan (5.4.3): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (6.0.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.14.0): Extracting archive
  - Installing mediawiki/minus-x (1.1.3): Extracting archive
  - Installing monolog/monolog (2.10.0): Extracting archive
  - Installing onoi/message-reporter (1.4.2): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.4.0): Extracting archive
  - Installing phpstan/phpstan (1.12.12): Extracting archive
  - Installing phpat/phpat (0.10.20): Extracting archive
  - Installing psr/http-message (1.1): Extracting archive
  - Installing psr/simple-cache (1.0.1): Extracting archive
  - Installing phpstan/phpdoc-parser (0.4.9): Extracting archive
  - Installing slevomat/coding-standard (6.4.1): Extracting archive
  - Installing swaggest/json-diff (v3.11.0): Extracting archive
  - Installing wikimedia/at-ease (v3.0.0): Extracting archive
  - Installing wikimedia/purtle (v2.0.0): Extracting archive
  - Installing wikimedia/timestamp (v4.2.0): Extracting archive
  0/55 [>---------------------------]   0%
 20/55 [==========>-----------------]  36%
 31/55 [===============>------------]  56%
 42/55 [=====================>------]  76%
 53/55 [==========================>-]  96%
 55/55 [============================] 100%
10 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
23 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../../repo,../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils,../../slevomat/coding-standard

--- end ---
Upgrading c:mediawiki/mediawiki-codesniffer from dev-master#fd6ecb5ffbe353507ca05387176db02f0f41f6fe -> 45.0.0
Upgrading c:mediawiki/mediawiki-phan-config from 0.14.0 -> 0.15.0
$ /usr/bin/composer update
--- stderr ---
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 4 updates, 0 removals
  - Downgrading mediawiki/mediawiki-codesniffer (dev-master fd6ecb5 => v45.0.0)
  - Upgrading mediawiki/mediawiki-phan-config (0.14.0 => 0.15.0)
  - Upgrading mediawiki/phan-taint-check-plugin (6.0.0 => 6.1.0)
  - Upgrading phan/phan (5.4.3 => 5.4.5)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 4 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Downgrading mediawiki/mediawiki-codesniffer (dev-master fd6ecb5 => v45.0.0): Extracting archive
  - Upgrading phan/phan (5.4.3 => 5.4.5): Extracting archive
  - Upgrading mediawiki/phan-taint-check-plugin (6.0.0 => 6.1.0): Extracting archive
  - Upgrading mediawiki/mediawiki-phan-config (0.14.0 => 0.15.0): Extracting archive
 0/4 [>---------------------------]   0%
 3/4 [=====================>------]  75%
 4/4 [============================] 100%
Generating autoload files
23 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found
--- stdout ---

--- end ---
Previously failing phpcs rules: {'MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected', 'MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic', 'MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate', 'MediaWiki.Usage.StaticClosure.StaticClosure', 'MediaWiki.Commenting.FunctionComment.MissingParamTag'}
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":494,"warnings":1186,"fixable":1137},"files":{"\/src\/repo\/view\/src\/SpecialPageLinker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyStatementIdRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemStatementIdRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedPatchRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemLabelsRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabel\/DeserializedGetPropertyLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabels\/GetPropertyLabelsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemLabel\/DeserializedRemoveItemLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedPropertyDescriptionEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/LabelLanguageCodeRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemLabel\/RemoveItemLabelValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/JsonPatcher.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/ValidationError.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedEditMetadataRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemDescriptionEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/AliasesInLanguageEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemDescriptionsRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabel\/GetPropertyLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabels\/GetPropertyLabels.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetLatestItemRevisionMetadata.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetSitelink\/SetSitelinkValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedItemFieldsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetSitelink\/DeserializedSetSitelinkRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemDescriptions\/PatchItemDescriptionsResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/StatementSectionsView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/EditMetadata.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveStatement\/RemoveStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpAliasesResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/StatementIdValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/DefaultMetaTagsCreator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyIdFilterValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/PlaceholderExpander\/TermboxRequestInspector.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabels\/GetPropertyLabelsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpFingerprintResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/PatchItemEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/CreatePropertyEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyDescriptions\/PatchPropertyDescriptions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemLabel\/RemoveItemLabel.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/DispatchingEntityViewFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabels\/GetPropertyLabelsResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Content\/DataUpdateAdapter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOp.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/maintenance\/MockAddUnits.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":44,"column":15}]},"\/src\/repo\/repo\/includes\/Hooks\/Helpers\/OutputPageEditability.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":39,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":43,"column":13}]},"\/src\/repo\/view\/src\/FingerprintableEntityMetaTagsCreator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/PropertyTermsCollisionDetectorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/BabelUserLanguageLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetSitelink\/SetSitelink.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/StatementRankSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemDescriptions\/PatchItemDescriptions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyDescriptions\/PatchPropertyDescriptionsResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/DummyChangeOpResultTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveStatement\/RemoveStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Localizer\/ExceptionLocalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveStatement\/DeserializedRemoveStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemStatement\/PatchItemStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetItemDescription\/SetItemDescriptionValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/EditSectionGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/StatementReadModelConverter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/GetItemLabelsRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetItemDescription\/DeserializedSetItemDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemLabel\/RemoveItemLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PropertyDescriptionsRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/SitelinkRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyAliasesInLanguageEditRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedSitelinkEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/StatementsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/AllTypesEntityDeserializerTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":24,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":28,"column":16}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetSitelink\/SetSitelinkResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabel\/DeserializedGetItemLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemStatement\/PatchItemStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/LabelsChangeOpDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/DifferencesSnakVisualizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialEntityData.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/EntityDiffVisualizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/PartiallyValidatedLabels.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/StatementIdRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyDescriptions\/PatchPropertyDescriptionsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Localizer\/DispatchingExceptionLocalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/RemovePropertyStatement\/RemovePropertyStatementTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemStatement\/DeserializedPatchItemStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/Module\/TemplateModule.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ApiHelperFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/OutputPageJsConfigBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/StatementGroupListViewTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":202,"column":35}]},"\/src\/repo\/repo\/config\/Wikibase.example.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":19,"column":17}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/StatementGuidParserTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemLabelWithFallbackRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ChangeOpDeserializerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Hooks\/WikibaseHandleChangesHook.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveStatement\/RemoveStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemStatement\/PatchItemStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialItemsWithoutSitelinks.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Localizer\/ChangeOpDeserializationExceptionLocalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabel\/GetItemLabelResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Validators\/NotMulValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetItemDescription\/SetItemDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SettingsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/PropertyChangeOpDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyAliasesInLanguage\/DeserializedGetPropertyAliasesInLanguageRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/ReplaceStatementRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/EntityLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetPropertyDescription\/SetPropertyDescriptionResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TypeIdsAcquirerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PropertyPartsRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetSitelink\/SetSitelinkRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/PrefetchingTermLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ContentModelMappingsTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":38,"column":48}]},"\/src\/repo\/repo\/includes\/Hooks\/RecentChangeSaveHookHandler.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":107,"column":13}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/PropertySpecificComponentsRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyStatement\/PatchPropertyStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PropertyLabelRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/DataAccess\/TermLookupEntityTermsRetrieverTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/CreateItem\/DeserializedCreateItemRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/AliasTermBuffer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpReferenceRemoveTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyStatement\/PatchPropertyStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetItemDescription\/SetItemDescriptionResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/DefaultSnakFormatterBuildersTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PropertyAliasesInLanguageRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ValueTypeLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/FullStatementRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabel\/GetItemLabel.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Entity\/PropertyId.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/EditMetadataRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/src\/Serializers\/MapSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemIdRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/MediaWikiLocalizedTextProvider.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":49,"column":24}]},"\/src\/repo\/client\/maintenance\/updateSubscriptions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Localizer\/ParseExceptionLocalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyStatement\/DeserializedPatchPropertyStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyAliasesInLanguage\/GetPropertyAliasesInLanguage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PropertyRevisionMetadataRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/StatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/maintenance\/RebuildEntityQuantityUnitTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/ClientSiteLinkTitleLookupTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":34,"column":35}]},"\/src\/repo\/client\/includes\/DataAccess\/Scribunto\/WikibaseLanguageDependentLuaBindings.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabel\/GetItemLabelValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialPageCopyrightView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemFieldsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/ToolbarEditSectionGeneratorTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":108,"column":35}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityChangeLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetPropertyDescription\/SetPropertyDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/LangLinkSiteGroupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ItemTermStoreWriterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/ArticleRevisionVisibilitySetHookHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Hooks\/ShortDescHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Localizer\/MessageExceptionLocalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/StringNormalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/DeleteDispatcher.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetPropertyDescription\/SetPropertyDescriptionValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/ItemDescriptionsContentsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityTitleTextLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyStatement\/PatchPropertyStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/src\/Deserializers\/LegacyEntityIdDeserializer.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":44,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":49,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":57,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/Exceptions\/EditPrevented.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabel\/GetItemLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/CreateItem\/CreateItem.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityRedirectChecker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Content\/PropertyHandler.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":107,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":141,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":175,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/GetPropertyAliasesRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/DataAccess\/Scribunto\/WikibaseStatsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/DataAccess\/SnaksFinder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/ValueSnakRdfBuilderFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Interactors\/EntityRedirectCreationStatus.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/RedirectResolvingEntityLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/TermChangeOpSerializationValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Localizer\/GenericExceptionLocalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/GeoDataDataUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/src\/Serializers\/SnakSerializer.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":70,"column":13}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TokenCheckInteractorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TermInLangIdsResolverFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyAliasesInLanguage\/GetPropertyAliasesInLanguageRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyAliasesInLanguage\/GetPropertyAliasesInLanguageValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/SiteIdRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/ItemLabelValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/Exceptions\/ResourceTooLargeException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/PropertyLookupException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/RepoDomainDbFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetItemDescription\/SetItemDescription.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/CreateItem\/CreateItemResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Entity\/ItemIdSet.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/TypeIdsLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplaceItemStatement\/ReplaceItemStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityRdfBuilderFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/BasicDiffView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/SnaksFinderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/DataAccess\/Scribunto\/WikibaseLibraryInProcessEntityCacheTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":41,"column":17}]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/TermInLangIdsResolver.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/maintenance\/PopulateUnexpectedUnconnectedPagePageProp.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/GetItemAliasesInLanguage\/GetItemAliasesInLanguageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/src\/Deserializers\/EntityDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/SourceAndTypeDispatchingUrlLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItem\/GetItemRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/DescriptionLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/Reference\/ReferenceFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/DiffView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/src\/Serializers\/TypedSnakSerializer.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":41,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":50,"column":13}]},"\/src\/repo\/lib\/includes\/Store\/SourceAndTypeDispatchingExistenceChecker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/Exceptions\/PatchTestConditionFailedException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/Exceptions\/RateLimitReached.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ConvertArrayObjectsToArray.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LinkTargetEntityIdLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplaceItemStatement\/ReplaceItemStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/DatabaseEntitySource.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyIdValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/ItemDescriptionValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/SourceDispatchingPropertyDataTypeLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityTermStoreWriter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/PropertyOrderProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AssertStatementSubjectExists.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/FingerprintChangeOpDeserializer.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":12}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/InProcessCachingDataTypeLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyAliasesInLanguage\/GetPropertyAliasesInLanguageResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/CreateItem\/CreateItemRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/TermboxViewTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/CreateItem\/CreateItemValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetPropertyDescription\/SetPropertyDescription.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityIdComposerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":25,"column":75}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetPropertyDescription\/DeserializedSetPropertyDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/TermFallbackCacheTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItem\/GetItemResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/HttpUrlPropertyOrderProvider.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":42,"column":15}]},"\/src\/repo\/repo\/includes\/Rdf\/TruthyStatementRdfBuilderFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/GlobeCoordinateInlineWikitextKartographerFormatter.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":50,"column":13}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Statement\/StatementGuidParserTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/SkinAfterBottomScriptsHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityArticleIdLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/EntityIdPlainLinkFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Statement\/Grouper\/NullStatementGrouperTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/Exceptions\/PatchPathException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/Exceptions\/TempAccountCreationLimitReached.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplaceItemStatement\/ReplaceItemStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplaceItemStatement\/DeserializedReplaceItemStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescription\/GetPropertyDescriptionValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/TextInjector.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/SimpleEntityTermsView.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":102,"column":15}]},"\/src\/repo\/client\/maintenance\/populateEntityUsage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/DataAccess\/ClientSiteLinkTitleLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/BadRevisionException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/PropertyRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/EntityParserOutputUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/ReferencedEntityIdLookupException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabels\/GetItemLabelsResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityLinkFormatterFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Entity\/ItemId.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":29,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/Exceptions\/SitelinkTargetNotFound.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/InternalFormatDeserializerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemWriteModelRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/PropertyInfoDataTypeLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/EntityDataPurger.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/src\/Serializers\/StatementListSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/RawMessageParameter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/SiteLinkBadgeChangeOpSerializationValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityDataSerializationServiceTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabels\/DeserializedGetItemLabelsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/src\/Deserializers\/LegacyFingerprintDeserializer.php":{"errors":4,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":48,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":58,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":68,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":80,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemLabels\/PatchItemLabelsResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Localizer\/MessageParameterFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityTitleLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/src\/ChangeRow.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/maintenance\/UpdateUnitsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AssertItemExists.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemLabelRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItem\/GetItem.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/InterWikiLinkHtmlFormatterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Hooks\/BeforePageDisplayHandler.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":83,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescription\/GetPropertyDescriptionResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/SnakUrlExpander.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Validators\/TermValidatorFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/src\/DiffChange.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/PatchPropertyLabelsRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyDescriptionEditRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/LanguageCodeRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/ByTypeDispatchingEntityRevisionLookup.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":57,"column":12}]},"\/src\/repo\/client\/includes\/DataAccess\/ReferenceFormatterFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/StatementRemover.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/EntityDiffVisualizerFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Content\/EntityContentFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/LabelsSyntaxValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/LocalizedTextProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItem\/GetItemValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItem\/DeserializedGetItemRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/RedirectResolvingLatestRevisionLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/DefaultValueFormatterBuildersTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/EntityDiffTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/CreateProperty\/CreateProperty.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyFieldsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/EntityLoadingHelperTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/DisabledEntityTypesEntityLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/DataAccessServices.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/src\/Serializers\/TermListSerializer.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":40,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PropertyLabelWithFallbackRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/EntityTypesConfigFeddyPropsAugmenterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/StorageEntitySerializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescription\/GetPropertyDescription.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescriptions\/GetPropertyDescriptionsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ChangeHolderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/ImageLinksDataUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Localizer\/ChangeOpApplyExceptionLocalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabels\/GetItemLabels.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/PlaceholderEmittingEntityTermsViewTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/SitelinkValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemDescriptionWithFallbackRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/DataAccessSnakFormatterFactoryTest.php":{"errors":1,"warnings":1,"messages":[{"message":"Doc comment for parameter \"$expectedFormat\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":68,"column":5},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":77,"column":35}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescription\/DeserializedGetPropertyDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/FullStatementRdfBuilderFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/DifferenceContentLanguages.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/EntityParserOutputGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Entity\/SerializableEntityId.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":28,"column":20}]},"\/src\/repo\/view\/tests\/phpunit\/ViewFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabels\/GetItemLabelsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/EntitySlotDiffRenderer.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":29,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":12}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/ReferencedEntityIdLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/CopyrightMessageBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyDescription\/RemovePropertyDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PropertyUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/maintenance\/RemoveTermsInLanguageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/CacheRetrievingEntityRevisionLookup.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":104,"column":32},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":108,"column":80}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/PageHistoryPagerHookHandlerTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":108,"column":43},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":113,"column":33}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityRevisionLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/ValueSnakRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/LanguageFallbackLabelDescriptionLookupTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":102,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":111,"column":35}]},"\/src\/repo\/lib\/includes\/Formatters\/DispatchingValueFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/EntityArticleIdNullLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/EntityTermsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SiteLinkPageNormalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/EntityDifferTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":29,"column":78},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":35,"column":78}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/RdfVocabularyTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemLabels\/PatchItemLabelsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/PropertyLabelValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabels\/GetItemLabelsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/WikibaseClient.i18n.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemStatementsRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/ExampleSettings.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/PrefetchingEntityStubRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/UnknownTypeEntityIdHtmlLinkFormatterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyDescription\/DeserializedRemovePropertyDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyDescription\/RemovePropertyDescriptionValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescription\/GetPropertyDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Localizer\/ChangeOpValidationExceptionLocalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescriptions\/GetPropertyDescriptions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/src\/ItemChange.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":52,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/PartiallyValidatedDescriptions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/TextInjectorTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":48,"column":45}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/LegacyIdInterpreter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/LegacyAdapterItemLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/DataAccess\/EntityUpdaterItemUpdaterTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":69,"column":35}]},"\/src\/repo\/lib\/includes\/Store\/RevisionBasedEntityRedirectTargetLookup.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":23,"column":23},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":34,"column":27}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntitySourceLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/HookRunnerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemCreator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/NoBadUsageTestBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/PatchItemStatementRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/ClaimsChangeOpDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescriptions\/DeserializedGetPropertyDescriptionsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EnabledEntityTypesForSearchTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityViewFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/PropertyDescriptionValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemAliasesInLanguageEditRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Normalization\/CommonsMediaValueNormalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/ItemOrderProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PropertyAliasesRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Statement\/Grouper\/FilteringStatementGrouperTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/EntityIdLabelFormatterFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Specials\/SpecialSetSiteLinkTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/EntityRevisionTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescriptions\/GetPropertyDescriptionsResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/NonExistingEntityIdHtmlFormatterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/Utils.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/DataAccess\/StatementTransclusionInteractor.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/LookupConstants.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/EntityRedirectLookupException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemRevisionMetadataRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/FulltextSearchTypesTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":19,"column":54},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":46,"column":26}]},"\/src\/repo\/lib\/includes\/Formatters\/EntityIdSiteLinkFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/ChangeOpDeserializationException.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityDiffVisualizerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/src\/Serializers\/ItemSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/ToolbarEditSectionGenerator.php":{"errors":4,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":56,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":105,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":148,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":156,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemLabelEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/RemovePropertyLabel\/RemovePropertyLabelTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityTitleStoreLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/src\/Deserializers\/LegacyItemDeserializer.php":{"errors":4,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":129,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":135,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":146,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":158,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItem\/PatchItemRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Serializer\/ClientEntitySerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/EditMetadataValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/SitelinkTargetTitleResolver.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LocalEntityNamespaceLookupTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":30,"column":28}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemAliases\/PatchItemAliasesRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/PermissionsTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/AnonymousEditWarningBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescriptions\/GetPropertyDescriptionsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemIdRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Statement\/Grouper\/ByPropertyIdStatementGrouperTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PropertyCreator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemAliases\/DeserializedPatchItemAliasesRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/BaseDataModelSerializerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyDescription\/RemovePropertyDescription.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialNewProperty.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/Scribunto\/SnakSerializationRendererTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":47,"column":35}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/AliasLanguageCodeRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/MessageInLanguageProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/GetItemAliasesRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/DatabaseInnerTermStoreCleaner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetItemLabel\/SetItemLabelValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/KartographerEmbeddingHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItem\/PatchItemResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/UpdateRepoHookHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/src\/RepoRevisionIdentifier.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/TermboxView.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":57,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":67,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/JsonPatchValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/DescriptionLanguageCodeValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiringTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/TitleLookupBasedEntityArticleIdLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Modules\/SitesModuleTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":33,"column":35}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Reference.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/MobileSiteTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/TypeDispatchingEntityStore.php":{"errors":1,"warnings":0,"messages":[{"message":"Doc comment for parameter \"$tags\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":93,"column":5}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyDescriptionEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedPropertyAliasesInLanguageEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PropertyStatementsRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddItemStatement\/DeserializedAddItemStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/PropertyViewTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/SnakFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Serializer\/ClientStatementListSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/EntitySourceDefinitionsConfigParser.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":99,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":129,"column":20}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemLabels\/PatchedItemLabelsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/RdfBuilderTestData.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":343,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemSerializationRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedStatementSerializationRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/VocabularyUriFormatterTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":43,"column":35}]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/PermissionChecker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/src\/Deserializers\/LegacyEntityDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ExternalFormatStatementDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/PrefetchingPropertyTermLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Interactors\/ItemMergeInteractor.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/DiffOpValueFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/ViewContentTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemLabels\/PatchItemLabelsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/TermListPatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/ItemSourceTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/StatementRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/TypeIdsAcquirer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddItemStatement\/AddItemStatementResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/RepoNoBadUsageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Statement\/GuidGeneratorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Modules\/MediaWikiConfigModuleTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityNamespaceLookupTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":25,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemLabels\/DeserializedPatchItemLabelsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/InMemoryEntityLookup.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":107,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":111,"column":12}]},"\/src\/repo\/lib\/includes\/Store\/RedirectRevision.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/StatementWriteModelRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/GlobeCoordinateKartographerDataUpdaterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/FallbackLabelDescriptionLookupFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetItemLabel\/SetItemLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/ExternalLinksDataUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/src\/Serializers\/PropertySerializer.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":76,"column":13}]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/DataAccess\/Scribunto\/WikibaseEntityLibraryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/DeleteDispatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/RangeTraversableTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/ShowSearchHitHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/CachingSiteLinkLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialWikibasePage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/StatementSubjectRevisionMetaDataRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/FallbackLabelDescriptionLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/bootstrap.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemAliases\/PatchedItemAliasesValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/WikibaseClient.i18n.magic.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Serializer\/ClientSerializer.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":53,"column":13}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TermsCollisionDetectorFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/SnakFormatterFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/PropertyDifferTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/ChangeOpDeserializerFactory.php":{"errors":6,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":123,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":132,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":140,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":148,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":156,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":163,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/TruthyStatementRdfBuilderFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PatchRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/SitelinksRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/SourceAndTypeDispatchingArticleIdLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemAliases\/PatchItemAliasesValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/SiteLink.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/PropertyIdProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/SiteLinkStore.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetItemLabel\/SetItemLabelResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/src\/Deserializers\/LegacyPropertyDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/Snak\/SnakListTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyAliasesInLanguageEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/QuantityDetailsFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/SitelinksValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/CachedDatabasePropertyLabelResolver.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/PropertyDataTypeLookupException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/StatementUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityIdParserTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":31,"column":65},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":55,"column":61}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddItemStatement\/AddItemStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/RepoLinker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityPermissionCheckerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItem\/PatchItem.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/LinkTargetEntityIdLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Snak\/PropertyNoValueSnak.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpStatementTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedPropertyIdFilterRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/EntityTypeAwareDiffOpFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/WikibaseSnakFormatterBuildersTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Services\/ItemAliasesInLanguageRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/EntityAccessLimitException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddItemStatement\/AddItemStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/DataAccess\/FallbackLookupFactoryTermsRetrieverTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemAliases\/PatchItemAliasesResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityStubRdfBuilderFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/PatchPropertyDescriptions\/PatchedPropertyDescriptionsValidatorTest.php":{"errors":1,"warnings":0,"messages":[{"message":"Doc comment for parameter \"$expectedError\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":57,"column":5}]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/SetItemLabelRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/ParameterizedDescriptionTrait.php":{"errors":1,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":45,"column":13},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":55,"column":21}]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/ItemChangeOpDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItem\/PatchItemValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/ItemLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/ItemAndPropertySourceTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/CachingPropertyOrderProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/SnakFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItem\/DeserializedPatchItemRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Api\/ApiQueryWithContinueTrait.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/PropertyLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LanguageNameLookupFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemLabels\/PatchItemLabels.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/EntityContentDiffView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/TypedValueFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/PropertyInfoLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/GetItemLabelWithFallbackRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/CreateProperty\/CreatePropertyValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/OtherProjectsSidebarGeneratorTest.php":{"errors":2,"warnings":0,"messages":[{"message":"Doc comment for parameter \"$expectedMethod\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":144,"column":5},{"message":"Doc comment for parameter \"$expectedArgument\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":144,"column":5}]},"\/src\/repo\/repo\/includes\/SummaryFormatter.php":{"errors":1,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":136,"column":17},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":228,"column":13}]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/TermInLangIdsResolverFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/DataTypeDefinitionsTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":45,"column":36}]},"\/src\/repo\/lib\/tests\/phpunit\/ServiceByTypeDispatcherTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":30,"column":16}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/PropertyHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpRemoveSiteLinkTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/src\/EntityDiffChangedAspectsFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetItemLabel\/SetItemLabel.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/StatementEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/DivergingEntityIdException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/SidebarBeforeOutputHookHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ItemDisambiguationTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/DataValue\/ValuesFinderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/SummaryParsingPrefetchHelperTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":64,"column":36}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/CachingCommonsMediaFileNameLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ReferenceNormalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/ValueDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityTitleTextLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/DescriptionsChangeOpDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/src\/ChangeStore.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/CreateProperty\/CreatePropertyResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetItemLabel\/DeserializedSetItemLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/EntitySourceDefinitions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/TermsCollisionDetectorFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/MessageInLanguageProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/EntityIdComposerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":25,"column":75}]},"\/src\/repo\/lib\/includes\/LanguageFallbackChainFactory.php":{"errors":2,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":259,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":285,"column":13},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":290,"column":13}]},"\/src\/repo\/repo\/includes\/Diff\/DispatchingEntityDiffVisualizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/InMemoryDataTypeLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/EntityIdPlainLinkFormatterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/MonolingualTextLanguagesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/SnakFormat.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/ParserHookHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/CachingEntityRevisionLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/src\/RepoRevisionIdentifierFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/AliasesEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/Snak\/SnakTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/src\/Deserializers\/LegacySiteLinkListDeserializer.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":31,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":42,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":48,"column":13}]},"\/src\/repo\/lib\/tests\/phpunit\/StaticContentLanguagesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddItemStatement\/AddItemStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/AliasesValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/CacheInvalidArgumentException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityIdLabelFormatterFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DataValueDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/CreateProperty\/DeserializedCreatePropertyRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityStoreWatcher.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/src\/SerializerFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/DataAccess\/Scribunto\/WikibaseLibraryTestCase.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":151,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":171,"column":17}]},"\/src\/repo\/lib\/includes\/UserLanguageLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/OutputPageEntityIdReader.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemDescription\/DeserializedRemoveItemDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemDescription\/RemoveItemDescriptionValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/ModifyTermTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/UnresolvedEntityRedirectException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/CompositeSiteLinkConflictLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Snak\/SnakObject.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemAliases\/PatchItemAliases.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/SitelinksEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/src\/Change.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/HtmlUrlFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/includes\/Hooks\/EntityDataPurgerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":139,"column":35}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/PropertyPartsSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityTypeDefinitionsTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":31,"column":44}]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/RepoLinkerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/ViewFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/LabelDescriptionLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/CacheableEntityTermsView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/PropertyLabelsContentsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/AliasLanguageCodeValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/SiteLinksViewTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":209,"column":35}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityChangeOpProviderTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":31,"column":78}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityPatcherTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":29,"column":79},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":35,"column":79}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/CreateProperty\/CreatePropertyRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/DifferenceContentLanguagesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/ItemRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialSetLabel.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Snak\/TypedSnak.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/PropertyPatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetLatestStatementSubjectRevisionMetadata.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/EntityParserOutputGeneratorFactory.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":265,"column":13}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/PropertyDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Api\/EntitySavingHelper.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":104,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetProperty\/GetPropertyValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/TypeDispatchingEntityTitleStoreLookup.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":64,"column":13}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LocalizedTextProviderFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Api\/ApiFormatReference.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":46,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":94,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":117,"column":15}]},"\/src\/repo\/lib\/includes\/Store\/EntityTermLookupBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ParserOutput\/ParserOutputJsConfigBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/DataValueFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/ItemLookupException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/FullEntityParserOutputGeneratorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/includes\/ItemDisambiguationFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/PropertyStubRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/DatabaseTermStoreWriterBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/SitelinkEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/PropertyValuePairSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/src\/DeserializerFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/bootstrap.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/ClaimDifference.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemDescription\/RemoveItemDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemStatements\/GetItemStatements.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Interactors\/EntityRedirectCreationInteractor.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LocalEntitySourceTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/EntityRedirectLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/TypeIdsResolver.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SubEntityTypesMapperTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/SiteLinkConflictLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/NullEntityTermStoreWriter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/NoLangLinkHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetProperty\/GetPropertyResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/MultipleEntitySourceServices.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":53,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":68,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":83,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":91,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":102,"column":12}]},"\/src\/repo\/view\/tests\/phpunit\/Template\/TemplateFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/LabelLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/PrefetchingItemTermLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/EditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/IdGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/ReferenceSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Interactors\/ItemMergeException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/SummaryParsingPrefetchHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Interactors\/RedirectCreationInteractorTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":75,"column":35}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/EntityPatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/DataAccess\/Scribunto\/WikitextPreprocessingSnakFormatterTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":60,"column":13}]},"\/src\/repo\/client\/includes\/ClientHooks.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":243,"column":13}]},"\/src\/repo\/repo\/includes\/Rdf\/EntityStubRdfBuilderFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/PatchItemDescriptionsRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/EntityRedirectTargetLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/BuilderBasedDataTypeValidatorFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/ItemsWithoutSitelinksFinder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/PatchProperty\/PatchedPropertyValidatorTest.php":{"errors":0,"warnings":4,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":367,"column":32},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":371,"column":34},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":479,"column":32},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":483,"column":34}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetProperty\/GetProperty.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/FullStatementRdfBuilderFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/CommonsInlineImageFormatter.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":119,"column":13}]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/DataAccess\/EntityUpdaterIntegrationTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/Template\/TemplateTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/Scribunto\/CachingFallbackBasedTermLookupTest.php":{"errors":0,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":169,"column":37},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":174,"column":43},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":295,"column":35}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/WikibaseContentLanguagesTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":22,"column":45}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/includes\/Specials\/SpecialListPropertiesDispatchingFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Interactors\/ItemRedirectCreationInteractor.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/NullTermsCollisionDetector.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/ExternalUserNamesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/SitelinksSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/AllTypesEntitySerializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/LangLinkHandlerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/DataAccess\/Scribunto\/WikibaseLibraryNoLinkedEntityTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/ItemValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemStatements\/GetItemStatementsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/LanguageWithConversionTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/NullPrefetchingTermLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/FingerprintableEntityTermStoreTrait.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/SubscriptionLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/LabelEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/OutputFormatSnakFormatterFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/UnknownFlavorException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/EntityStubRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemSerializationRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemDescription\/RemoveItemDescription.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/StatementGroupListView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetProperty\/GetPropertyRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Snak\/PropertyValueSnak.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/AliasGroupListDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SiteLinkTargetProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/AliasesInLanguageDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/OutputFormatValueFormatterFactoryTest.php":{"errors":0,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":64,"column":28},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":67,"column":25},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":171,"column":13}]},"\/src\/repo\/lib\/tests\/phpunit\/GlobalStateFactoryMethodsResourceTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/HtmlTermRenderer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetProperty\/DeserializedGetPropertyRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/SiteIdValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/SetPropertyLabel\/SetPropertyLabelRequestTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemStatements\/GetItemStatementsResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemStatements\/DeserializedGetItemStatementsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/LanguageFallbackLabelDescriptionLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/UserLanguageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/PatchSitelinksRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/NumberLocalizerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/MobileSiteTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/LanguageLabelDescriptionLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Interactors\/ItemMergeStatus.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/Snak\/DerivedPropertyValueSnakTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Interactors\/TokenCheckInteractorTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":30,"column":17}]},"\/src\/repo\/lib\/includes\/Formatters\/EntityIdValueFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/FieldsFilterValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyStatement\/DeserializedGetPropertyStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Sites\/SiteMatrixParser.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Snak\/Snak.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/Template\/TemplateRegistryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/Scribunto\/LuaFunctionCallTrackerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":66,"column":35}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/LanguageCodeValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/TitleLookupBasedEntityArticleIdLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntitySourceDefinitionsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/tests\/EntityDiffChangedAspectsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemStatements\/GetItemStatementsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/DescriptionsEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/InMemoryTypeIdsStore.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/LegacySiteLinkListDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/RdfBuilderFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedStatementIdRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/BasicEntityDiffVisualizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/OtherProjectsSitesGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ExceptionLocalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/ByTypeDispatchingEntityPrefetcher.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/ReferencedEntitiesDataUpdaterTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":83,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":90,"column":47}]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/CreateItemEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/UnknownForeignRepositoryException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/WbRestApi.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Interactors\/TokenCheckException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescriptionWithFallback\/GetItemDescriptionWithFallback.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/Snak\/TypedSnakTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/LabelPrefetchHookHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/TypeDispatchingEntityStoreTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":62,"column":31}]},"\/src\/repo\/lib\/includes\/Store\/TitleLookupBasedEntityRedirectChecker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityDataFormatProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/SiteLinksChangeOpDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/EntityLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/SetDescriptionTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescriptionWithFallback\/GetItemDescriptionWithFallbackRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/includes\/SiteLinkPageNormalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/PatchPropertyDescriptions\/PatchPropertyDescriptionsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/MediaWiki\/EntitySourceDocumentUrlProvider.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpQualifierTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/EntityRdfBuilderFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyStatement\/GetPropertyStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/Store.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/EntityIdParserTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":21,"column":16}]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/SuggestEntitiesRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/TermListDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Api\/ApiPropsEntityUsage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/ItemRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyStatement\/GetPropertyStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/UnionContentLanguagesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/DispatchingSnakFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityArticleIdLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/WikibaseServices.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Interactors\/TokenCheckInteractor.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/ShowCalendarModelDecider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescriptionWithFallback\/GetItemDescriptionWithFallbackValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityRevisionLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/ValueValidatorLanguageCodeValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/PatchPropertyEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/SitelinkEditRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/GlobeCoordinateDetailsFormatterTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":29,"column":35}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyStatement\/GetPropertyStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/UseCaseException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TermFallbackCacheFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/DummyLocalizedTextProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityContentDataCodec.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/Serializer\/ForbiddenSerializer.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/UpdateRepo\/UpdateRepoOnMoveJobTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialItemByTitle.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":245,"column":34}]},"\/src\/repo\/lib\/includes\/Sites\/SitesBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Lookup\/RestrictedEntityLookupFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/StatementDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/DescriptionsSyntaxValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescriptionWithFallback\/GetItemDescriptionWithFallbackResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/TermValidatorFactoryItemLabelValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Interactors\/RedirectCreationException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/SnakHtmlGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/InMemoryTermStore.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/CommonsThumbnailFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/EntityPermissionChecker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/tests\/ItemChangeTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":36,"column":13},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":41,"column":29}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/MappedRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemAliasesInLanguageEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Term\/PropertyTermStoreWriter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/UnDeserializableValueFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/MessageParameterFormatterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/PropertyIdValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescriptionWithFallback\/DeserializedGetItemDescriptionWithFallbackRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ItemHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/DataTypeValidatorFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/LangLinkHandlerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/DescriptionEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/UseCaseError.php":{"errors":0,"warnings":27,"messages":[{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":80,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":81,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":82,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":83,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":84,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":85,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":86,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":87,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":88,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":93,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":94,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":95,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":96,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":97,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":98,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":99,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":100,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":101,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":102,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":103,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":104,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":105,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":106,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":107,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":108,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":113,"column":9},{"message":"Found duplicate key \"self\" on array required sorting","source":"MediaWiki.Arrays.AlphabeticArraySort.Duplicate","severity":5,"fixable":false,"type":"WARNING","line":114,"column":9}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/AliasesSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PatchRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedLanguageCodeRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Term\/ItemTermStoreWriter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Search\/Fields\/WikibaseNumericField.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpResultTraversalTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/ExternalIdentifierRdfBuilderTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":42,"column":35}]},"\/src\/repo\/repo\/includes\/Store\/RateLimitingIdGenerator.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/PropertyDataTypeLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescriptionWithFallback\/DeserializedGetPropertyDescriptionWithFallbackRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/EntityFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/LegacyFingerprintDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchProperty\/PatchPropertyRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/ItemLabelsContentsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/FingerprintableEntityMetaTagsCreatorTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":23,"column":49},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":26,"column":39}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/StatementListDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Search\/Fields\/NoFieldDefinitions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyLabels\/PatchedPropertyLabelsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/RecentChangeSaveHookHandlerTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":55,"column":73},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":311,"column":35}]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/PropertyInfoLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/FallbackLabelDescriptionLookupFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Term\/TermBuffer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Term\/TermStoreException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Api\/ApiClientInfo.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/DataAccess\/WikibaseDataAccessTestItemSetUpHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DefaultSnakFormatterBuildersTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/LabelsDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/Deserialization\/AliasesChangeOpDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/EntitySourceAndTypeDefinitions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/TypeDispatchingEntityRevisionLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/RawMessageParameterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Search\/Fields\/WikibaseIndexField.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescriptionWithFallback\/GetPropertyDescriptionWithFallbackRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DataTypeFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/LabelsEditSummary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Term\/PropertyLabelResolver.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyStatementIdRequestValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/EmptyLabelException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/StringNormalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/SourceAndTypeDispatchingPrefetchingTermLookup.php":{"errors":4,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":57,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":64,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":68,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":79,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyLabels\/PatchPropertyLabelsResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/AliasesInLanguageValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/LabelLanguageCodeValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Search\/Fields\/FieldDefinitions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/ThrowingEntityTermStoreWriter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntitySearchHelperCallbacksTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":40,"column":39}]},"\/src\/repo\/lib\/includes\/Store\/PropertyInfoLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DataAccessSettingsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/MergeItemsTest.php":{"errors":0,"warnings":4,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":97,"column":21},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":121,"column":39},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":139,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":212,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescriptionWithFallback\/GetPropertyDescriptionWithFallbackValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveSitelink\/RemoveSitelink.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/EntitySource.php":{"errors":7,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":17,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":12}]},"\/src\/repo\/repo\/includes\/ChangeOp\/NullChangeOp.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/BinaryOptionDispatchingSnakFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/Snak\/PropertySomeValueSnakTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/RemoveItemDescriptionRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/UserProvidedEditMetadata.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/PropertyIdMismatchException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/ItemStatementIdRequestValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Entity\/PropertyDataTypeMatcher.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/UnionContentLanguages.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LegacyFormatDetectorCallbackTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/CommonsMediaRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/RepoItemLinkGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/LegacyEntityDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/PropertyInfoSnakUrlExpanderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntitySourceAndTypeDefinitionsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Search\/Fields\/FieldDefinitionsFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/EntityChangeOpProviderTest.php":{"errors":0,"warnings":4,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":25,"column":24},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":52,"column":30},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":64,"column":30},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":78,"column":30}]},"\/src\/repo\/lib\/includes\/Store\/PropertyInfoStore.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/InfoActionHookHandlerTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":186,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":268,"column":35}]},"\/src\/repo\/lib\/includes\/Store\/DispatchingFallbackLabelDescriptionLookup.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":48,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":52,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/EmptySitelinkException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedItemDescriptionEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Entity\/NullEntityPrefetcher.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedSiteIdRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/DataValueDeserializerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":36,"column":31}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescriptionWithFallback\/GetPropertyDescriptionWithFallback.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/TermValidatorFactoryPropertyDescriptionValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityArticleIdNullLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Search\/ExtendedResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Validation\/PropertyDescriptionsContentsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiringTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/GetItemDescriptionWithFallbackRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveSitelink\/RemoveSitelinkRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/MonolingualTextRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SiteLinkBadgeChangeOpSerializationValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/SetPropertyLabel\/SetPropertyLabelTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Snak\/SnakList.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/TypeDispatchingWikiPageEntityMetaDataAccessor.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/StatementListPatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ItemSearchTextGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/GetPropertyDataTypesHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/Model\/User.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Entity\/EntityPrefetcher.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/WikibaseClientHookRunnerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyDescriptionWithFallback\/GetPropertyDescriptionWithFallbackResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyLabels\/PatchPropertyLabelsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveSitelink\/DeserializedRemoveSitelinkRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataValuesValueDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/InvalidFieldException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Snak\/PropertySomeValueSnak.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/LanguageCodeRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/GlobeCoordinateKartographerFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchProperty\/PatchProperty.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveSitelink\/RemoveSitelinkValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyLabels\/PatchPropertyLabelsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Snak\/SnakRole.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/SerializationException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/EmptyDescriptionException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/tests\/phpunit\/StatementSectionsViewTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/EditMetadataRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityDataUriManagerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/WikibaseContentLanguagesTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":24,"column":45}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyAliases\/GetPropertyAliasesResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ItemRedirect.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchProperty\/PatchPropertyValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpRemoveStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchJson.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyLabels\/DeserializedPatchPropertyLabelsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/ItemView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedPropertyLabelEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/SingleEntitySourceServicesFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/BagOStuffSiteLinkConflictLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItem\/PatchedItemValidator.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":289,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchStatement\/PatchStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/UpdateRepo\/UpdateRepoOnDeleteJobTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/NamespaceCheckerTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":93,"column":23},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":97,"column":37}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ChangeOpFactoryProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityRevisionCache.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/DataTypeFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyLabelEditRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/UseCaseRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/SetPropertyDescription\/SetPropertyDescriptionTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityNamespaceLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ItemTermsCollisionDetectorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/MissingFieldException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyAliases\/GetPropertyAliases.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/TabularDataRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/LanguageBoundChangeOpResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchStatement\/DeserializedPatchStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchProperty\/PatchPropertyResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EnabledEntityTypesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetSitelink\/GetSitelinkResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/build\/phpstan-bootstrap.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Snak\/DerivedPropertyValueSnak.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LanguageDirectionalityLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Api\/SearchEntities.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Api\/Description.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/ItemOrderProviderException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/BadgeNotAllowed.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/ByPropertyIdGrouper.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":36,"column":13}]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/CachingKartographerEmbeddingHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialGoToLinkedPage.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":260,"column":34}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetSitelink\/DeserializedGetSitelinkRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/WikibaseSnakFormatterBuilders.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/InvalidLabelException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/InvalidDescriptionException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityUrlLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyAliases\/GetPropertyAliasesRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Notifications\/PageConnectionPresentationModel.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyAliases\/DeserializedGetPropertyAliasesRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/ParserOutputDataUpdaterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetStatement\/GetStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FingerprintSearchTextGeneratorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/LegacySnakDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/ClaimDifferenceVisualizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/StatementIdRequestValidatingDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/ObjectUriRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/SiteIdRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/StatementNormalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyAliases\/GetPropertyAliasesValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/ItemTermStoreWriterAdapter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/ServiceByTypeDispatcher.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":62,"column":13}]},"\/src\/repo\/repo\/includes\/IO\/EntityIdReader.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/tests\/EntityChangeFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/TermValidatorFactoryItemLabelValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetSitelink\/GetSitelinkRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/PropertyIdFilterRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DescriptionLanguageCodeRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/ItemDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/Filter\/DataTypeStatementFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/InconsistentRedirectException.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetStatement\/GetStatementResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/MediaWikiMessageInLanguageProvider.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":14,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/CopyrightMessageBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ChangeNotifierTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataTypeFactoryValueTypeLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Statement\/StatementGuid.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/InvalidFieldTypeException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/StatementSerializationRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/StatementListDifferTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/Filter\/NullStatementFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescription\/GetItemDescriptionResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/PageTableEntityQueryBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/TitleLookupBasedEntityExistenceChecker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyLabels\/PatchPropertyLabels.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/FallbackPropertyOrderProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/UserLanguageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityTitleLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/LibNoBadUsageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Statement\/StatementFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Statement\/StatementListProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EditEntityFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/GetSitelinks\/GetSitelinksTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetStatement\/GetStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemAliases\/GetItemAliasesValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/UnitConverterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetStatement\/DeserializedGetStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemAliases\/DeserializedGetItemAliasesRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/DefaultRepoSettingsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/PropertyNotFoundException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/WikibaseLib.datatypes.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchStatement\/PatchStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/Filter\/PropertySetStatementFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetSitelink\/GetSitelink.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetStatement\/GetStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Api\/EntityTermSearchHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/Statement\/StatementByGuidMapTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/SetQualifierTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/DataTypeFactoryTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":27,"column":28}]},"\/src\/repo\/repo\/includes\/Store\/ItemTermsRebuilder.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":90,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/Exceptions\/InvalidSitelinkBadgeException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/DataValuesValueDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/config\/WikibaseLib.default.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/EntityChangeSelectQueryBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemAliases\/GetItemAliasesResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/StringValueNormalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/DispatchableDeserializerTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetSitelink\/GetSitelinkValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/SiteLinkLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Api\/EntitySearchHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SiteLinkGlobalIdentifiersProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescription\/GetItemDescription.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/GeoDataDataUpdaterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/TermValidatorFactoryAliasesInLanguageValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/V4GuidGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/Wikibase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplaceStatement\/ReplaceStatementResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/HtmlPageLinkRendererEndHookHandler.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":348,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyStatement\/RemovePropertyStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpSiteLink.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ValueSnakRdfBuilderFactoryTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":25,"column":55}]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/DataTypeFactoryValueTypeLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/DescriptionsSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/ReplaceItemStatementRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/DataAccessSettingsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/Sql\/Terms\/DatabaseInnerTermStoreCleanerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":265,"column":17}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplaceStatement\/DeserializedReplaceStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemAliases\/GetItemAliasesRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/LegacyEntityIdDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/FieldDefinitionsFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/Wikibase.i18n.namespaces.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ItemUrlParserTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescription\/GetItemDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchStatement\/PatchedStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/StatementGuidParser.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/SummaryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescription\/DeserializedGetItemDescriptionRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/TermIndexSearchCriteria.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/DataTypeDefinitions.php":{"errors":1,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":151,"column":12},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":387,"column":13}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TypeIdsLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyStatement\/RemovePropertyStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/ClaimDiffer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/IO\/LineReader.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/PatchStatementRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/StatementGuidParsingException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescription\/GetItemDescriptionValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemAliases\/GetItemAliases.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/ParserFunctions\/CommaSeparatedList.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ValueFormatterFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ItemSearchTextGeneratorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/docs\/namespaces.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyStatement\/DeserializedRemovePropertyStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/StatementSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/TermDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchStatement\/PatchStatementResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescriptions\/GetItemDescriptionsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DataTypeDefinitionsTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":39,"column":42}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/GlobeCoordinateRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/DataTypeDefinitionsTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":38,"column":44}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TypeIdsResolverTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/StatementDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplaceStatement\/ReplaceStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/GuidGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/Statement\/StatementGuidTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/WikiPageEntityDataLoader.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescriptions\/GetItemDescriptionsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/RedirectResolvingLatestRevisionLookup.php":{"errors":0,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":37,"column":23},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":42,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":50,"column":43}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyStatements\/GetPropertyStatementsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialNewEntity.php":{"errors":1,"warnings":0,"messages":[{"message":"Doc comment for parameter \"$isMobileView\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":40,"column":5}]},"\/src\/repo\/repo\/includes\/Hooks\/DifferenceEngineViewHeaderHookHandler.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":72,"column":12}]},"\/src\/repo\/repo\/includes\/Rdf\/RdfBuilder.php":{"errors":0,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":350,"column":17},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":354,"column":17},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":358,"column":17}]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/RemovePropertyDescription\/RemovePropertyDescriptionTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/TermsListView.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":189,"column":13}]},"\/src\/repo\/lib\/includes\/Store\/AbstractTermPropertyLabelResolver.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/Grouper\/NullStatementGrouper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyStatement\/RemovePropertyStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityConstraintProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/EntityUpdaterPropertyUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FederatedProperties\/ApiEntityTitleTextLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/InternalFormatEntityDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpQualifierRemove.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchStatement\/PatchStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/Api\/ApiPropsEntityUsageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescriptions\/GetItemDescriptionsResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/.phan\/config.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyStatements\/GetPropertyStatementsResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/PlaceholderExpander\/EntityViewPlaceholderExpanderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/SingleEntitySourceServices.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":299,"column":12}]},"\/src\/repo\/view\/src\/EntityTermsView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/HtmlPageLinkRendererEndHookHandlerTestBase.php":{"errors":0,"warnings":5,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":128,"column":23},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":131,"column":27},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":182,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":201,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":237,"column":35}]},"\/src\/repo\/client\/includes\/Specials\/SpecialPagesWithBadges.php":{"errors":2,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":90,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":144,"column":13},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":147,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/ReferenceDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/Grouper\/ByPropertyIdStatementGrouper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/OtherProjectsSitesProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescriptions\/DeserializedGetItemDescriptionsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyStatements\/DeserializedGetPropertyStatementsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DataValueFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/RevisionedUnresolvedRedirectException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/DataAccessSettings.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/PropertyInfoBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/PageHistoryPagerHookHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/StatementSubjectRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/CachingItemOrderProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangedLanguagesCollector.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/LiteralValueRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/SourceDispatchingPropertyDataTypeLookupTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":57,"column":36},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":81,"column":36}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabelWithFallback\/GetPropertyLabelWithFallbackRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyStatements\/GetPropertyStatementsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialEntityPage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemAliasesInLanguage\/GetItemAliasesInLanguage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/tests\/EntityChangeTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":45,"column":13},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":51,"column":13}]},"\/src\/repo\/repo\/includes\/Rdf\/EntityRdfBuilderFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityFactoryTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":39,"column":71}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabelWithFallback\/GetPropertyLabelWithFallbackValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/ItemDiffTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplaceStatement\/ReplaceStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DataTypeValidatorFactoryTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":40,"column":49}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Statement\/Statement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemDescriptions\/GetItemDescriptions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ItemDisambiguationFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabelWithFallback\/DeserializedGetItemLabelWithFallbackRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/AddPropertyStatement\/AddPropertyStatementTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/DummyLocalizedTextProvider.php":{"errors":1,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":12},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":26,"column":24}]},"\/src\/repo\/lib\/includes\/Store\/MatchingTermsLookupFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplaceStatement\/ReplaceStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemAliasesInLanguage\/GetItemAliasesInLanguageRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/GetStatementRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpsResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/SiteLinkPageNormalizerSitelinkTargetResolver.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/WikibaseContentLanguages.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":51,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":70,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":144,"column":19}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyStatements\/GetPropertyStatements.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityMetaTagsCreatorFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Api\/PageTerms.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":174,"column":13}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityTypesConfigValueTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabelWithFallback\/GetPropertyLabelWithFallbackResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/MwTimeIsoFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemStatement\/GetItemStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/WikibaseServicesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/ApiEntitySource.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityIdLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemAliasesInLanguage\/DeserializedGetItemAliasesInLanguageRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabelWithFallback\/GetItemLabelWithFallbackRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/NonLanguageBoundChangesCounter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/ContentLanguages.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Dumpers\/RdfDumpGeneratorTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":238,"column":27},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":283,"column":35}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/Grouper\/FilteringStatementGrouper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/maintenance\/searchEntities.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":143,"column":22}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemStatement\/DeserializedGetItemStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/Formatters\/EntityLinkFormatterFactory.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":39,"column":28}]},"\/src\/repo\/repo\/includes\/Store\/WikiPageEntityStorePermissionChecker.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":174,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":203,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":257,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemAliasesInLanguage\/GetItemAliasesInLanguageValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/SiteLinkLookupSitelinkValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/EntityDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplacePropertyStatement\/ReplacePropertyStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/Grouper\/StatementGrouper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemStatement\/GetItemStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/EditEntity\/MediaWikiEditEntity.php":{"errors":1,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":200,"column":43},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":510,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/GetSitelinksRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/RemoveClaimsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplacePropertyStatement\/ReplacePropertyStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabelWithFallback\/GetPropertyLabelWithFallback.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabelWithFallback\/GetItemLabelWithFallbackResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LocalRepoWikiPageMetaDataAccessorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DatabaseTypeIdsStoreTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/LangLinkSiteGroupsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpDescriptionResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/CachingFallbackLabelDescriptionLookup.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":108,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemAliasesInLanguage\/GetItemAliasesInLanguageResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabelWithFallback\/DeserializedGetPropertyLabelWithFallbackRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabelWithFallback\/GetItemLabelWithFallbackValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TermStoreWriterFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ValidatorErrorLocalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/tests\/RepoRevisionIdentifierTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Statement\/StatementByGuidMap.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":67,"column":13}]},"\/src\/repo\/repo\/includes\/Store\/DispatchingEntityStoreWatcher.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Statement\/StatementListHolder.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":17,"column":12}]},"\/src\/repo\/lib\/includes\/Store\/PropertyInfoProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialDispatchStats.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyAliases\/DeserializedPatchPropertyAliasesRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/ChangesListSpecialPageHookHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplacePropertyStatement\/ReplacePropertyStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyLabel\/RemovePropertyLabelValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCaseRequestValidation\/DeserializedRequestAdapter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemStatement\/GetItemStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EditFilterHookRunnerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/EntityTitleStoreLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/ReplacePropertyStatement\/DeserializedReplacePropertyStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/PropertyValuePairDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyLabel\/DeserializedRemovePropertyLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/SqlChangeStore.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/Scribunto\/WikibaseLanguageIndependentLuaBindingsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/ByTypeDispatchingEntityIdLookup.php":{"errors":2,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":46,"column":12},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":63,"column":40},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":68,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityStoreTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AssertPropertyExists.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyAliases\/PatchPropertyAliasesResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/TempUserStatus.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/WikibaseEntityPermissionChecker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/maintenance\/ResubmitChanges.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":62,"column":27}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetItemLabelWithFallback\/GetItemLabelWithFallback.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/LegacySnakListDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TermFallbackCacheTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/Statement\/StatementGuidValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/EntityIdLocalPartPageTableEntityQuery.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":26,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":30,"column":15}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetLatestPropertyRevisionMetadata.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpApplyException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/SitelinksReadModelConverterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/ChangeHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/TermsCollisionDetector.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/TermsRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/OutputFormatValueFormatterFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/PropertyInfoTable.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/EditEntity\/EditEntity.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityContentFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchProperty\/PatchedPropertyValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/Formatters\/DefaultEntityLinkFormatter.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":127,"column":12}]},"\/src\/repo\/lib\/includes\/Summary.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/PropertyView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/SidebarBeforeOutputHookHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/AddItemStatement\/AddItemStatementTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/TermBufferTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyLabel\/RemovePropertyLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/NullEntityRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Interactors\/ItemMergeInteractorTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":103,"column":21}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/DescriptionsDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ItemDisambiguationFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/src\/EntitySourceLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchProperty\/DeserializedPatchPropertyRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/GetPropertyLabel\/GetPropertyLabelTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemStatement\/RemoveItemStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Specials\/SpecialEntityUsage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Rdbms\/ClientDomainDbFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Rdbms\/ClientDomainDb.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/SitelinkSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemStatement\/RemoveItemStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/src\/DataValue\/ValuesFinder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/GetItemStatementsRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/Formatters\/EntityLinkFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/CompactEntitySerializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/PrefetchingTermLookupAliasesRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/TermLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/LabelPrefetchHookHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/ValueValidatorLanguageCodeValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/LabelsSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/EntityTypesConfigFeddyPropsAugmenter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/EditEntity\/EditEntityStatus.php":{"errors":1,"warnings":0,"messages":[{"message":"Doc comment for parameter \"$sv\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":31,"column":5}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/ItemPatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DefaultValueFormatterBuildersTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/WikibaseApiTestCase.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":168,"column":47}]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/Scribunto\/WikibaseLuaEntityBindingsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemStatement\/RemoveItemStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/LoggerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyAliases\/PatchedPropertyAliasesValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyAliases\/PatchPropertyAliasesValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/WikibaseServicesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/SkinAfterPortletHandlerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":160,"column":35}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemoveItemStatement\/DeserializedRemoveItemStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/EntityUpdaterStatementUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/GenericEventDispatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/StatementDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/fixtures\/FakeEntityDocument.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/EntityChangeLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntitySearchHelperTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/PlaceholderExpander\/ExternallyRenderedEntityViewPlaceholderExpanderTest.php":{"errors":2,"warnings":0,"messages":[{"message":"Doc comment for parameter \"$id\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":226,"column":5},{"message":"Doc comment for parameter \"$revisionId\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":248,"column":5}]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/RouteHandlersTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Hooks\/ArticleRevisionVisibilitySetHookHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Diff\/SiteLinkDiffView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/Exceptions\/EntityUpdateFailed.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/RepoItemUriParserTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/Exceptions\/StatementSubjectDisappeared.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/UpdateExceptionHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/DispatchingEntityTypeStatementGrouperTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Serializer\/ClientStatementListSerializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/fixtures\/ItemFixtures.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/WikibaseEntityRevisionLookupItemRevisionMetadataRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SnakNormalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/LabelsProviderEntityIdHtmlLinkFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/fixtures\/PropertyFixtures.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddItemAliasesInLanguage\/AddItemAliasesInLanguage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Serializer\/ClientEntitySerializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LocalEntityTypesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/AliasTermBufferTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/PropertyTermsRebuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/tests\/phpunit\/NewDatabaseEntitySourceTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/LegacyPropertyDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/Sql\/Terms\/DatabaseItemTermStoreWriterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/RemovePropertyLabel\/RemovePropertyLabel.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/EntityUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Merge\/MergeFactory.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":73,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/MediaWikiLanguageDirectionalityLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/LocalizedTextProviderFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/SimpleCacheTestCase.php":{"errors":0,"warnings":4,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":286,"column":16},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":330,"column":16},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":374,"column":16},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":466,"column":19}]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/WikibaseEntityRevisionLookupPropertyRevisionMetadataRetriever.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":27,"column":17}]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOps.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":122,"column":13}]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/tests\/ChangeRowTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/WikibasePingback.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":221,"column":50},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":371,"column":45}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/fixtures\/EntityOfUnknownType.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/EntityDifferTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/RoutesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetPropertyLabel\/SetPropertyLabelResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/StatementGuidValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyDescriptions\/DeserializedPatchPropertyDescriptionsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/BabelUserLanguageLookupDouble.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":18,"column":15}]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/TermsLanguagesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddItemAliasesInLanguage\/AddItemAliasesInLanguageResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/GetLatestItemRevisionMetadataTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Rdbms\/DomainDb.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AssertUserIsAuthorized.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/Api\/PageTermsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/SnakListDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/ItemPartsSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyAliases\/PatchPropertyAliasesRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyDescriptions\/PatchPropertyDescriptionsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/SettingsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityUrlLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/bootstrap.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Api\/FormatSnakValue.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":255,"column":13}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpsMergeTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":77,"column":35}]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/RemoveStatementRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/EntityRevisionLookupStatementRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/SiteLinksRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/SiteLinkGlobalIdentifiersProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityParserOutputGeneratorFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/EditEntity\/StatsdSaveTimeRecordingEntityStore.php":{"errors":8,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":40,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":44,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":64,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":75,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":79,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":83,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":87,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":91,"column":12}]},"\/src\/repo\/view\/src\/Termbox\/Renderer\/TermboxRemoteRenderer.php":{"errors":5,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":90,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":102,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":110,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":126,"column":13},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":127,"column":27}]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpRemoveSiteLink.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Localizer\/MessageParameterFormatterTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":69,"column":17},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":87,"column":17}]},"\/src\/repo\/repo\/includes\/Notifications\/ChangeHolder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Merge\/Validator\/NoCrossReferencingStatements.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/EntityFactoryTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":24,"column":23},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":27,"column":27}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/GetClaimsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityDifferTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":29,"column":78},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":35,"column":78}]},"\/src\/repo\/lib\/includes\/Rdbms\/ReplicationWaiter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/Termbox\/Renderer\/TermboxNoRemoteRendererException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Rdbms\/RepoDomainDb.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/Sql\/SqlSiteLinkConflictLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/AliasesDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddPropertyAliasesInLanguage\/AddPropertyAliasesInLanguageResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/QuantityRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Notifications\/ChangeTransmitter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Api\/ApiListEntityUsage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/MonolingualTextRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/AffectedPagesFinderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetPropertyLabel\/SetPropertyLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/maintenance\/EntityQuantityUnitRebuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/Termbox\/Renderer\/TermboxRenderer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/Termbox\/Renderer\/TermboxRenderingException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/Sql\/Terms\/TermStoreWriterFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/PlaceholderExpander\/TermboxRequestInspectorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddPropertyAliasesInLanguage\/DeserializedAddPropertyAliasesInLanguageRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/EntityIdDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/PatchPropertyDescriptionsRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddItemAliasesInLanguage\/AddItemAliasesInLanguageRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/MatchingTermsLookupFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/CommonsMediaRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/AssertValidTopLevelFieldsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetPropertyLabel\/DeserializedSetPropertyLabelRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/ErrorHandlingSnakFormatter.php":{"errors":1,"warnings":0,"messages":[{"message":"Doc comment for parameter \"...$args\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":98,"column":5}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/MakeGlobalVariablesScriptHookHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/StatementListSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/FallbackLookupFactoryTermsRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Notifications\/HookChangeTransmitter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyAliases\/PatchPropertyAliases.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddItemAliasesInLanguage\/AddItemAliasesInLanguageValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddItemAliasesInLanguage\/DeserializedAddItemAliasesInLanguageRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Localizer\/MessageExceptionLocalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityExistenceCheckerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/UpdateRepo\/UpdateRepoOnDeleteJob.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/WholeEntityEditSummaryToFormattableSummaryConverterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Rdbms\/RepoDomainDbFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Api\/MetaDataBridgeConfig.php":{"errors":4,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":42,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":57,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":64,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":75,"column":12}]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiring\/RepoDomainDbFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabels\/DeserializedGetPropertyLabelsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/WikiPageEntityRevisionLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Specials\/SpecialUnconnectedPages.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FederatedProperties\/ApiPrefetchingTermLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/SiteLinkChangeOpFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityContentDataCodecTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Store\/ClientStore.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/ObjectUriRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/Termbox\/TermboxModule.php":{"errors":1,"warnings":0,"messages":[{"message":"Doc comment for parameter \"$file\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemDescriptions\/PatchItemDescriptionsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/PageTableEntityQuery.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/ItemDifferTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FederatedProperties\/FederatedPropertiesTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchPropertyDescriptions\/PatchedPropertyDescriptionsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/EscapingValueFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityChangeFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/ItemSerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiringTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/Sql\/Terms\/Util\/MockJobQueueFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/EntityDocumentView.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/RemoveItemDescription\/RemoveItemDescriptionTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/EntityTermsViewFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpStatementRank.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/ErrorResponseToHttpStatus.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/Sql\/Terms\/EntityTermsSelectQueryBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/LanguageFallbackIndicatorTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":24,"column":35}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/Statement\/StatementTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/TabularDataRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/ReferenceListDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Statement\/StatementList.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddPropertyAliasesInLanguage\/AddPropertyAliasesInLanguage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/KartographerEmbeddingHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Localizer\/DispatchingExceptionLocalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/EditEntity\/MediaWikiEditFilterHookRunner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/PrefetchingWikiPageEntityMetaDataAccessor.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":261,"column":13}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/ComplexValueRdfHelperTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/UpdateRepo\/UpdateRepoOnMove.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/NonExistingEntityIdHtmlFormatterLinker.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":52,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddPropertyAliasesInLanguage\/AddPropertyAliasesInLanguageValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/RepoLinkerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Api\/EditSummaryHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpValidationException.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":50,"column":43}]},"\/src\/repo\/lib\/includes\/Store\/Sql\/WikiPageEntityMetaDataAccessor.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/ResponseFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/PropertyDataTypeChangerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":130,"column":35}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetPropertyLabel\/SetPropertyLabel.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SummaryFormatterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/EntityChangeNotificationJobTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Statement\/ReferencedStatementFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/UpdateRepo\/UpdateRepoOnDelete.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/SetPropertyLabel\/SetPropertyLabelValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Merge\/StatementsMerger.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":50,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":126,"column":13}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/MetaDataBridgeConfigTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/MockPropertyLabelResolver.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FederatedProperties\/Diff\/EntityContentDiffViewTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/EntityView.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":47,"column":15}]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/LegacyItemDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/maintenance\/rebuildItemsPerSite.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/TermboxFlagTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetSitelinks\/GetSitelinksRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ItemRedirectCreationInteractorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Notifications\/ChangeNotifier.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Actions\/ViewEntityAction.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/EntityTypeDefinitions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/NonExistingEntityIdHtmlBrokenLinkFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TermBufferTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/src\/Internal\/MapValueHasher.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpFactoryProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetSitelinks\/GetSitelinksValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/Middleware\/ResponseHeaderCountingTestMiddleware.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetSitelinks\/DeserializedGetSitelinksRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/SiteLinkPageNormalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/tests\/phpunit\/EntitySourceDefinitionsConfigParserTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Store\/AddUsagesForPageJob.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":41,"column":30},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":101,"column":30}]},"\/src\/repo\/view\/src\/ViewContent.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":12}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/fixtures\/CustomEntityId.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddPropertyAliasesInLanguage\/AddPropertyAliasesInLanguageRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/SetPropertyDescriptionRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/SitelinkDeserializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Search\/Fields\/FieldDefinitionsFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/EntityDiffOldTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/EntityIdRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityIdHtmlLinkFormatterFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/bootstrap.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemDescriptions\/PatchedItemDescriptionsValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetSitelinks\/GetSitelinksResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Localizer\/ChangeOpValidationExceptionLocalizerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":75,"column":17}]},"\/src\/repo\/view\/src\/FallbackChainModuleMethods.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":24,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/EntityRevisionLookupPropertyDataRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemDescriptions\/DeserializedPatchItemDescriptionsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/RemoveStatement\/RemoveStatementTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/SiteLinkDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/EntityParserOutputDataUpdaterCollectionTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/UpdateRepo\/UpdateRepoJob.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ViewFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpReferenceRemove.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/MockRepositoryTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":694,"column":17}]},"\/src\/repo\/repo\/includes\/EditEntity\/MediaWikiEditEntityFactory.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":81,"column":12}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/Serialization\/PropertySerializer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/SettingsArray.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/HtmlTimeFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/SitelinksValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Localizer\/ParseExceptionLocalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TermValidatorFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/QuantityRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/tests\/phpunit\/FakePrefetchingTermLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetSitelinks\/GetSitelinks.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/GeoShapeRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FederatedProperties\/FederatedPropertiesTestTrait.php":{"errors":4,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":61,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":66,"column":13},{"message":"Doc comment for parameter \"$name\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":107,"column":5},{"message":"Doc comment for parameter \"$value\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":107,"column":5}]},"\/src\/repo\/repo\/includes\/DispatchingEntityTypeStatementGrouper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/CachingPrefetchingTermLookup.php":{"errors":14,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":91,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":98,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":106,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":114,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":122,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":143,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":148,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":243,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":302,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":311,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":323,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":337,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":362,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":380,"column":13}]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/Api\/ApiListEntityUsageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/GetItemDescriptionWithFallback\/GetItemDescriptionWithFallbackTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Units\/CSVUnitStorage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/PropertyServicesTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":28,"column":42},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":31,"column":47}]},"\/src\/repo\/client\/includes\/UpdateRepo\/UpdateRepo.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/NumberLocalizerFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchItemDescriptions\/PatchItemDescriptionsRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/tests\/phpunit\/EntityPrefetcherSpy.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Units\/UnitStorage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddPropertyStatement\/AddPropertyStatementResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/UnmappedEntityIdValueFormatter.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":13,"column":12}]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/CachingSiteLinkLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Localizer\/GenericExceptionLocalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityRedirectCheckerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/Sql\/Terms\/DatabaseTermsCollisionDetector.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":138,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchSitelinks\/PatchSitelinks.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/MockRepository.php":{"errors":7,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":103,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":372,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":442,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":462,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":466,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":484,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":609,"column":12}]},"\/src\/repo\/repo\/includes\/EditEntity\/StatsdSaveTimeRecordingEditEntity.php":{"errors":8,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":36,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":40,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":44,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":48,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":52,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":56,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":64,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":68,"column":12}]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Helpers\/TestPropertyValuePairDeserializerFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/maintenance\/dumpJson.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/Sql\/Terms\/Util\/ReplicaPrimaryAwareRecordIdsAcquirerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddPropertyStatement\/DeserializedAddPropertyStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/ApiJsonFormatTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":158,"column":13}]},"\/src\/repo\/view\/src\/ViewHooks.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DispatchStatsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/unit\/Deserializers\/LegacyStatementDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Units\/JsonUnitStorage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Usage\/EntityUsageFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ItemMergeInteractorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/ServiceWiringTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/TermLookupEntityTermsRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/tests\/EntityDiffChangedAspectsFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/EntityIdFormatterFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/DatabaseTermInLangIdsResolver.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":197,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":206,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":210,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/SetSitelinkRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/GetLatestPropertyRevisionMetadataTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/PropertyInfoBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/LabelDescriptionNotEqualValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Notifications\/WikiPageActionEntityChangeFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TermLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/LanguageDirectionalityLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/integration\/LegacyDeserializerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Store\/DescriptionLookup.php":{"errors":0,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":73,"column":31},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":146,"column":47},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":157,"column":53}]},"\/src\/repo\/lib\/includes\/Units\/InMemoryUnitStorage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/UnknownTypeEntityIdHtmlLinkFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/UniquenessViolation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/Sql\/Terms\/Util\/FakeLoadBalancer.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":46,"column":12}]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/GetPropertyAliasesInLanguage\/GetPropertyAliasesInLanguageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Localizer\/ChangeOpApplyExceptionLocalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Notifications\/ChangeTransmitterException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/EntityTypesTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":64,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddPropertyStatement\/AddPropertyStatementRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/EditEntity\/StatsdTimeRecordingEditFilterHookRunner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/TimeRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/Middleware\/TempUserCreationResponseHeaderMiddlewareTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":40,"column":13},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":76,"column":13}]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/tests\/RepoRevisionIdentifierFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/EscapingValueFormatterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/DispatchingEntityIdHtmlLinkFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/NewItem.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":190,"column":34}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ItemVocabularyBaseUriTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":28,"column":17}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Dumpers\/JsonDumpGeneratorTest.php":{"errors":0,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":119,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":274,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":385,"column":35}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/RdfBuilderFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FederatedProperties\/FederatedPropertiesAwareDispatchingEntityIdParserTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/EditEntity\/EditFilterHookRunner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/Template\/TemplateFactory.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LoggerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/UpdateRepo\/UpdateRepoOnMoveJob.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/CachingPropertyInfoLookup.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":186,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":193,"column":13}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/IdGeneratorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Formatters\/MonolingualWikitextFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Usage\/UsageDeduplicator.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":117,"column":13}]},"\/src\/repo\/data-access\/tests\/phpunit\/ApiEntitySourceTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/Sql\/WikiPageEntityRedirectLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/Template\/TemplateRegistry.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/PageImagesDataUpdaterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchSitelinks\/PatchedSitelinksValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/Internal\/FingerprintPatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Localizer\/ChangeOpDeserializationExceptionLocalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/Sql\/Terms\/Util\/FakeLBFactory.php":{"errors":6,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":35,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":47,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":51,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":71,"column":15}]},"\/src\/repo\/lib\/tests\/phpunit\/ServiceBySourceAndTypeDispatcherTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":42,"column":16}]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/integration\/Deserializers\/StatementDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/RegexValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/PatchItemLabelsRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/EntityUpdaterItemUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/Values\/TimeRdfBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/AliasTermBufferTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/tests\/MockRepoClientCentralIdLookup.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":45,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":49,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":55,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":61,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":74,"column":12}]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/Scribunto\/EntityAccessorTest.php":{"errors":1,"warnings":0,"messages":[{"message":"Doc comment for parameter \"$statementDeprecated\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":247,"column":5}]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/Api\/ApiFormatReferenceUnitTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Units\/UnitConverter.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":40,"column":12}]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/GlobeCoordinateRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchSitelinks\/PatchSitelinksResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/SiteLinkTable.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":76,"column":13}]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddPropertyStatement\/AddPropertyStatement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/Template\/Template.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/UpdateRepo\/UpdateRepoOnDeleteTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/JsonDiffJsonPatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/MultiPropertyTermStoreWriter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SnakFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/StatementGrouperBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/AddPropertyStatement\/AddPropertyStatementValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/GeoShapeRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Store\/UsageUpdater.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Usage\/NullUsageTracker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/FederatedPropertiesServiceFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/CompositeValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/TitleLookupBasedEntityTitleTextLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/EntityUpdaterStatementRemover.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/ShowSearchHitHandlerTest.php":{"errors":0,"warnings":4,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":54,"column":17},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":126,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":174,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":193,"column":39}]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/GetItemLabels\/GetItemLabelsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/StoreTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/EntityParserOutputGeneratorFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/LanguageNameLookupFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/IO\/EntityIdReaderTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":36,"column":27}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/TermsLanguagesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Store\/DescriptionLookupTest.php":{"errors":0,"warnings":6,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":204,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":205,"column":49},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":210,"column":39},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":233,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":234,"column":49},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":261,"column":17}]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/integration\/Deserializers\/EntityDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/EntityStoreWatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchSitelinks\/PatchSitelinksRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Units\/BaseUnitStorage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Usage\/HashUsageAccumulator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/WikibaseEntityRevisionLookupStatementSubjectRevisionMetadataRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/LanguageFallbackChainFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/Internal\/SiteLinkListPatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/FingerprintSearchTextGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchSitelinks\/PatchSitelinksValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabel\/GetPropertyLabel.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/EntityIdRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/IO\/LineReaderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/TimestampPrecisionValidator.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SnakValueDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/RemoveReferencesTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":100,"column":21},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":130,"column":13}]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/FormatterLabelDescriptionLookupFactoryTest.php":{"errors":0,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":59,"column":30},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":63,"column":39},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":77,"column":25}]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/Scribunto\/WikibaseLanguageDependentLuaBindingsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/PropertyValueExpertsModuleTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabel\/GetPropertyLabelValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/SearchEntitiesRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/PatchSitelinks\/DeserializedPatchSitelinksRequest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Dumpers\/JsonDataTypeInjectorTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":127,"column":35}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/CommonsMediaValueNormalizerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FederatedProperties\/ParserOutput\/FederatedPropertiesUiEntityParserOutputGeneratorDecoratorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ItemDisambiguation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/EntityTypeDefinitionsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/SnakDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/tests\/phpunit\/EntitySourceLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpsMerge.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Actions\/SubmitEntityAction.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/GlobalStateFactoryMethodsResourceTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/Api\/ApiClientInfoTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/NumberValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/PurgeEntityDataJobTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Application\/UseCases\/GetPropertyLabel\/GetPropertyLabelResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/RemoveSitelink\/RemoveSitelinkTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/Sql\/DatabaseSchemaUpdater.php":{"errors":2,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":193,"column":13},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":228,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":276,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":280,"column":13},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":309,"column":46}]},"\/src\/repo\/lib\/includes\/PropertyInfoSnakUrlExpander.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/AliasesInLanguage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/Sql\/SqlIdGenerator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/Middleware\/RequestPreconditionCheckTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/AddPageInfo.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/ComplexValueRdfHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangedLanguagesCounter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Actions\/SubmitEntityStatus.php":{"errors":1,"warnings":0,"messages":[{"message":"Doc comment for parameter \"$sv\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5}]},"\/src\/repo\/lib\/includes\/Formatters\/CachingKartographerEmbeddingHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/ValueParserFactoryTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":88,"column":16}]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/PrefetchingTermLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/TermFallbackCache\/TermFallbackCacheFacade.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/DummyChangeOpResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/integration\/TestFactoryBuilder.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":46,"column":19}]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/UpdateRepo\/UpdateRepoOnMoveTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpReferenceTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Parsers\/EntityIdValueParser.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/CompactBaseDataModelSerializerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/tests\/phpunit\/EntityPrefetcherSpyTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/TermFallbackCache\/TermFallbackSerializerTrait.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/ImageLinksDataUpdaterTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":31,"column":35}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/AnonymousEditWarningBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/TermValidatorFactoryPropertyLabelValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/integration\/SerializerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/SubEntityTypesMapperTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/Value.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/SnakFormatterFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/MembershipValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Parsers\/WikibaseStringValueNormalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Actions\/HistoryEntityAction.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/MediaWikiLocalizedTextProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/StatementHtmlGenerator.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":139,"column":13}]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/HtmlExternalIdentifierFormatterTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":27,"column":40},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":31,"column":39}]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/ItemRevision.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/LiteralValueRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/maintenance\/DumpEntities.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":255,"column":76}]},"\/src\/repo\/lib\/includes\/Store\/HashSiteLinkStore.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityContentTooBigException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Store\/Sql\/UnexpectedUnconnectedPagePrimer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/InfoActionHookHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/BaseDataModelDeserializerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/TermFallbackCache\/TermFallbackCacheServiceFactory.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12}]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/DatabaseTermInLangIdsAcquirer.php":{"errors":5,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":121,"column":44},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":127,"column":44},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":235,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":312,"column":13},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":357,"column":21},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":394,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":416,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":421,"column":13}]},"\/src\/repo\/view\/src\/ViewPlaceHolderEmitter.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":12}]},"\/src\/repo\/client\/includes\/Usage\/UsageAspectTransformer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/EntityMetaTagsCreator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Parsers\/MonolingualTextParser.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/DefaultValidatorBuildersTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/integration\/DeserializerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/CreatePropertyRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/NumberRangeValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/BagOStuffSiteLinkConflictLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/Middleware\/BotRightCheckMiddlewareTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/DatabaseItemTermStoreWriter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Usage\/UsageTracker.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/PatchStatement\/PatchedStatementValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Store\/Sql\/PagePropsEntityIdLookup.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":47,"column":41}]},"\/src\/repo\/lib\/includes\/Store\/StorageException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/changes\/tests\/TestChanges.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":45,"column":20}]},"\/src\/repo\/repo\/includes\/Rdf\/Values\/ExternalIdentifierRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Store\/FallbackLabelDescriptionLookupFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/Property.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/TermStoreCleaner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/ReferenceDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpFactoryProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/Api\/ApiFormatReferenceTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Infrastructure\/TermValidatorFactoryAliasesInLanguageValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/unit\/ServiceWiring\/PropertyTermStoreWriterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/maintenance\/rebuildEntityQuantityUnit.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/DataAccess\/EntityRevisionLookupItemDataRetriever.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/PropertyValuePair.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FederatedProperties\/ParserOutput\/FederatedPropertiesPrefetchingEntityParserOutputGeneratorDecoratorTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":86,"column":45},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":89,"column":43}]},"\/src\/repo\/lib\/includes\/Store\/FieldPropertyInfoProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/WikiPageEntityMetaDataLookup.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":287,"column":13}]},"\/src\/repo\/lib\/includes\/StringNormalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/SiteLinkListTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/EntityConstraintProvider.php":{"errors":2,"warnings":0,"messages":[{"message":"Doc comment for parameter \"$entityType\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":63,"column":5},{"message":"Doc comment for parameter \"$entityId\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":63,"column":5}]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/Descriptions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/ChangeOpFingerprint.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":36,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":40,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":44,"column":12}]},"\/src\/repo\/lib\/packages\/wikibase\/federated-properties\/src\/FederatedPropertyId.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":61,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":69,"column":12}]},"\/src\/repo\/lib\/packages\/wikibase\/internal-serialization\/tests\/integration\/RealEntitiesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Infrastructure\/ModifiedLanguageCodes.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/CachingFallbackLabelDescriptionLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Parsers\/MwEraParser.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/PlaintextTimeFormatterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/JulianDateTimeValueCleaner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCaseRequestValidation\/ItemStatementIdRequestValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/DataValueValidator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/MediaWikiContentLanguages.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/Middleware\/PreconditionMiddlewareTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/Deserializers\/SnakValueDeserializerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":59,"column":33}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/WikibasePingbackTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/LegacyIdInterpreterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/FullEntityParserOutputGeneratorIntegrationTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FederatedProperties\/ParserOutput\/EntityParserOutputGeneratorFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/maintenance\/populateChangesSubscription.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/LanguageNameLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Store\/UsageUpdaterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/StatementTransclusionInteractorTest.php":{"errors":0,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":201,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":219,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":246,"column":17}]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/Statement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/RdfVocabularyTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/Sql\/WikiPageEntityStore.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":204,"column":13}]},"\/src\/repo\/lib\/tests\/phpunit\/Sites\/SiteMatrixParserTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Reporting\/ExceptionHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/federated-properties\/tests\/FederatedPropertyIdTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/EntityLinkTargetEntityIdLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Parsers\/MediaWikiNumberUnlocalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/tests\/phpunit\/EntitySourceDefinitionsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Reporting\/LogWarningExceptionHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/Middleware\/AuthenticationMiddlewareTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/src\/Deserializers\/TermDeserializer.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":58,"column":13}]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/SourceAndTypeDispatchingTitleTextLookupTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/Label.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpLabelTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Usage\/PageEntityUsages.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Validators\/ValidatorErrorLocalizer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/PredicateProperty.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/DispatchingEntityMetaTagsCreatorFactoryTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":45,"column":40}]},"\/src\/repo\/lib\/includes\/Store\/SourceAndTypeDispatchingTitleTextLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-services\/tests\/unit\/Diff\/Internal\/AliasGroupListPatcherTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/RouteHandlers\/RemovePropertyStatementRouteHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/EditFilterHookRunnerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":43,"column":35}]},"\/src\/repo\/lib\/includes\/Reporting\/ReportingExceptionHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/ItemStubRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/WikibaseSettings.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/RouteHandlers\/Middleware\/MiddlewareHandlerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Formatters\/GlobeCoordinateKartographerFormatterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/EntityRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/GenericChangeOpResultTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Reporting\/RethrowingExceptionHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/tests\/phpunit\/unit\/MediaWiki\/EntitySourceDocumentUrlProviderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Specials\/SpecialModifyEntity.php":{"errors":1,"warnings":1,"messages":[{"message":"Doc comment for parameter \"$anonymousEditWarningBuilder\" missing","source":"MediaWiki.Commenting.FunctionComment.MissingParamTag","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":302,"column":34}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/FederatedProperties\/ApiEntityExistenceCheckerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/Item.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/ReferenceFormatterFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/tests\/phpunit\/Serializer\/ForbiddenSerializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ParserOutput\/FallbackHintHtmlTermRendererTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Store\/AddUsagesForPageJobTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpResultStub.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/ChangeOp\/StatementChangeOpFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/maintenance\/dumpRdf.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Store\/Sql\/DirectSqlStore.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Usage\/UsageTrackingLanguageFallbackLabelDescriptionLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/DatabaseMatchingTermsLookup.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Api\/ApiXmlFormatTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/DataType.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Store\/Sql\/PropertyInfoTableBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Rdf\/DispatchingValueSnakRdfBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/Hooks\/ParserFunctionRegistrantTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/packages\/wikibase\/data-model-serialization\/tests\/unit\/SerializerFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCaseRequestValidation\/PropertyDescriptionEditRequestValidatingDeserializerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Sites\/SitesBuilderTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangedLanguagesCounterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/ChangeOpsTest.php":{"errors":0,"warnings":3,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":118,"column":29},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":196,"column":35},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":203,"column":35}]},"\/src\/repo\/view\/src\/SiteLinksView.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":243,"column":13}]},"\/src\/repo\/lib\/includes\/Store\/EntityStore.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/tests\/phpunit\/integration\/includes\/Store\/Sql\/BulkSubscriptionUpdaterTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/Store\/FallbackLabelDescriptionLookupFactoryTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/TermLanguageFallbackChain.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCases\/PatchItem\/PatchItemTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/view\/src\/HtmlSnakFormatterFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/TermCacheKeyBuilder.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":12,"column":12}]},"\/src\/repo\/lib\/includes\/LanguageNameLookupFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/StaticTypeIdsStore.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/src\/Domain\/ReadModel\/PropertyPartsBuilder.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Usage\/RedirectTrackingUsageAccumulator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Hooks\/LabelPrefetchHookHandlerTestBase.php":{"errors":0,"warnings":2,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":108,"column":45},{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":111,"column":43}]},"\/src\/repo\/repo\/includes\/Validators\/TermValidatorFactory.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":183,"column":12}]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/ChangeOp\/StatementListProviderDummy.php":{"errors":6,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":35,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":39,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":47,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":55,"column":12}]},"\/src\/repo\/client\/tests\/phpunit\/unit\/includes\/DataAccess\/PropertyIdResolverTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/tests\/phpunit\/ParserFunctions\/CommaSeparatedListTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":28,"column":63}]},"\/src\/repo\/repo\/maintenance\/rebuildPropertyTerms.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/client\/includes\/Usage\/NullSubscriptionManager.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/rest-api\/tests\/phpunit\/Application\/UseCaseRequestValidation\/PropertyStatementIdRequestValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/data-access\/tests\/phpunit\/NewDatabaseEntitySource.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/tests\/phpunit\/includes\/Rdf\/SnakRdfBuilderTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING","line":65,"column":35}]},"\/src\/repo\/lib\/packages\/wikibase\/data-model\/tests\/unit\/Statement\/StatementListTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/lib\/includes\/Store\/Sql\/Terms\/DatabasePropertyTermStoreWriter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/repo\/includes\/Parsers\/MwTimeIsoParser.php":{"errors":0,"warnings":1,"messages":[{"message":"Use static closure","source":"MediaWiki.Usage.StaticClosure.StaticClosure","severity":5,"fixable":true,"type":"WARNING&