Skip to content

0.10.0

Choose a tag to compare

@janedbal janedbal released this 21 Mar 13:24
· 214 commits to master since this release
1a94628

New features:

  • Allow debugging of usages (#165, #172):
parameters:
    shipmonkDeadCode:
        debug:
            usagesOf:
                - App\User\Entity\Address::__construct

with -vvv outputs e.g.:

App\User\Entity\Address::__construct
|
| Marked as alive by:
| entry virtual usage from ShipMonk\PHPStan\DeadCode\Provider\SymfonyUsageProvider (Route method via #[Route] attribute)
|   calls App\User\RegisterUserController::__invoke:36 
|     calls App\User\UserFacade::registerUser:142
|       calls App\User\Entity\Address::__construct
|
| Found 2 usages:
|  • src/User/UserFacade.php:142
|  • tests/User/Entity/AddressTest.php:64 - excluded by tests excluder
  • Improved possible descendant detection (#151)
    • e.g. new Foo->method() does not mark method as used on Foo children anymore

Improvements:

  • Skip private constructors only when those have zero params (#159)
  • Reduce result cache size (#168)
  • Support Symfony's defaultIndexMethod on AutowireLocator/AutowireIterator attribute (#161, @ruudk)

Dependencies

  • Requires phpstan/phpstan ^2.1.7 (was ^2.0.0) (#151)

Breaking changes

  • ClassMemberUsage now requires UsageOrigin, not optionally ClassMethodRef (#165)
  • UsageOriginDetector was removed (#165)
    • use either UsageOrigin::createRegular or UsageOrigin::createVirtual
  • Virtual usages emitted by ReflectionBasedMemberUsageProvider now require note (#171)
    • true => VirtualUsageData::withNote('why considered used')
    • false => null
  • parameter trackMixedAccess was replaced with excluder (#167)
parameters:
    shipmonkDeadCode:
-         trackMixedAccess: false
+         usageExcluders:
+           usageOverMixed:
+               enabled: true