wikimedia / composer-merge-plugin

Merge one or more additional composer.json files at Composer runtime
MIT License
926 stars 160 forks source link

Run phan on composer 2.x #204

Closed reedy closed 3 years ago

reedy commented 3 years ago

As noted in #189, we should setup Phan on this repo. Possibly using https://packagist.org/packages/mediawiki/mediawiki-phan-config

reedy commented 3 years ago

Started poking at this in https://github.com/reedy/composer-merge-plugin/tree/phan

src/ExtraPackage.php:38 PhanUndeclaredTypeProperty Property \Wikimedia\Composer\Merge\V2\ExtraPackage->composer has undeclared type \Composer\Composer
src/ExtraPackage.php:58 PhanUndeclaredTypeProperty Property \Wikimedia\Composer\Merge\V2\ExtraPackage->package has undeclared type \Composer\Package\CompletePackage
src/ExtraPackage.php:68 PhanUndeclaredTypeProperty Property \Wikimedia\Composer\Merge\V2\ExtraPackage->versionParser has undeclared type \Composer\Package\Version\VersionParser
src/ExtraPackage.php:75 PhanUndeclaredTypeParameter Parameter $composer has undeclared type \Composer\Composer
src/ExtraPackage.php:82 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Package\Version\VersionParser
src/ExtraPackage.php:92 PhanPluginDuplicateConditionalNullCoalescing "isset(X) ? X : Y" can usually be simplified to "X ?? Y" in PHP 7. The duplicated expression X was $this->json['extra']['merge-plugin']['include']
src/ExtraPackage.php:103 PhanPluginDuplicateConditionalNullCoalescing "isset(X) ? X : Y" can usually be simplified to "X ?? Y" in PHP 7. The duplicated expression X was $this->json['extra']['merge-plugin']['require']
src/ExtraPackage.php:130 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Json\JsonFile
src/ExtraPackage.php:131 PhanUndeclaredClassMethod Call to method read from undeclared class \Composer\Json\JsonFile
src/ExtraPackage.php:146 PhanUndeclaredTypeReturnType Return type of loadPackage() is undeclared type \Composer\Package\CompletePackage
src/ExtraPackage.php:148 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Package\Loader\ArrayLoader
src/ExtraPackage.php:149 PhanUndeclaredClassMethod Call to method load from undeclared class \Composer\Package\Loader\ArrayLoader
src/ExtraPackage.php:151 PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \Composer\Package\CompletePackage
src/ExtraPackage.php:167 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:198 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:211 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:216 PhanUndeclaredClassMethod Call to method getRepositoryManager from undeclared class \Composer\Composer
src/ExtraPackage.php:233 PhanUndeclaredClassMethod Call to method setRepositories from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:235 PhanUndeclaredClassMethod Call to method getRepositories from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:248 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:251 PhanUndeclaredClassStaticProperty Reference to static property supportedLinkTypes from undeclared class \Composer\Package\BasePackage
src/ExtraPackage.php:321 PhanUndeclaredClassMethod Call to method clear from undeclared class \Composer\Semver\Intervals
src/ExtraPackage.php:337 PhanUndeclaredTypeParameter Parameter $merge has undeclared type \Composer\Package\Link
src/ExtraPackage.php:337 PhanUndeclaredTypeParameter Parameter $origin has undeclared type \Composer\Package\Link
src/ExtraPackage.php:337 PhanUndeclaredTypeReturnType Return type of mergeConstraints() is undeclared type \Composer\Package\Link
src/ExtraPackage.php:341 PhanUndeclaredClassMethod Call to method getConstraint from undeclared class \Composer\Package\Link
src/ExtraPackage.php:342 PhanUndeclaredClassMethod Call to method getConstraint from undeclared class \Composer\Package\Link
src/ExtraPackage.php:347 PhanUndeclaredClassReference Reference to undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/ExtraPackage.php:349 PhanUndeclaredClassMethod Call to method getConstraint from undeclared class \Composer\Package\Link
src/ExtraPackage.php:349 PhanUndeclaredClassMethod Call to method isSubsetOf from undeclared class \Composer\Semver\Intervals
src/ExtraPackage.php:353 PhanUndeclaredClassMethod Call to method getConstraint from undeclared class \Composer\Package\Link
src/ExtraPackage.php:353 PhanUndeclaredClassMethod Call to method isSubsetOf from undeclared class \Composer\Semver\Intervals
src/ExtraPackage.php:359 PhanUndeclaredClassMethod Call to method getConstraint from undeclared class \Composer\Package\Link
src/ExtraPackage.php:360 PhanUndeclaredClassMethod Call to method getConstraint from undeclared class \Composer\Package\Link
src/ExtraPackage.php:364 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Package\Link
src/ExtraPackage.php:365 PhanUndeclaredClassMethod Call to method getSource from undeclared class \Composer\Package\Link
src/ExtraPackage.php:366 PhanUndeclaredClassMethod Call to method getTarget from undeclared class \Composer\Package\Link
src/ExtraPackage.php:368 PhanUndeclaredClassMethod Call to method getDescription from undeclared class \Composer\Package\Link
src/ExtraPackage.php:369 PhanUndeclaredClassMethod Call to method getPrettyConstraint from undeclared class \Composer\Package\Link
src/ExtraPackage.php:379 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:425 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:428 PhanUndeclaredClassMethod Call to method getStabilityFlags from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:429 PhanUndeclaredClassMethod Call to method getMinimumStability from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:432 PhanUndeclaredClassMethod Call to method setStabilityFlags from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:444 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:446 PhanUndeclaredClassStaticProperty Reference to static property supportedLinkTypes from undeclared class \Composer\Package\BasePackage
src/ExtraPackage.php:473 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:475 PhanUndeclaredClassMethod Call to method getSuggests from undeclared class \Composer\Package\CompletePackage
src/ExtraPackage.php:478 PhanUndeclaredClassMethod Call to method setSuggests from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:479 PhanUndeclaredClassMethod Call to method getSuggests from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:491 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:493 PhanUndeclaredClassMethod Call to method getExtra from undeclared class \Composer\Package\CompletePackage
src/ExtraPackage.php:499 PhanUndeclaredClassMethod Call to method getExtra from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:503 PhanUndeclaredClassMethod Call to method setExtra from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:518 PhanUndeclaredClassMethod Call to method setExtra from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:530 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:532 PhanUndeclaredClassMethod Call to method getScripts from undeclared class \Composer\Package\CompletePackage
src/ExtraPackage.php:537 PhanUndeclaredClassMethod Call to method getScripts from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:541 PhanUndeclaredClassMethod Call to method setScripts from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:545 PhanUndeclaredClassMethod Call to method setScripts from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:580 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:582 PhanUndeclaredClassStaticProperty Reference to static property supportedLinkTypes from undeclared class \Composer\Package\BasePackage
src/ExtraPackage.php:583 PhanUndeclaredClassMethod Call to method getVersion from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:584 PhanUndeclaredClassMethod Call to method getPrettyVersion from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:596 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Package\Link
src/ExtraPackage.php:599 PhanUndeclaredClassMethod Call to method parseConstraints from undeclared class \Composer\Package\Version\VersionParser
src/ExtraPackage.php:605 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Package\Link
src/ExtraPackage.php:608 PhanUndeclaredClassMethod Call to method parseConstraints from undeclared class \Composer\Package\Version\VersionParser
src/ExtraPackage.php:636 PhanUndeclaredTypeReturnType Return type of unwrapIfNeeded() is undeclared type \Composer\Package\RootPackage
src/ExtraPackage.php:636 PhanUndeclaredTypeReturnType Return type of unwrapIfNeeded() is undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:637 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:641 PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \Composer\Package\RootAliasPackage
src/ExtraPackage.php:645 PhanUndeclaredClassMethod Call to method getAliasOf from undeclared class \Composer\Package\RootAliasPackage
src/ExtraPackage.php:656 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/ExtraPackage.php:663 PhanUndeclaredClassStaticProperty Reference to static property supportedLinkTypes from undeclared class \Composer\Package\BasePackage
src/ExtraPackage.php:671 PhanUndeclaredClassMethod Call to method setReferences from undeclared class \Composer\Package\RootPackageInterface
src/ExtraPackage.php:686 PhanUndeclaredClassMethod Call to method parseStability from undeclared class \Composer\Package\Version\VersionParser
src/Logger.php:30 PhanUndeclaredTypeProperty Property \Wikimedia\Composer\Merge\V2\Logger->inputOutput has undeclared type \Composer\IO\IOInterface
src/Logger.php:36 PhanUndeclaredTypeParameter Parameter $io has undeclared type \Composer\IO\IOInterface
src/Logger.php:52 PhanUndeclaredClassMethod Call to method isVeryVerbose from undeclared class \Composer\IO\IOInterface
src/Logger.php:68 PhanUndeclaredClassMethod Call to method isVerbose from undeclared class \Composer\IO\IOInterface
src/Logger.php:93 PhanUndeclaredClassMethod Call to method writeError from undeclared class \Composer\IO\IOInterface
src/Logger.php:97 PhanUndeclaredClassMethod Call to method write from undeclared class \Composer\IO\IOInterface
src/MergePlugin.php:77 PhanUndeclaredInterface Class implements undeclared interface \Composer\EventDispatcher\EventSubscriberInterface
src/MergePlugin.php:77 PhanUndeclaredInterface Class implements undeclared interface \Composer\Plugin\PluginInterface
src/MergePlugin.php:93 PhanUndeclaredTypeProperty Property \Wikimedia\Composer\Merge\V2\MergePlugin->composer has undeclared type \Composer\Composer
src/MergePlugin.php:129 PhanUndeclaredTypeParameter Parameter $composer has undeclared type \Composer\Composer
src/MergePlugin.php:129 PhanUndeclaredTypeParameter Parameter $io has undeclared type \Composer\IO\IOInterface
src/MergePlugin.php:139 PhanUndeclaredTypeParameter Parameter $composer has undeclared type \Composer\Composer
src/MergePlugin.php:139 PhanUndeclaredTypeParameter Parameter $io has undeclared type \Composer\IO\IOInterface
src/MergePlugin.php:146 PhanUndeclaredTypeParameter Parameter $composer has undeclared type \Composer\Composer
src/MergePlugin.php:146 PhanUndeclaredTypeParameter Parameter $io has undeclared type \Composer\IO\IOInterface
src/MergePlugin.php:156 PhanUndeclaredClassConstant Reference to constant INIT from undeclared class \Composer\Plugin\PluginEvents
src/MergePlugin.php:158 PhanUndeclaredClassConstant Reference to constant POST_PACKAGE_INSTALL from undeclared class \Composer\Installer\PackageEvents
src/MergePlugin.php:160 PhanUndeclaredClassConstant Reference to constant POST_INSTALL_CMD from undeclared class \Composer\Script\ScriptEvents
src/MergePlugin.php:162 PhanUndeclaredClassConstant Reference to constant POST_UPDATE_CMD from undeclared class \Composer\Script\ScriptEvents
src/MergePlugin.php:164 PhanUndeclaredClassConstant Reference to constant PRE_AUTOLOAD_DUMP from undeclared class \Composer\Script\ScriptEvents
src/MergePlugin.php:166 PhanUndeclaredClassConstant Reference to constant PRE_INSTALL_CMD from undeclared class \Composer\Script\ScriptEvents
src/MergePlugin.php:168 PhanUndeclaredClassConstant Reference to constant PRE_UPDATE_CMD from undeclared class \Composer\Script\ScriptEvents
src/MergePlugin.php:189 PhanUndeclaredTypeParameter Parameter $event has undeclared type \Composer\EventDispatcher\Event
src/MergePlugin.php:207 PhanUndeclaredTypeParameter Parameter $event has undeclared type \Composer\Script\Event
src/MergePlugin.php:210 PhanUndeclaredClassMethod Call to method isDevMode from undeclared class \Composer\Script\Event
src/MergePlugin.php:214 PhanUndeclaredClassConstant Reference to constant PRE_AUTOLOAD_DUMP from undeclared class \Composer\Script\ScriptEvents
src/MergePlugin.php:214 PhanUndeclaredClassMethod Call to method getName from undeclared class \Composer\Script\Event
src/MergePlugin.php:216 PhanUndeclaredClassMethod Call to method getFlags from undeclared class \Composer\Script\Event
src/MergePlugin.php:234 PhanUndeclaredClassMethod Call to method getPackage from undeclared class \Composer\Composer
src/MergePlugin.php:260 PhanUndeclaredTypeParameter Parameter $root has undeclared type \Composer\Package\RootPackageInterface
src/MergePlugin.php:309 PhanUndeclaredTypeParameter Parameter $event has undeclared type \Composer\Installer\PackageEvent
src/MergePlugin.php:311 PhanUndeclaredClassMethod Call to method getOperation from undeclared class \Composer\Installer\PackageEvent
src/MergePlugin.php:312 PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \Composer\DependencyResolver\Operation\InstallOperation
src/MergePlugin.php:313 PhanUndeclaredClassMethod Call to method getPackage from undeclared class \Composer\DependencyResolver\Operation\InstallOperation
src/MergePlugin.php:318 PhanUndeclaredClassMethod Call to method getComposer from undeclared class \Composer\Installer\PackageEvent
src/MergePlugin.php:331 PhanUndeclaredTypeParameter Parameter $event has undeclared type \Composer\Script\Event
src/MergePlugin.php:345 PhanUndeclaredClassMethod Call to method getComposerFile from undeclared class \Composer\Factory
src/MergePlugin.php:346 PhanUndeclaredClassMethod Call to method getLockFile from undeclared class \Composer\Factory
src/MergePlugin.php:350 PhanUndeclaredClassMethod Call to method getConfig from undeclared class \Composer\Composer
src/MergePlugin.php:354 PhanUndeclaredClassMethod Call to method create from undeclared class \Composer\Installer
src/MergePlugin.php:355 PhanUndeclaredClassMethod Call to method getIO from undeclared class \Composer\Script\Event
src/MergePlugin.php:358 PhanUndeclaredClassMethod Call to method create from undeclared class \Composer\Factory
src/MergePlugin.php:358 PhanUndeclaredClassMethod Call to method getIO from undeclared class \Composer\Script\Event
src/MergePlugin.php:363 PhanUndeclaredClassMethod Call to method isDevMode from undeclared class \Composer\Script\Event
src/MergePlugin.php:379 PhanPossiblyUndeclaredVariable Variable $lockBackup is possibly undeclared
src/MergePlugin.php:382 PhanPossiblyUndeclaredVariable Variable $lock is possibly undeclared
src/MergePlugin.php:385 PhanPossiblyUndeclaredVariable Variable $lock is possibly undeclared
src/MultiConstraint.php:22 PhanUndeclaredExtendedClass Class extends undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:35 PhanUndeclaredTypeParameter Parameter $constraints has undeclared type \Wikimedia\Composer\Merge\V2\ConstraintInterface[]
src/MultiConstraint.php:35 PhanUndeclaredTypeReturnType Return type of create() is undeclared type \Wikimedia\Composer\Merge\V2\ConstraintInterface
src/MultiConstraint.php:38 PhanTypeMismatchReturn Returning new EmptyConstraint() of type \Composer\Semver\Constraint\EmptyConstraint but create() is declared to return \Wikimedia\Composer\Merge\V2\ConstraintInterface
src/MultiConstraint.php:38 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Semver\Constraint\EmptyConstraint
src/MultiConstraint.php:53 PhanParamTooMany Call with 2 arg(s) to \Wikimedia\Composer\Merge\V2\MultiConstraint::__construct() which only takes 0 arg(s) defined at src/MultiConstraint.php:22
src/MultiConstraint.php:53 PhanTypeMismatchReturn Returning new self($constraints, $conjunctive) of type \Wikimedia\Composer\Merge\V2\MultiConstraint but create() is declared to return \Wikimedia\Composer\Merge\V2\ConstraintInterface
src/MultiConstraint.php:70 PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:71 PhanUndeclaredClassProperty Reference to instance property conjunctive from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:72 PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:73 PhanUndeclaredClassProperty Reference to instance property conjunctive from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:74 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:75 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:76 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:78 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:80 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:82 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:87 PhanParamTooMany Call with 2 arg(s) to \Wikimedia\Composer\Merge\V2\MultiConstraint::__construct() which only takes 0 arg(s) defined at src/MultiConstraint.php:22
src/MultiConstraint.php:89 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:90 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/NestedArray.php:45 PhanUnextractableAnnotationElementName Saw possibly unextractable annotation for a fragment of comment '* @param array ...': after array, did not see an element name (will guess based on comment order)
src/PluginState.php:26 PhanUndeclaredTypeProperty Property \Wikimedia\Composer\Merge\V2\PluginState->composer has undeclared type \Composer\Composer
src/PluginState.php:131 PhanUndeclaredTypeParameter Parameter $composer has undeclared type \Composer\Composer
src/PluginState.php:134 PhanUndeclaredClassConstant Reference to constant PLUGIN_API_VERSION from undeclared class \Composer\Plugin\PluginInterface
src/PluginState.php:152 PhanUndeclaredClassMethod Call to method getPackage from undeclared class \Composer\Composer
src/PluginState.php:165 PhanPluginDuplicateConditionalNullCoalescing "isset(X) ? X : Y" can usually be simplified to "X ?? Y" in PHP 7. The duplicated expression X was $extra['merge-plugin']
src/StabilityFlags.php:45 PhanUndeclaredClassConstant Reference to constant STABILITY_STABLE from undeclared class \Composer\Package\BasePackage
src/StabilityFlags.php:50 PhanUndeclaredClassStaticProperty Reference to static property stabilities from undeclared class \Composer\Package\BasePackage
src/StabilityFlags.php:62 PhanUndeclaredClassMethod Call to method normalizeStability from undeclared class \Composer\Package\Version\VersionParser
src/StabilityFlags.php:63 PhanPluginDuplicateConditionalNullCoalescing "isset(X) ? X : Y" can usually be simplified to "X ?? Y" in PHP 7. The duplicated expression X was BasePackage::$stabilities[$name]
src/StabilityFlags.php:63 PhanUndeclaredClassStaticProperty Reference to static property stabilities from undeclared class \Composer\Package\BasePackage
src/StabilityFlags.php:64 PhanUndeclaredClassStaticProperty Reference to static property stabilities from undeclared class \Composer\Package\BasePackage
src/StabilityFlags.php:65 PhanUndeclaredClassConstant Reference to constant STABILITY_STABLE from undeclared class \Composer\Package\BasePackage
src/StabilityFlags.php:154 PhanUndeclaredClassMethod Call to method parseStability from undeclared class \Composer\Package\Version\VersionParser
src/StabilityFlags.php:157 PhanUndeclaredClassConstant Reference to constant STABILITY_STABLE from undeclared class \Composer\Package\BasePackage
src/StabilityFlags.php:177 PhanPluginDuplicateConditionalNullCoalescing "isset(X) ? X : Y" can usually be simplified to "X ?? Y" in PHP 7. The duplicated expression X was $this->stabilityFlags[$name]
mcaskill commented 3 years ago

Hrm. I'm unfamiliar with Phan but a lot of these are odd notices:

src/MergePlugin.php:77 PhanUndeclaredInterface Class implements undeclared interface \Composer\EventDispatcher\EventSubscriberInterface

The EventSubscriberInterface is imported via use. Is presume it's a question of configuring Phan to know where Composer is?

reedy commented 3 years ago

There'll be some false positives due to the composer 1.x code etc as it'll only have 2.x to use

I'm cleaning up some other stuff, and then I'll see how things look

reedy commented 3 years ago

Playing with the config to force it to include the composer files in the static analysis...

src/ExtraPackage.php:319 PhanUndeclaredClassMethod Call to method clear from undeclared class \Composer\Semver\Intervals
src/ExtraPackage.php:337 PhanUndeclaredClassMethod Call to method getPrettyString from undeclared class \Composer\Semver\Constraint\ConstraintInterface
src/ExtraPackage.php:338 PhanUndeclaredClassMethod Call to method getPrettyString from undeclared class \Composer\Semver\Constraint\ConstraintInterface
src/ExtraPackage.php:343 PhanUndeclaredClassReference Reference to undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/ExtraPackage.php:345 PhanUndeclaredClassMethod Call to method isSubsetOf from undeclared class \Composer\Semver\Intervals
src/ExtraPackage.php:349 PhanUndeclaredClassMethod Call to method isSubsetOf from undeclared class \Composer\Semver\Intervals
src/ExtraPackage.php:425 PhanTypeMismatchArgument Argument 2 ($minimumStability) is $root->getMinimumStability() of type string but \Wikimedia\Composer\Merge\V2\StabilityFlags::__construct() takes int defined at src/StabilityFlags.php:42
src/ExtraPackage.php:682 PhanUndeclaredStaticMethod Static call to undeclared method \Composer\Package\Version\VersionParser::parseStability
src/MergePlugin.php:375 PhanUndeclaredMethod Call to undeclared method \Composer\Installer::setUpdateWhitelist
src/MergePlugin.php:384 PhanPossiblyUndeclaredVariable Variable $lock is possibly undeclared
src/MergePlugin.php:387 PhanPossiblyUndeclaredVariable Variable $lock is possibly undeclared
src/MergePlugin.php:387 PhanTypeMismatchArgumentNullableInternal Argument 1 ($filename) is $lock of type ?string but \file_put_contents() takes string (expected type to be non-nullable)
src/MultiConstraint.php:23 PhanUndeclaredExtendedClass Class extends undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:36 PhanUndeclaredTypeParameter Parameter $constraints has undeclared type \Composer\Semver\Constraint\ConstraintInterface[]
src/MultiConstraint.php:36 PhanUndeclaredTypeReturnType Return type of create() is undeclared type \Composer\Semver\Constraint\ConstraintInterface
src/MultiConstraint.php:39 PhanTypeMismatchReturn Returning new EmptyConstraint() of type \Composer\Semver\Constraint\EmptyConstraint but create() is declared to return \Composer\Semver\Constraint\ConstraintInterface
src/MultiConstraint.php:39 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Semver\Constraint\EmptyConstraint
src/MultiConstraint.php:54 PhanParamTooMany Call with 2 arg(s) to \Wikimedia\Composer\Merge\V2\MultiConstraint::__construct() which only takes 0 arg(s) defined at src/MultiConstraint.php:23
src/MultiConstraint.php:54 PhanTypeMismatchReturn Returning new self($constraints, $conjunctive) of type \Wikimedia\Composer\Merge\V2\MultiConstraint but create() is declared to return \Composer\Semver\Constraint\ConstraintInterface
src/MultiConstraint.php:71 PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:72 PhanUndeclaredClassProperty Reference to instance property conjunctive from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:73 PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:74 PhanUndeclaredClassProperty Reference to instance property conjunctive from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:75 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:76 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:77 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:79 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:81 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:83 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:88 PhanParamTooMany Call with 2 arg(s) to \Wikimedia\Composer\Merge\V2\MultiConstraint::__construct() which only takes 0 arg(s) defined at src/MultiConstraint.php:23
src/MultiConstraint.php:90 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/MultiConstraint.php:91 PhanUndeclaredClassProperty Reference to instance property constraints from undeclared class \Composer\Semver\Constraint\MultiConstraint (Did you mean class \Wikimedia\Composer\Merge\V2\MultiConstraint)
src/NestedArray.php:45 PhanUnextractableAnnotationElementName Saw possibly unextractable annotation for a fragment of comment '* @param array ...': after array, did not see an element name (will guess based on comment order)
src/StabilityFlags.php:47 PhanTypeMismatchArgument Argument 1 ($name) is $minimumStability of type int but \Wikimedia\Composer\Merge\V2\StabilityFlags::getStabilityInt() takes string defined at src/StabilityFlags.php:59
src/StabilityFlags.php:61 PhanUndeclaredStaticMethod Static call to undeclared method \Composer\Package\Version\VersionParser::normalizeStability
src/StabilityFlags.php:148 PhanUndeclaredStaticMethod Static call to undeclared method \Composer\Package\Version\VersionParser::parseStability

Progress!

reedy commented 3 years ago

And including composer/semver too...

src/ExtraPackage.php:425 PhanTypeMismatchArgument Argument 2 ($minimumStability) is $root->getMinimumStability() of type string but \Wikimedia\Composer\Merge\V2\StabilityFlags::__construct() takes int defined at src/StabilityFlags.php:42
src/MergePlugin.php:375 PhanUndeclaredMethod Call to undeclared method \Composer\Installer::setUpdateWhitelist
src/MergePlugin.php:384 PhanPossiblyUndeclaredVariable Variable $lock is possibly undeclared
src/MergePlugin.php:387 PhanPossiblyUndeclaredVariable Variable $lock is possibly undeclared
src/MergePlugin.php:387 PhanTypeMismatchArgumentNullableInternal Argument 1 ($filename) is $lock of type ?string but \file_put_contents() takes string (expected type to be non-nullable)
src/MultiConstraint.php:39 PhanTypeMismatchReturn Returning new EmptyConstraint() of type \Composer\Semver\Constraint\EmptyConstraint but create() is declared to return \Composer\Semver\Constraint\ConstraintInterface
src/MultiConstraint.php:39 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Semver\Constraint\EmptyConstraint
src/NestedArray.php:45 PhanUnextractableAnnotationElementName Saw possibly unextractable annotation for a fragment of comment '* @param array ...': after array, did not see an element name (will guess based on comment order)
src/StabilityFlags.php:47 PhanTypeMismatchArgument Argument 1 ($name) is $minimumStability of type int but \Wikimedia\Composer\Merge\V2\StabilityFlags::getStabilityInt() takes string defined at src/StabilityFlags.php:59
reedy commented 3 years ago

And after c516b59

src/ExtraPackage.php:425 PhanTypeMismatchArgument Argument 2 ($minimumStability) is $root->getMinimumStability() of type string but \Wikimedia\Composer\Merge\V2\StabilityFlags::__construct() takes int defined at src/StabilityFlags.php:42
src/MergePlugin.php:376 PhanUndeclaredMethod Call to undeclared method \Composer\Installer::setUpdateWhitelist
src/MultiConstraint.php:39 PhanTypeMismatchReturn Returning new EmptyConstraint() of type \Composer\Semver\Constraint\EmptyConstraint but create() is declared to return \Composer\Semver\Constraint\ConstraintInterface
src/MultiConstraint.php:39 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Semver\Constraint\EmptyConstraint
src/NestedArray.php:45 PhanUnextractableAnnotationElementName Saw possibly unextractable annotation for a fragment of comment '* @param array ...': after array, did not see an element name (will guess based on comment order)
src/StabilityFlags.php:47 PhanTypeMismatchArgument Argument 1 ($name) is $minimumStability of type int but \Wikimedia\Composer\Merge\V2\StabilityFlags::getStabilityInt() takes string defined at src/StabilityFlags.php:59
reedy commented 3 years ago

And after cb0b059

src/ExtraPackage.php:425 PhanTypeMismatchArgument Argument 2 ($minimumStability) is $root->getMinimumStability() of type string but \Wikimedia\Composer\Merge\V2\StabilityFlags::__construct() takes int defined at src/StabilityFlags.php:42
src/MergePlugin.php:376 PhanUndeclaredMethod Call to undeclared method \Composer\Installer::setUpdateWhitelist
src/MultiConstraint.php:39 PhanTypeMismatchReturn Returning new EmptyConstraint() of type \Composer\Semver\Constraint\EmptyConstraint but create() is declared to return \Composer\Semver\Constraint\ConstraintInterface
src/MultiConstraint.php:39 PhanUndeclaredClassMethod Call to method __construct from undeclared class \Composer\Semver\Constraint\EmptyConstraint
src/StabilityFlags.php:47 PhanTypeMismatchArgument Argument 1 ($name) is $minimumStability of type int but \Wikimedia\Composer\Merge\V2\StabilityFlags::getStabilityInt() takes string defined at src/StabilityFlags.php:59
reedy commented 3 years ago

Another fix in 94e3868

PR at https://github.com/wikimedia/composer-merge-plugin/pull/209