Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use roave/better-reflection to guess packages #346

Draft
wants to merge 5 commits into
base: 4.1.x
Choose a base branch
from

Conversation

DanielBadura
Copy link
Contributor

This is an updated version of #162 and should also resolve #91
Should fix #345 #280 #52

Comment on lines 34 to 35
$cleanPath = preg_quote(sprintf('%s/vendor', str_replace(DIRECTORY_SEPARATOR, '/', $installationPath)), '@');
$this->pathRegex = sprintf('@^%s/(?:composer/\.\./)?([^/]+/[^/]+)/@', $cleanPath);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure for this regex tbh. Is there a way to get the name from the composer.json maybe?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Getting the name from composer.json would be best, since the path will break anyway, due to people doing ugly things like changing the location of the vendor dir 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there already a way to get the name from the composer.json?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

each composer.json must have a "name" property, in order to be valid.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So i reused now the regex but to get the composer.json and load it via the JsonLoader already present in this lib.

Im not sure if this is now really better since we are still using a regex but also have now more I/O which impacts performance. But since this is a CI tool i think the performance aspect could be overlooked.

@DanielBadura
Copy link
Contributor Author

I would add some more tests the next days

@@ -26,4 +26,9 @@ public function __invoke(string $symbolName): Generator
yield from $guesser($symbolName);
}
}

public function addGuesser(Guesser $guesser): void
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's avoid introducing mutability here: instead, let's use a new constructor argument?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional or not: the BC break from using roave/better-reflection by default will probably be notable anyway, so we can potentially break BC here, and release in 5.0.0

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you explain why adding the dependency would lead to a BC break?

Yeah, would go for the argument too.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Potentially because scanning behavior changes => new symbols detected (or missed) => CI failure for consumers that upgrade.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I misunderstand: But we are not detecting here more / new symbols, we just give here a hint which dependency should be installed to get rid of the warning, no?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the mutability but still i dont get why we already break BC with using better-reflection. Maybe you could explain it more?

Comment on lines 34 to 35
$cleanPath = preg_quote(sprintf('%s/vendor', str_replace(DIRECTORY_SEPARATOR, '/', $installationPath)), '@');
$this->pathRegex = sprintf('@^%s/(?:composer/\.\./)?([^/]+/[^/]+)/@', $cleanPath);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Getting the name from composer.json would be best, since the path will break anyway, due to people doing ugly things like changing the location of the vendor dir 🤔


public function __construct(string $installationPath)
{
$this->sourceLocator = new MemoizingSourceLocator((new MakeLocatorForInstalledJson())(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This locator does not include PHP symbols

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just realized that this is potentially also broken in roave/backward-compatibility-check :|

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not quite sure but dont we have for the php internal stuff the other guesser?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Possibly, but BetterReflection can also reflect all of that, heh :D

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say, follow up PR, if wanted.

@Ocramius Ocramius added this to the 4.1.0 milestone Dec 28, 2021
@DanielBadura
Copy link
Contributor Author

Would need to kill some Mutants next 🗡️

@DanielBadura
Copy link
Contributor Author

I realised that the patch introduced alot of skipped mutants:

This result is taken this PR and the action here

Ref: https://github.com/maglnet/ComposerRequireChecker/runs/4844758145?check_suite_focus=true

PHPUnit version: 9.5.10

.: killed, M: escaped, U: uncovered, E: fatal error, X: syntax error, T: timed out, S: skipped


Generate mutants...

Processing source code files: 0
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (   50)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (  100)
SSSSM.....SSSS..SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (  150)
SSSSSSSSSS.SSSSSSUSSUSSSSSSSSSSSSSSSSSSSSSSSSSSSS.   (  200)
....SSSSSSSSSSSSS.SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (  250)
SSSSSSSSSSSSSS.SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (  300)
SSSSSSSSSSSSSSSSSSSSSSSSS.SSS..SSSSSSSSS....SSSSSS   (  350)
SS..SUUU.SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (  400)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (  450)
SSSSSSSSSSSS............MSSSSSSSSSSSSSSSSSSS......   (  500)
....SSSS..........

518 mutations were generated:
      57 mutants were killed
       5 mutants were not covered by tests
       2 covered mutants were not detected
       0 errors were encountered
       0 syntax errors were encountered
       0 time outs were encountered
     454 mutants required more time than configured

Metrics:
         Mutation Score Indicator (MSI): 89%
         Mutation Code Coverage: 92%
         Covered Code MSI: 96%

Before this patch, there werent so many skipped mutants see here the result from the latest run.

This is taken from the latest infection run

Ref: https://github.com/maglnet/ComposerRequireChecker/runs/4794435067?check_suite_focus=true

PHPUnit version: 9.5.10

.: killed, M: escaped, U: uncovered, E: fatal error, X: syntax error, T: timed out, S: skipped


Generate mutants...

Processing source code files: 0
.M................................................   (   50)
..................................................   (  100)
...........................................M......   (  150)
..................................................   (  200)
..................................................   (  250)
............M...M.......M.........................   (  300)
..............................UUU.................   (  350)
................................................M.   (  400)
.................................M...............M   (  450)
...................M.......................

493 mutations were generated:
     481 mutants were killed
       3 mutants were not covered by tests
       9 covered mutants were not detected
       0 errors were encountered
       0 syntax errors were encountered
       0 time outs were encountered
       0 mutants required more time than configured

Metrics:
         Mutation Score Indicator (MSI): 97%
         Mutation Code Coverage: 99%
         Covered Code MSI: 98%

So i increased lokally the config for timeout from 30 to 60 and got this result:

PHPUnit version: 9.5.10

  167 [============================] 2 mins

Generate mutants...

Processing source code files: 31/31
.: killed, M: escaped, U: uncovered, E: fatal error, X: syntax error, T: timed out, S: skipped

UUUUUSSSSSSSSSSSSSSSSSSSSSSSSSSSSS.M..............   ( 50 / 518)
........................................T.........   (100 / 518)
..................T...............................   (150 / 518)
...................M..............................   (200 / 518)
..................................................   (250 / 518)
.......................T.......T............M....M   (300 / 518)
..M...............................................   (350 / 518)
.............................................M....   (400 / 518)
..................................................   (450 / 518)
...............M...............M.................M   (500 / 518)
..................                                   (518 / 518)

518 mutations were generated:
     471 mutants were killed
       5 mutants were not covered by tests
       9 covered mutants were not detected
       0 errors were encountered
       0 syntax errors were encountered
       4 time outs were encountered
      29 mutants required more time than configured

Metrics:
         Mutation Score Indicator (MSI): 97%
         Mutation Code Coverage: 98%
         Covered Code MSI: 98%

@Ocramius do you think this comes from the slowness of better-reflection or loading of composer.json's? Or did we something wrong with configuring infection?

…ch seems the increase the runtime the mutation dramatically
@DanielBadura
Copy link
Contributor Author

Just pushed the increase of the config to create the result with the workflow.

@Ocramius
Copy link
Collaborator

That timing seems extreme 😱

Could it be that coverage makes it so steep? What is the PHPUnit runtime, without mutations, but with coverage?

@DanielBadura
Copy link
Contributor Author

Takes nearly 2 minutes. But i must say: im running docker on mac so, its slow per default :D
Infection on the other hand runs in 40 minutes. I will try later today to run it wihtout docker and see the "normal" results.

@DanielBadura
Copy link
Contributor Author

So finally i had time to do the measurements! 🥳

I did this on a ubuntu system and running with a php docker image.
These are the results from this branch:

PHPUnit with NO coverage: Time 01:35.442

PHPUnit 9.5.10 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.0.17
Configuration: /app/phpunit.xml.dist

.......................S..S....................................  63 / 156 ( 40%)
............................................................... 126 / 156 ( 80%)
..............................                                  156 / 156 (100%)

Time: 01:35.442, Memory: 378.06 MB

PHPUnit with coverage, pcov: Time 02:03.485

PHPUnit 9.5.10 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.0.17 with PCOV 1.0.11
Configuration: /app/phpunit.xml.dist

.......................S..S....................................  63 / 156 ( 40%)
............................................................... 126 / 156 ( 80%)
..............................                                  156 / 156 (100%)

Time: 02:03.485, Memory: 378.06 MB

Infection 30 Seconds Timeout: Time 2m 32s

    ____      ____          __  _
   /  _/___  / __/__  _____/ /_(_)___  ____
   / // __ \/ /_/ _ \/ ___/ __/ / __ \/ __ \
 _/ // / / / __/  __/ /__/ /_/ / /_/ / / / /
/___/_/ /_/_/  \___/\___/\__/_/\____/_/ /_/

Infection - PHP Mutation Testing Framework version 0.25.4.0

[notice] You are running Infection with PCOV enabled.

Running initial test suite...

PHPUnit version: 9.5.10

  161 [============================] 2 mins

Generate mutants...

Processing source code files: 31/31
.: killed, M: escaped, U: uncovered, E: fatal error, X: syntax error, T: timed out, S: skipped

UUUUUSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   ( 50 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (100 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (150 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (200 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (250 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (300 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (350 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (400 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (450 / 518)
SSSSSSSSM.......................M..M...........M..   (500 / 518)
..MMMMMMMMM.MMMMM.                                   (518 / 518)

518 mutations were generated:
      42 mutants were killed
       5 mutants were not covered by tests
      18 covered mutants were not detected
       0 errors were encountered
       0 syntax errors were encountered
       0 time outs were encountered
     453 mutants required more time than configured

Metrics:
         Mutation Score Indicator (MSI): 64%
         Mutation Code Coverage: 92%
         Covered Code MSI: 70%

Please note that some mutants will inevitably be harmless (i.e. false positives).

Time: 2m 32s. Memory: 0.03GB

Infection 60 Seconds Timeout: Time 2m 29s

    ____      ____          __  _
   /  _/___  / __/__  _____/ /_(_)___  ____
   / // __ \/ /_/ _ \/ ___/ __/ / __ \/ __ \
 _/ // / / / __/  __/ /__/ /_/ / /_/ / / / /
/___/_/ /_/_/  \___/\___/\__/_/\____/_/ /_/

Infection - PHP Mutation Testing Framework version 0.25.4.0

[notice] You are running Infection with PCOV enabled.

Running initial test suite...

PHPUnit version: 9.5.10

  165 [============================] 2 mins

Generate mutants...

Processing source code files: 31/31
.: killed, M: escaped, U: uncovered, E: fatal error, X: syntax error, T: timed out, S: skipped

UUUUUSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   ( 50 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (100 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (150 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (200 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (250 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (300 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (350 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (400 / 518)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS   (450 / 518)
SSSSSSSSM.......................M..M...........M..   (500 / 518)
..MMMMMMMMM.MMMMM.                                   (518 / 518)

518 mutations were generated:
      42 mutants were killed
       5 mutants were not covered by tests
      18 covered mutants were not detected
       0 errors were encountered
       0 syntax errors were encountered
       0 time outs were encountered
     453 mutants required more time than configured

Metrics:
         Mutation Score Indicator (MSI): 64%
         Mutation Code Coverage: 92%
         Covered Code MSI: 70%

Please note that some mutants will inevitably be harmless (i.e. false positives).

Time: 2m 29s. Memory: 0.03GB

Infection 90 Seconds Timeout: Time 39m 25s

    ____      ____          __  _
   /  _/___  / __/__  _____/ /_(_)___  ____
   / // __ \/ /_/ _ \/ ___/ __/ / __ \/ __ \
 _/ // / / / __/  __/ /__/ /_/ / /_/ / / / /
/___/_/ /_/_/  \___/\___/\__/_/\____/_/ /_/

Infection - PHP Mutation Testing Framework version 0.25.4.0

[notice] You are running Infection with PCOV enabled.

Running initial test suite...

PHPUnit version: 9.5.10

  165 [============================] 2 mins

Generate mutants...

Processing source code files: 31/31
.: killed, M: escaped, U: uncovered, E: fatal error, X: syntax error, T: timed out, S: skipped

UUUUUSSSSSSSSSSSSSSSSSSSSSSSSSSSSS.M..............   ( 50 / 518)
.............MM......MMM.......M........T.....M...   (100 / 518)
....M.......M...MMT..MM..M....M...M...............   (150 / 518)
..........M........M............MM................   (200 / 518)
...................M................M.....MM.M....   (250 / 518)
.......................T.......T............M...MM   (300 / 518)
..M.......M.......................................   (350 / 518)
....M..MMM..M.........M......................M....   (400 / 518)
..................................................   (450 / 518)
.............M.M...............M.................M   (500 / 518)
..MMMMMMMMM.MMMMM.                                   (518 / 518)

518 mutations were generated:
     424 mutants were killed
       5 mutants were not covered by tests
      56 covered mutants were not detected
       0 errors were encountered
       0 syntax errors were encountered
       4 time outs were encountered
      29 mutants required more time than configured

Metrics:
         Mutation Score Indicator (MSI): 87%
         Mutation Code Coverage: 98%
         Covered Code MSI: 88%

Please note that some mutants will inevitably be harmless (i.e. false positives).

Time: 39m 25s. Memory: 0.04GB

Then i checked out 4.1.x and runned some tests:

PHPUnit with NO coverage: Time 00:17.724

PHPUnit 9.5.10 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.0.17
Configuration: /app/phpunit.xml.dist

.......................S..S....................................  63 / 153 ( 41%)
............................................................... 126 / 153 ( 82%)
...........................                                     153 / 153 (100%)

Time: 00:17.724, Memory: 78.01 MB

PHPUnit with coverage, pcov: Time 00:23.006

PHPUnit 9.5.10 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.0.17 with PCOV 1.0.11
Configuration: /app/phpunit.xml.dist

.......................S..S....................................  63 / 153 ( 41%)
............................................................... 126 / 153 ( 82%)
...........................                                     153 / 153 (100%)

Time: 00:23.006, Memory: 78.01 MB

Infection 30 Seconds Timeout: Time 14m 26s

    ____      ____          __  _
   /  _/___  / __/__  _____/ /_(_)___  ____
   / // __ \/ /_/ _ \/ ___/ __/ / __ \/ __ \
 _/ // / / / __/  __/ /__/ /_/ / /_/ / / / /
/___/_/ /_/_/  \___/\___/\__/_/\____/_/ /_/

Infection - PHP Mutation Testing Framework version 0.25.4.0

[notice] You are running Infection with PCOV enabled.

Running initial test suite...

PHPUnit version: 9.5.10

  161 [============================] 27 secs

Generate mutants...

Processing source code files: 30/30
.: killed, M: escaped, U: uncovered, E: fatal error, X: syntax error, T: timed out, S: skipped

UUU.M...........................MM......MMM.......   ( 50 / 493)
M..............M.......M.......M...MM...MM.M....M.   (100 / 493)
..M.........................M........M............   (150 / 493)
MM...................................M............   (200 / 493)
....M.....MM.M....................................   (250 / 493)
............M...MM..M.......M.....................   (300 / 493)
......................M..MMM..M.........M.........   (350 / 493)
.............M....................................   (400 / 493)
...............................M.M...............M   (450 / 493)
.................M..MM.MMMMMMMMM...MMMMMMM.          (493 / 493)

493 mutations were generated:
     430 mutants were killed
       3 mutants were not covered by tests
      60 covered mutants were not detected
       0 errors were encountered
       0 syntax errors were encountered
       0 time outs were encountered
       0 mutants required more time than configured

Metrics:
         Mutation Score Indicator (MSI): 87%
         Mutation Code Coverage: 99%
         Covered Code MSI: 87%

Please note that some mutants will inevitably be harmless (i.e. false positives).

Time: 14m 26s. Memory: 0.04GB

So this patch slowes down the project ALOT. 😅
Hope this helps!

@Ocramius
Copy link
Collaborator

So this patch slowes down the project ALOT. sweat_smile

That's ~2 times the slowdown, which is much better than what I expected anyway :D

@DanielBadura
Copy link
Contributor Author

If you compare the phpunit calls without coverage or with coverage it's more then a 2 times slowdown, it's roughly 5 times:

no coverage: ~95 seconds vs ~18 seconds.
with coverage: ~123 seconds vs ~23 seconds.

So you mean this is fine? I'm not sure about that, seems alot even for a CI tooling.

@Ocramius
Copy link
Collaborator

Yes, IMO this is mostly fine: coverage slows down userland stuff by a gazillion times, so that's understandable.

What I'm most worried about is usage of the tool, not the CI of this tool itself.

I'm very much used to waiting 15m~4h for a build: that doesn't scare me. What is more worrisome is how much this has an impact on large codebases, such as Magento or similar :)

@DanielBadura
Copy link
Contributor Author

Well i tried to check it at the actual magento dev branch.
Without this patch, so with 4.0.0 i got roughly 3 minutes and 40 seconds for the check. With this patch here I got an error 😅

[20:16:17] root@ide-daniel ~/magento2 @2.4-develop
$ docker run --rm -it --volume $PWD:/app -w /app php81 ./tools/vendor/bin/composer-require-checker check -vvv
ComposerRequireChecker dev-guess-packages@eee29046b5075e2d5a5bf88a373d35d5c89651a3
Collecting defined vendor symbols... found 16787 symbols.
Collecting defined extension symbols... found 3133 symbols.
Collecting used symbols... found 8870 symbols.
Checking for unknown symbols...

In InvalidPrefixMapping.php line 28:

  [Roave\BetterReflection\SourceLocator\Type\Composer\Psr\Exception\InvalidPrefixMapping]
  Provided path "OAuth\Unit" for prefix "/app/vendor/lusitanian/oauth/tests" is not a directory


Exception trace:
  at /app/tools/vendor/roave/better-reflection/src/SourceLocator/Type/Composer/Psr/Exception/InvalidPrefixMapping.php:28
 Roave\BetterReflection\SourceLocator\Type\Composer\Psr\Exception\InvalidPrefixMapping::prefixMappingIsNotADirectory() at /app/tools/vendor/roave/better-reflection/src/SourceLocator/Type/Composer/Psr/Psr0Mapping.php:90
 Roave\BetterReflection\SourceLocator\Type\Composer\Psr\Psr0Mapping::assertValidMapping() at /app/tools/vendor/roave/better-reflection/src/SourceLocator/Type/Composer/Psr/Psr0Mapping.php:31
 Roave\BetterReflection\SourceLocator\Type\Composer\Psr\Psr0Mapping::fromArrayMappings() at /app/tools/vendor/roave/better-reflection/src/SourceLocator/Type/Composer/Factory/MakeLocatorForInstalledJson.php:114
 Roave\BetterReflection\SourceLocator\Type\Composer\Factory\MakeLocatorForInstalledJson->__invoke() at /app/tools/vendor/maglnet/composer-require-checker/src/ComposerRequireChecker/DependencyGuesser/GuessFromInstalledComposerPackages.php:36
 ComposerRequireChecker\DependencyGuesser\GuessFromInstalledComposerPackages->__construct() at /app/tools/vendor/maglnet/composer-require-checker/src/ComposerRequireChecker/Cli/CheckCommand.php:219
 ComposerRequireChecker\Cli\CheckCommand->execute() at /app/tools/vendor/symfony/console/Command/Command.php:291
 Symfony\Component\Console\Command\Command->run() at /app/tools/vendor/symfony/console/Application.php:989
 Symfony\Component\Console\Application->doRunCommand() at /app/tools/vendor/symfony/console/Application.php:299
 Symfony\Component\Console\Application->doRun() at /app/tools/vendor/symfony/console/Application.php:171
 Symfony\Component\Console\Application->run() at /app/tools/vendor/maglnet/composer-require-checker/bin/composer-require-checker.php:32
 include() at /app/tools/vendor/maglnet/composer-require-checker/bin/composer-require-checker:3
 include() at /app/tools/vendor/bin/composer-require-checker:117

@Ocramius
Copy link
Collaborator

Heh, makes sense 😬

@DanielBadura
Copy link
Contributor Author

WDYM makes sense? I mean i understand the error, since the package defined the tests in the normal autoload for whatever reason and does not export them.

So i tried symfony as the repo and got these results:

Without patch: 1m19.056s
With patch: 3m18.773s

Here the complete result with the guessed packages

ComposerRequireChecker dev-guess-packages@eee29046b5075e2d5a5bf88a373d35d5c89651a3
The following 800 unknown symbols were found:
+---------------------------------------------------------------------------------------+-----------------------------------+
| Unknown Symbol                                                                        | Guessed Dependency                |
+---------------------------------------------------------------------------------------+-----------------------------------+
| abstract_arg                                                                          |                                   |
| Amp\ByteStream\InputStream                                                            | amphp/byte-stream                 |
| Amp\ByteStream\ResourceInputStream                                                    | amphp/byte-stream                 |
| Amp\ByteStream\StreamException                                                        | amphp/byte-stream                 |
| Amp\CancellationToken                                                                 | amphp/amp                         |
| Amp\CancellationTokenSource                                                           | amphp/amp                         |
| Amp\CancelledException                                                                | amphp/amp                         |
| Amp\Coroutine                                                                         | amphp/amp                         |
|                                                                                       | amphp/amp                         |
| Amp\Deferred                                                                          | amphp/amp                         |
| Amp\Dns\Record                                                                        | amphp/dns                         |
| Amp\Dns\Resolver                                                                      | amphp/dns                         |
|                                                                                       | amphp/dns                         |
| Amp\Dns\resolver                                                                      | amphp/dns                         |
| Amp\Http\Client\Connection\ConnectionLimitingPool                                     | amphp/http-client                 |
| Amp\Http\Client\Connection\DefaultConnectionFactory                                   | amphp/http-client                 |
| Amp\Http\Client\Connection\Stream                                                     | amphp/http-client                 |
| Amp\Http\Client\DelegateHttpClient                                                    | amphp/http-client                 |
| Amp\Http\Client\EventListener                                                         | amphp/http-client                 |
| Amp\Http\Client\HttpException                                                         | amphp/http-client                 |
| Amp\Http\Client\InterceptedHttpClient                                                 | amphp/http-client                 |
| Amp\Http\Client\Interceptor\RetryRequests                                             | amphp/http-client                 |
| Amp\Http\Client\PooledHttpClient                                                      | amphp/http-client                 |
| Amp\Http\Client\Request                                                               | amphp/http-client                 |
| Amp\Http\Client\RequestBody                                                           | amphp/http-client                 |
| Amp\Http\Client\Response                                                              | amphp/http-client                 |
| Amp\Http\Tunnel\Http1TunnelConnector                                                  | amphp/http-tunnel                 |
| Amp\Http\Tunnel\Https1TunnelConnector                                                 | amphp/http-tunnel                 |
| Amp\Loop                                                                              | amphp/amp                         |
| Amp\Promise                                                                           | amphp/amp                         |
| Amp\Socket\Certificate                                                                | amphp/socket                      |
| Amp\Socket\ClientTlsContext                                                           | amphp/socket                      |
| Amp\Socket\ConnectContext                                                             | amphp/socket                      |
| Amp\Socket\Connector                                                                  | amphp/socket                      |
|                                                                                       | amphp/socket                      |
| Amp\Socket\DnsConnector                                                               | amphp/socket                      |
| Amp\Socket\SocketAddress                                                              | amphp/socket                      |
| Amp\Success                                                                           | amphp/amp                         |
| AMQPChannel                                                                           |                                   |
| AMQPConnection                                                                        |                                   |
| AMQPConnectionException                                                               |                                   |
| AMQPEnvelope                                                                          |                                   |
| AMQPException                                                                         |                                   |
| AMQPExchange                                                                          |                                   |
| AMQPQueue                                                                             |                                   |
| AMQP_AUTOACK                                                                          |                                   |
| AMQP_AUTODELETE                                                                       |                                   |
| AMQP_DURABLE                                                                          |                                   |
| AMQP_EXCLUSIVE                                                                        |                                   |
| AMQP_EX_TYPE_DIRECT                                                                   |                                   |
| AMQP_EX_TYPE_FANOUT                                                                   |                                   |
| AMQP_EX_TYPE_HEADERS                                                                  |                                   |
| AMQP_EX_TYPE_TOPIC                                                                    |                                   |
| AMQP_IFEMPTY                                                                          |                                   |
| AMQP_IFUNUSED                                                                         |                                   |
| AMQP_IMMEDIATE                                                                        |                                   |
| AMQP_INTERNAL                                                                         |                                   |
| AMQP_MANDATORY                                                                        |                                   |
| AMQP_MULTIPLE                                                                         |                                   |
| AMQP_NOLOCAL                                                                          |                                   |
| AMQP_NOPARAM                                                                          |                                   |
| AMQP_NOWAIT                                                                           |                                   |
| AMQP_PASSIVE                                                                          |                                   |
| AMQP_REQUEUE                                                                          |                                   |
| APCuIterator                                                                          |                                   |
| apcu_add                                                                              |                                   |
| apcu_clear_cache                                                                      |                                   |
| apcu_delete                                                                           |                                   |
| apcu_exists                                                                           |                                   |
| apcu_fetch                                                                            |                                   |
| apcu_store                                                                            |                                   |
| APC_ITER_KEY                                                                          |                                   |
| AsyncAws\Core\Configuration                                                           | async-aws/core                    |
| AsyncAws\Core\Exception\Http\HttpException                                            | async-aws/core                    |
| AsyncAws\Ses\Input\SendEmailRequest                                                   | async-aws/ses                     |
| AsyncAws\Ses\SesClient                                                                | async-aws/ses                     |
| AsyncAws\Ses\ValueObject\Content                                                      | async-aws/ses                     |
| AsyncAws\Ses\ValueObject\Destination                                                  | async-aws/ses                     |
| AsyncAws\Sns\SnsClient                                                                | async-aws/sns                     |
| AsyncAws\Sqs\Enum\MessageSystemAttributeName                                          | async-aws/sqs                     |
| AsyncAws\Sqs\Enum\QueueAttributeName                                                  | async-aws/sqs                     |
| AsyncAws\Sqs\SqsClient                                                                | async-aws/sqs                     |
| AsyncAws\Sqs\ValueObject\MessageAttributeValue                                        | async-aws/sqs                     |
| AsyncAws\Sqs\ValueObject\MessageSystemAttributeValue                                  | async-aws/sqs                     |
| Composer\Autoload\ClassLoader                                                         |                                   |
| Composer\Composer                                                                     |                                   |
| Composer\EventDispatcher\EventSubscriberInterface                                     |                                   |
| Composer\Factory                                                                      |                                   |
| Composer\IO\IOInterface                                                               |                                   |
| Composer\Plugin\PluginInterface                                                       |                                   |
| Composer\Script\ScriptEvents                                                          |                                   |
| CouchbaseBucket                                                                       |                                   |
| CouchbaseCluster                                                                      |                                   |
| Couchbase\Cluster                                                                     |                                   |
| Couchbase\ClusterOptions                                                              |                                   |
| Couchbase\Collection                                                                  |                                   |
| Couchbase\DocumentNotFoundException                                                   |                                   |
| Couchbase\UpsertOptions                                                               |                                   |
| CURLAUTH_NTLM                                                                         | ext-curl                          |
| CURLE_OK                                                                              | ext-curl                          |
| CURLE_RECV_ERROR                                                                      | ext-curl                          |
| CURLE_SEND_ERROR                                                                      | ext-curl                          |
| CURLE_TOO_MANY_REDIRECTS                                                              | ext-curl                          |
| CurlHandle                                                                            | ext-curl                          |
| CURLHEADER_SEPARATE                                                                   | ext-curl                          |
| CURLINFO_CERTINFO                                                                     | ext-curl                          |
| CURLINFO_CONTENT_LENGTH_DOWNLOAD                                                      | ext-curl                          |
| CURLINFO_EFFECTIVE_URL                                                                | ext-curl                          |
| CURLINFO_PRIVATE                                                                      | ext-curl                          |
| CURLINFO_REDIRECT_COUNT                                                               | ext-curl                          |
| CURLINFO_RESPONSE_CODE                                                                | ext-curl                          |
| CURLINFO_SIZE_DOWNLOAD                                                                | ext-curl                          |
| CURLMOPT_MAXCONNECTS                                                                  | ext-curl                          |
| CURLMOPT_MAX_HOST_CONNECTIONS                                                         | ext-curl                          |
| CURLMOPT_PIPELINING                                                                   | ext-curl                          |
| CURLMOPT_PUSHFUNCTION                                                                 | ext-curl                          |
| CURLMSG_DONE                                                                          | ext-curl                          |
| CurlMultiHandle                                                                       | ext-curl                          |
| CURLM_CALL_MULTI_PERFORM                                                              | ext-curl                          |
| CURLM_OK                                                                              | ext-curl                          |
| CURLOPT_CAINFO                                                                        | ext-curl                          |
| CURLOPT_CAPATH                                                                        | ext-curl                          |
| CURLOPT_CERTINFO                                                                      | ext-curl                          |
| CURLOPT_CONNECTTIMEOUT                                                                | ext-curl                          |
| CURLOPT_CONNECTTIMEOUT_MS                                                             | ext-curl                          |
| CURLOPT_COOKIEFILE                                                                    | ext-curl                          |
| CURLOPT_CUSTOMREQUEST                                                                 | ext-curl                          |
| CURLOPT_DNS_USE_GLOBAL_CACHE                                                          | ext-curl                          |
| CURLOPT_FOLLOWLOCATION                                                                | ext-curl                          |
| CURLOPT_FORBID_REUSE                                                                  | ext-curl                          |
| CURLOPT_HEADER                                                                        | ext-curl                          |
| CURLOPT_HEADERFUNCTION                                                                | ext-curl                          |
| CURLOPT_HEADEROPT                                                                     | ext-curl                          |
| CURLOPT_HTTP09_ALLOWED                                                                | ext-curl                          |
| CURLOPT_HTTPAUTH                                                                      | ext-curl                          |
| CURLOPT_HTTPGET                                                                       | ext-curl                          |
| CURLOPT_HTTPHEADER                                                                    | ext-curl                          |
| CURLOPT_HTTP_VERSION                                                                  | ext-curl                          |
| CURLOPT_INFILE                                                                        | ext-curl                          |
| CURLOPT_INFILESIZE                                                                    | ext-curl                          |
| CURLOPT_INTERFACE                                                                     | ext-curl                          |
| CURLOPT_KEYPASSWD                                                                     | ext-curl                          |
| CURLOPT_LOCALPORT                                                                     | ext-curl                          |
| CURLOPT_MAXREDIRS                                                                     | ext-curl                          |
| CURLOPT_NOBODY                                                                        | ext-curl                          |
| CURLOPT_NOPROGRESS                                                                    | ext-curl                          |
| CURLOPT_NOPROXY                                                                       | ext-curl                          |
| CURLOPT_NOSIGNAL                                                                      | ext-curl                          |
| CURLOPT_PINNEDPUBLICKEY                                                               | ext-curl                          |
| CURLOPT_PORT                                                                          | ext-curl                          |
| CURLOPT_POST                                                                          | ext-curl                          |
| CURLOPT_POSTFIELDS                                                                    | ext-curl                          |
| CURLOPT_PRIVATE                                                                       | ext-curl                          |
| CURLOPT_PROGRESSFUNCTION                                                              | ext-curl                          |
| CURLOPT_PROTOCOLS                                                                     | ext-curl                          |
| CURLOPT_PROXY                                                                         | ext-curl                          |
| CURLOPT_PUT                                                                           | ext-curl                          |
| CURLOPT_READFUNCTION                                                                  | ext-curl                          |
| CURLOPT_REDIR_PROTOCOLS                                                               | ext-curl                          |
| CURLOPT_REFERER                                                                       | ext-curl                          |
| CURLOPT_RESOLVE                                                                       | ext-curl                          |
| CURLOPT_RETURNTRANSFER                                                                | ext-curl                          |
| CURLOPT_SHARE                                                                         | ext-curl                          |
| CURLOPT_SSLCERT                                                                       | ext-curl                          |
| CURLOPT_SSLKEY                                                                        | ext-curl                          |
| CURLOPT_SSL_CIPHER_LIST                                                               | ext-curl                          |
| CURLOPT_SSL_VERIFYHOST                                                                | ext-curl                          |
| CURLOPT_SSL_VERIFYPEER                                                                | ext-curl                          |
| CURLOPT_STDERR                                                                        | ext-curl                          |
| CURLOPT_TCP_NODELAY                                                                   | ext-curl                          |
| CURLOPT_TIMEOUT                                                                       | ext-curl                          |
| CURLOPT_TIMEOUT_MS                                                                    | ext-curl                          |
| CURLOPT_UNIX_SOCKET_PATH                                                              | ext-curl                          |
| CURLOPT_UPLOAD                                                                        | ext-curl                          |
| CURLOPT_URL                                                                           | ext-curl                          |
| CURLOPT_USERAGENT                                                                     | ext-curl                          |
| CURLOPT_USERPWD                                                                       | ext-curl                          |
| CURLOPT_VERBOSE                                                                       | ext-curl                          |
| CURLOPT_WRITEFUNCTION                                                                 | ext-curl                          |
| CURLPAUSE_ALL                                                                         | ext-curl                          |
| CURLPAUSE_CONT                                                                        | ext-curl                          |
| CURLPAUSE_RECV                                                                        | ext-curl                          |
| CURLPIPE_MULTIPLEX                                                                    | ext-curl                          |
| CURLPROTO_HTTP                                                                        | ext-curl                          |
| CURLPROTO_HTTPS                                                                       | ext-curl                          |
| CURLSHOPT_SHARE                                                                       | ext-curl                          |
| curl_close                                                                            | ext-curl                          |
| curl_error                                                                            | ext-curl                          |
| curl_getinfo                                                                          | ext-curl                          |
| CURL_HTTP_VERSION_1_0                                                                 | ext-curl                          |
| CURL_HTTP_VERSION_1_1                                                                 | ext-curl                          |
| CURL_HTTP_VERSION_2_0                                                                 | ext-curl                          |
| curl_init                                                                             | ext-curl                          |
| CURL_LOCK_DATA_CONNECT                                                                | ext-curl                          |
| CURL_LOCK_DATA_DNS                                                                    | ext-curl                          |
| CURL_LOCK_DATA_SSL_SESSION                                                            | ext-curl                          |
| curl_multi_add_handle                                                                 | ext-curl                          |
| curl_multi_exec                                                                       | ext-curl                          |
| curl_multi_info_read                                                                  | ext-curl                          |
| curl_multi_init                                                                       | ext-curl                          |
| curl_multi_remove_handle                                                              | ext-curl                          |
| curl_multi_select                                                                     | ext-curl                          |
| curl_multi_setopt                                                                     | ext-curl                          |
| curl_multi_strerror                                                                   | ext-curl                          |
| curl_pause                                                                            | ext-curl                          |
| CURL_PUSH_DENY                                                                        | ext-curl                          |
| CURL_PUSH_OK                                                                          | ext-curl                          |
| curl_setopt                                                                           | ext-curl                          |
| curl_setopt_array                                                                     | ext-curl                          |
| curl_share_init                                                                       | ext-curl                          |
| curl_share_setopt                                                                     | ext-curl                          |
| curl_strerror                                                                         | ext-curl                          |
| curl_version                                                                          | ext-curl                          |
| CURL_VERSION_HTTP2                                                                    | ext-curl                          |
| dba_list                                                                              |                                   |
| Doctrine\Common\Annotations\Annotation                                                | doctrine/annotations              |
| Doctrine\Common\Annotations\AnnotationException                                       | doctrine/annotations              |
| Doctrine\Common\Annotations\AnnotationReader                                          | doctrine/annotations              |
| Doctrine\Common\Annotations\AnnotationRegistry                                        | doctrine/annotations              |
| Doctrine\Common\Annotations\PsrCachedReader                                           | doctrine/annotations              |
| Doctrine\Common\Annotations\Reader                                                    | doctrine/annotations              |
| Doctrine\Common\Collections\ArrayCollection                                           | doctrine/collections              |
| Doctrine\Common\Collections\Collection                                                | doctrine/collections              |
| Doctrine\Common\DataFixtures\FixtureInterface                                         | doctrine/data-fixtures            |
| Doctrine\Common\DataFixtures\Loader                                                   | doctrine/data-fixtures            |
| Doctrine\Common\Persistence\Proxy                                                     |                                   |
| Doctrine\Common\Proxy\Proxy                                                           | doctrine/common                   |
| Doctrine\DBAL\Connection                                                              | doctrine/dbal                     |
| Doctrine\DBAL\DriverManager                                                           | doctrine/dbal                     |
| Doctrine\DBAL\Driver\AbstractPostgreSQLDriver                                         | doctrine/dbal                     |
| Doctrine\DBAL\Driver\PDO\Connection                                                   | doctrine/dbal                     |
| Doctrine\DBAL\Driver\Result                                                           | doctrine/dbal                     |
| Doctrine\DBAL\Driver\ServerInfoAwareConnection                                        | doctrine/dbal                     |
| Doctrine\DBAL\Events                                                                  | doctrine/dbal                     |
| Doctrine\DBAL\Event\SchemaCreateTableEventArgs                                        | doctrine/dbal                     |
| Doctrine\DBAL\Exception                                                               | doctrine/dbal                     |
| Doctrine\DBAL\Exception\RetryableException                                            | doctrine/dbal                     |
| Doctrine\DBAL\Exception\TableNotFoundException                                        | doctrine/dbal                     |
| Doctrine\DBAL\LockMode                                                                | doctrine/dbal                     |
| Doctrine\DBAL\Logging\DebugStack                                                      | doctrine/dbal                     |
| Doctrine\DBAL\Logging\SQLLogger                                                       | doctrine/dbal                     |
| Doctrine\DBAL\ParameterType                                                           | doctrine/dbal                     |
| Doctrine\DBAL\Platforms\AbstractPlatform                                              | doctrine/dbal                     |
| Doctrine\DBAL\Platforms\MySQL57Platform                                               | doctrine/dbal                     |
| Doctrine\DBAL\Platforms\MySQLPlatform                                                 | doctrine/dbal                     |
| Doctrine\DBAL\Platforms\OraclePlatform                                                | doctrine/dbal                     |
| Doctrine\DBAL\Platforms\PostgreSQL94Platform                                          | doctrine/dbal                     |
| Doctrine\DBAL\Platforms\PostgreSQLPlatform                                            | doctrine/dbal                     |
| Doctrine\DBAL\Platforms\SqlitePlatform                                                | doctrine/dbal                     |
| Doctrine\DBAL\Platforms\SQLServer2012Platform                                         | doctrine/dbal                     |
| Doctrine\DBAL\Platforms\SQLServerPlatform                                             | doctrine/dbal                     |
| Doctrine\DBAL\Query\QueryBuilder                                                      | doctrine/dbal                     |
| Doctrine\DBAL\Result                                                                  | doctrine/dbal                     |
| Doctrine\DBAL\Schema\AbstractSchemaManager                                            | doctrine/dbal                     |
| Doctrine\DBAL\Schema\Comparator                                                       | doctrine/dbal                     |
| Doctrine\DBAL\Schema\Schema                                                           | doctrine/dbal                     |
| Doctrine\DBAL\Schema\Synchronizer\SchemaSynchronizer                                  |                                   |
| Doctrine\DBAL\Schema\Table                                                            | doctrine/dbal                     |
| Doctrine\DBAL\Types\ConversionException                                               | doctrine/dbal                     |
| Doctrine\DBAL\Types\Type                                                              | doctrine/dbal                     |
| Doctrine\DBAL\Types\Types                                                             | doctrine/dbal                     |
| Doctrine\ORM\EntityManager                                                            | doctrine/orm                      |
| Doctrine\ORM\EntityManagerInterface                                                   | doctrine/orm                      |
| Doctrine\ORM\Id\AbstractIdGenerator                                                   | doctrine/orm                      |
| Doctrine\ORM\Mapping\ClassMetadata                                                    | doctrine/orm                      |
| Doctrine\ORM\Mapping\ClassMetadataInfo                                                | doctrine/orm                      |
| Doctrine\ORM\Mapping\Embedded                                                         | doctrine/orm                      |
| Doctrine\ORM\Mapping\MappingException                                                 | doctrine/orm                      |
| Doctrine\ORM\PersistentCollection                                                     | doctrine/orm                      |
| Doctrine\ORM\Proxy\Proxy                                                              | doctrine/orm                      |
| Doctrine\ORM\QueryBuilder                                                             | doctrine/orm                      |
| Doctrine\ORM\Query\Parameter                                                          | doctrine/orm                      |
| Doctrine\ORM\Tools\Event\GenerateSchemaEventArgs                                      | doctrine/orm                      |
| Doctrine\ORM\Tools\ToolEvents                                                         | doctrine/orm                      |
| DOMAttr                                                                               | ext-dom                           |
| DOMCharacterData                                                                      | ext-dom                           |
| DOMComment                                                                            | ext-dom                           |
| DOMDocument                                                                           | ext-dom                           |
| DomDocument                                                                           |                                   |
| DOMDocumentFragment                                                                   | ext-dom                           |
| DOMDocumentType                                                                       | ext-dom                           |
| DOMDomError                                                                           |                                   |
| DOMElement                                                                            | ext-dom                           |
| DOMEntity                                                                             | ext-dom                           |
| DOMException                                                                          | ext-dom                           |
| DOMImplementation                                                                     | ext-dom                           |
| DOMLocator                                                                            |                                   |
| DOMNameSpaceNode                                                                      | ext-dom                           |
| DOMNode                                                                               | ext-dom                           |
| DOMNodeList                                                                           | ext-dom                           |
| DOMNotation                                                                           | ext-dom                           |
| DOMProcessingInstruction                                                              | ext-dom                           |
| DOMSTRING_SIZE_ERR                                                                    | ext-dom                           |
| DOMText                                                                               | ext-dom                           |
| DOMTypeinfo                                                                           |                                   |
| DOMXPath                                                                              | ext-dom                           |
| DOM_HIERARCHY_REQUEST_ERR                                                             | ext-dom                           |
| dom_import_simplexml                                                                  | ext-dom                           |
| DOM_INDEX_SIZE_ERR                                                                    | ext-dom                           |
| DOM_INUSE_ATTRIBUTE_ERR                                                               | ext-dom                           |
| DOM_INVALID_ACCESS_ERR                                                                | ext-dom                           |
| DOM_INVALID_CHARACTER_ERR                                                             | ext-dom                           |
| DOM_INVALID_MODIFICATION_ERR                                                          | ext-dom                           |
| DOM_INVALID_STATE_ERR                                                                 | ext-dom                           |
| DOM_NAMESPACE_ERR                                                                     | ext-dom                           |
| DOM_NOT_FOUND_ERR                                                                     | ext-dom                           |
| DOM_NOT_SUPPORTED_ERR                                                                 | ext-dom                           |
| DOM_NO_DATA_ALLOWED_ERR                                                               | ext-dom                           |
| DOM_NO_MODIFICATION_ALLOWED_ERR                                                       | ext-dom                           |
| DOM_PHP_ERR                                                                           | ext-dom                           |
| DOM_SYNTAX_ERR                                                                        | ext-dom                           |
| DOM_VALIDATION_ERR                                                                    | ext-dom                           |
| DOM_WRONG_DOCUMENT_ERR                                                                | ext-dom                           |
| Ds\Collection                                                                         |                                   |
| Ds\Map                                                                                |                                   |
| Ds\Pair                                                                               |                                   |
| Egulias\EmailValidator\EmailValidator                                                 | egulias/email-validator           |
| Egulias\EmailValidator\Validation\EmailValidation                                     | egulias/email-validator           |
| Egulias\EmailValidator\Validation\MessageIDValidation                                 | egulias/email-validator           |
| Egulias\EmailValidator\Validation\NoRFCWarningsValidation                             | egulias/email-validator           |
| Egulias\EmailValidator\Validation\RFCValidation                                       | egulias/email-validator           |
| esc                                                                                   |                                   |
| fastcgi_finish_request                                                                |                                   |
| FILEINFO_MIME_TYPE                                                                    | ext-fileinfo                      |
| FILTER_CALLBACK                                                                       | ext-filter                        |
| FILTER_DEFAULT                                                                        | ext-filter                        |
| FILTER_FLAG_HOSTNAME                                                                  | ext-filter                        |
| FILTER_FLAG_IPV4                                                                      | ext-filter                        |
| FILTER_FLAG_IPV6                                                                      | ext-filter                        |
| FILTER_FLAG_NO_PRIV_RANGE                                                             | ext-filter                        |
| FILTER_FLAG_NO_RES_RANGE                                                              | ext-filter                        |
| FILTER_FORCE_ARRAY                                                                    | ext-filter                        |
| FILTER_REQUIRE_ARRAY                                                                  | ext-filter                        |
| FILTER_SANITIZE_NUMBER_INT                                                            | ext-filter                        |
| FILTER_VALIDATE_BOOLEAN                                                               | ext-filter                        |
| FILTER_VALIDATE_DOMAIN                                                                | ext-filter                        |
| FILTER_VALIDATE_FLOAT                                                                 | ext-filter                        |
| FILTER_VALIDATE_INT                                                                   | ext-filter                        |
| FILTER_VALIDATE_IP                                                                    | ext-filter                        |
| filter_var                                                                            | ext-filter                        |
| finfo                                                                                 | ext-fileinfo                      |
| GMP                                                                                   |                                   |
| gmp_strval                                                                            |                                   |
| GuzzleHttp\Promise\Create                                                             | guzzlehttp/promises               |
| GuzzleHttp\Promise\Promise                                                            | guzzlehttp/promises               |
| GuzzleHttp\Promise\PromiseInterface                                                   | guzzlehttp/promises               |
| GuzzleHttp\Promise\RejectedPromise                                                    | guzzlehttp/promises               |
| GuzzleHttp\Promise\Utils                                                              | guzzlehttp/promises               |
| gzinflate                                                                             | ext-zlib                          |
| hash                                                                                  | ext-hash                          |
| hash_algos                                                                            | ext-hash                          |
| hash_equals                                                                           | ext-hash                          |
| hash_file                                                                             | ext-hash                          |
| hash_final                                                                            | ext-hash                          |
| hash_hmac                                                                             | ext-hash                          |
| hash_init                                                                             | ext-hash                          |
| hash_pbkdf2                                                                           | ext-hash                          |
| hash_update                                                                           | ext-hash                          |
| Http\Client\Exception\NetworkException                                                | php-http/httplug                  |
| Http\Client\Exception\RequestException                                                | php-http/httplug                  |
| Http\Client\HttpAsyncClient                                                           | php-http/httplug                  |
| Http\Client\HttpClient                                                                | php-http/httplug                  |
| Http\Discovery\Exception\NotFoundException                                            |                                   |
| Http\Discovery\Psr17FactoryDiscovery                                                  |                                   |
| Http\Message\RequestFactory                                                           | php-http/message-factory          |
| Http\Message\StreamFactory                                                            | php-http/message-factory          |
| Http\Message\UriFactory                                                               | php-http/message-factory          |
| Http\Promise\Promise                                                                  | php-http/promise                  |
| iconv                                                                                 | ext-iconv                         |
| igbinary_serialize                                                                    |                                   |
| igbinary_unserialize                                                                  |                                   |
| imagecreatefromstring                                                                 | ext-gd                            |
| imagedestroy                                                                          | ext-gd                            |
| imageistruecolor                                                                      | ext-gd                            |
| imagesx                                                                               | ext-gd                            |
| imagesy                                                                               | ext-gd                            |
| Imagine\Image\ImageInterface                                                          |                                   |
| inflate_add                                                                           | ext-zlib                          |
| inflate_init                                                                          | ext-zlib                          |
| inline_service                                                                        |                                   |
| IntlCalendar                                                                          | ext-intl                          |
| IntlException                                                                         | ext-intl                          |
| IntlTimeZone                                                                          | ext-intl                          |
| INTL_ICU_VERSION                                                                      | ext-intl                          |
| JsonException                                                                         | ext-json                          |
| JsonSerializable                                                                      | ext-json                          |
| JSON_BIGINT_AS_STRING                                                                 | ext-json                          |
| json_decode                                                                           | ext-json                          |
| json_encode                                                                           | ext-json                          |
| JSON_ERROR_CTRL_CHAR                                                                  | ext-json                          |
| JSON_ERROR_DEPTH                                                                      | ext-json                          |
| JSON_ERROR_NONE                                                                       | ext-json                          |
| JSON_ERROR_STATE_MISMATCH                                                             | ext-json                          |
| JSON_ERROR_SYNTAX                                                                     | ext-json                          |
| JSON_ERROR_UTF8                                                                       | ext-json                          |
| JSON_FORCE_OBJECT                                                                     | ext-json                          |
| JSON_HEX_AMP                                                                          | ext-json                          |
| JSON_HEX_APOS                                                                         | ext-json                          |
| JSON_HEX_QUOT                                                                         | ext-json                          |
| JSON_HEX_TAG                                                                          | ext-json                          |
| json_last_error                                                                       | ext-json                          |
| json_last_error_msg                                                                   | ext-json                          |
| JSON_PARTIAL_OUTPUT_ON_ERROR                                                          | ext-json                          |
| JSON_PRESERVE_ZERO_FRACTION                                                           | ext-json                          |
| JSON_PRETTY_PRINT                                                                     | ext-json                          |
| JSON_THROW_ON_ERROR                                                                   | ext-json                          |
| JSON_UNESCAPED_SLASHES                                                                | ext-json                          |
| JSON_UNESCAPED_UNICODE                                                                | ext-json                          |
| Laminas\Code\Generator\ClassGenerator                                                 | laminas/laminas-code              |
| ldap_add                                                                              |                                   |
| ldap_bind                                                                             |                                   |
| ldap_connect                                                                          |                                   |
| LDAP_CONTROL_PAGEDRESULTS                                                             |                                   |
| ldap_count_entries                                                                    |                                   |
| ldap_delete                                                                           |                                   |
| ldap_errno                                                                            |                                   |
| ldap_error                                                                            |                                   |
| ldap_escape                                                                           |                                   |
| LDAP_ESCAPE_DN                                                                        |                                   |
| ldap_first_entry                                                                      |                                   |
| ldap_free_result                                                                      |                                   |
| ldap_get_attributes                                                                   |                                   |
| ldap_get_dn                                                                           |                                   |
| ldap_get_option                                                                       |                                   |
| ldap_modify                                                                           |                                   |
| ldap_modify_batch                                                                     |                                   |
| LDAP_MODIFY_BATCH_ADD                                                                 |                                   |
| LDAP_MODIFY_BATCH_REMOVE                                                              |                                   |
| LDAP_MODIFY_BATCH_REMOVE_ALL                                                          |                                   |
| LDAP_MODIFY_BATCH_REPLACE                                                             |                                   |
| ldap_mod_add                                                                          |                                   |
| ldap_mod_del                                                                          |                                   |
| ldap_next_entry                                                                       |                                   |
| LDAP_OPT_SERVER_CONTROLS                                                              |                                   |
| ldap_parse_result                                                                     |                                   |
| ldap_rename                                                                           |                                   |
| ldap_set_option                                                                       |                                   |
| ldap_start_tls                                                                        |                                   |
| ldap_unbind                                                                           |                                   |
| League\HTMLToMarkdown\HtmlConverter                                                   |                                   |
| League\Uri\Exceptions\SyntaxError                                                     | league/uri-interfaces             |
| League\Uri\UriString                                                                  | league/uri                        |
| libxml_clear_errors                                                                   | ext-libxml                        |
| LIBXML_COMPACT                                                                        | ext-libxml                        |
| libxml_disable_entity_loader                                                          | ext-libxml                        |
| LIBXML_ERR_WARNING                                                                    | ext-libxml                        |
| libxml_get_errors                                                                     | ext-libxml                        |
| libxml_get_last_error                                                                 | ext-libxml                        |
| LIBXML_NOBLANKS                                                                       | ext-libxml                        |
| LIBXML_NONET                                                                          | ext-libxml                        |
| libxml_use_internal_errors                                                            | ext-libxml                        |
| litespeed_finish_request                                                              |                                   |
| locale_compose                                                                        | ext-intl                          |
| locale_parse                                                                          | ext-intl                          |
| Masterminds\HTML5                                                                     | masterminds/html5                 |
| Memcached                                                                             |                                   |
| MessageFormatter                                                                      | ext-intl                          |
| Mockery\MockInterface                                                                 |                                   |
| MongoDB\BSON\Binary                                                                   |                                   |
| MongoDB\BSON\UTCDateTime                                                              |                                   |
| MongoDB\Client                                                                        |                                   |
| MongoDB\Collection                                                                    |                                   |
| MongoDB\Driver\Exception\WriteException                                               |                                   |
| MongoDB\Driver\ReadPreference                                                         |                                   |
| Monolog\Formatter\FormatterInterface                                                  | monolog/monolog                   |
| Monolog\Formatter\HtmlFormatter                                                       | monolog/monolog                   |
| Monolog\Formatter\LineFormatter                                                       | monolog/monolog                   |
| Monolog\Formatter\LogstashFormatter                                                   | monolog/monolog                   |
| Monolog\Handler\AbstractHandler                                                       | monolog/monolog                   |
| Monolog\Handler\AbstractProcessingHandler                                             | monolog/monolog                   |
| Monolog\Handler\ChromePHPHandler                                                      | monolog/monolog                   |
| Monolog\Handler\FingersCrossed\ActivationStrategyInterface                            | monolog/monolog                   |
| Monolog\Handler\FirePHPHandler                                                        | monolog/monolog                   |
| Monolog\Handler\FormattableHandlerTrait                                               | monolog/monolog                   |
| Monolog\Handler\HandlerInterface                                                      | monolog/monolog                   |
| Monolog\Handler\ProcessableHandlerTrait                                               | monolog/monolog                   |
| Monolog\Logger                                                                        | monolog/monolog                   |
| Monolog\Processor\ProcessorInterface                                                  | monolog/monolog                   |
| Monolog\Processor\WebProcessor                                                        | monolog/monolog                   |
| Monolog\ResettableInterface                                                           | monolog/monolog                   |
| mysqli_driver                                                                         | ext-mysqli                        |
| mysql_get_host_info                                                                   |                                   |
| mysql_get_proto_info                                                                  |                                   |
| mysql_get_server_info                                                                 |                                   |
| Nyholm\Psr7\Factory\Psr17Factory                                                      | nyholm/psr7                       |
| Nyholm\Psr7\Request                                                                   | nyholm/psr7                       |
| Nyholm\Psr7\Uri                                                                       | nyholm/psr7                       |
| opcache_compile_file                                                                  | ext-Zend OPcache                  |
| opcache_invalidate                                                                    | ext-Zend OPcache                  |
| opcache_is_script_cached                                                              | ext-Zend OPcache                  |
| OpenSSLAsymmetricKey                                                                  | ext-openssl                       |
| OPENSSL_ALGO_SHA256                                                                   | ext-openssl                       |
| OPENSSL_CIPHER_AES_256_CBC                                                            | ext-openssl                       |
| openssl_error_string                                                                  | ext-openssl                       |
| openssl_pkcs7_encrypt                                                                 | ext-openssl                       |
| openssl_pkcs7_sign                                                                    | ext-openssl                       |
| openssl_pkey_get_details                                                              | ext-openssl                       |
| openssl_pkey_get_private                                                              | ext-openssl                       |
| openssl_pkey_get_public                                                               | ext-openssl                       |
| openssl_sign                                                                          | ext-openssl                       |
| openssl_x509_fingerprint                                                              | ext-openssl                       |
| openssl_x509_parse                                                                    | ext-openssl                       |
| openssl_x509_read                                                                     | ext-openssl                       |
| param                                                                                 |                                   |
| pcntl_async_signals                                                                   | ext-pcntl                         |
| pcntl_signal                                                                          | ext-pcntl                         |
| pcntl_signal_dispatch                                                                 | ext-pcntl                         |
| pcntl_signal_get_handler                                                              | ext-pcntl                         |
| PDO                                                                                   | ext-PDO                           |
| PDOException                                                                          | ext-PDO                           |
| PDOStatement                                                                          | ext-PDO                           |
| PGSQL_BAD_RESPONSE                                                                    |                                   |
| PGSQL_COMMAND_OK                                                                      |                                   |
| PGSQL_CONNECTION_OK                                                                   |                                   |
| PGSQL_COPY_IN                                                                         |                                   |
| PGSQL_COPY_OUT                                                                        |                                   |
| PGSQL_DIAG_CONTEXT                                                                    |                                   |
| PGSQL_DIAG_INTERNAL_POSITION                                                          |                                   |
| PGSQL_DIAG_INTERNAL_QUERY                                                             |                                   |
| PGSQL_DIAG_MESSAGE_DETAIL                                                             |                                   |
| PGSQL_DIAG_MESSAGE_HINT                                                               |                                   |
| PGSQL_DIAG_MESSAGE_PRIMARY                                                            |                                   |
| PGSQL_DIAG_SEVERITY                                                                   |                                   |
| PGSQL_DIAG_SOURCE_FILE                                                                |                                   |
| PGSQL_DIAG_SOURCE_FUNCTION                                                            |                                   |
| PGSQL_DIAG_SOURCE_LINE                                                                |                                   |
| PGSQL_DIAG_SQLSTATE                                                                   |                                   |
| PGSQL_DIAG_STATEMENT_POSITION                                                         |                                   |
| PGSQL_EMPTY_QUERY                                                                     |                                   |
| PGSQL_FATAL_ERROR                                                                     |                                   |
| PGSQL_NONFATAL_ERROR                                                                  |                                   |
| PGSQL_STATUS_STRING                                                                   |                                   |
| PGSQL_TRANSACTION_ACTIVE                                                              |                                   |
| PGSQL_TRANSACTION_IDLE                                                                |                                   |
| PGSQL_TRANSACTION_INERROR                                                             |                                   |
| PGSQL_TRANSACTION_INTRANS                                                             |                                   |
| PGSQL_TRANSACTION_UNKNOWN                                                             |                                   |
| PGSQL_TUPLES_OK                                                                       |                                   |
| pg_affected_rows                                                                      |                                   |
| pg_client_encoding                                                                    |                                   |
| pg_connection_busy                                                                    |                                   |
| pg_connection_status                                                                  |                                   |
| pg_dbname                                                                             |                                   |
| pg_field_is_null                                                                      |                                   |
| pg_field_name                                                                         |                                   |
| pg_field_prtlen                                                                       |                                   |
| pg_field_size                                                                         |                                   |
| pg_field_table                                                                        |                                   |
| pg_field_type                                                                         |                                   |
| pg_field_type_oid                                                                     |                                   |
| pg_get_pid                                                                            |                                   |
| pg_host                                                                               |                                   |
| pg_last_error                                                                         |                                   |
| pg_last_notice                                                                        |                                   |
| pg_last_oid                                                                           |                                   |
| pg_lo_tell                                                                            |                                   |
| pg_num_fields                                                                         |                                   |
| pg_num_rows                                                                           |                                   |
| pg_options                                                                            |                                   |
| pg_parameter_status                                                                   |                                   |
| pg_port                                                                               |                                   |
| pg_result_error_field                                                                 |                                   |
| pg_result_status                                                                      |                                   |
| pg_transaction_status                                                                 |                                   |
| pg_version                                                                            |                                   |
| Phake\IMock                                                                           |                                   |
| Pheanstalk\Contract\PheanstalkInterface                                               | pda/pheanstalk                    |
| Pheanstalk\Exception                                                                  | pda/pheanstalk                    |
| Pheanstalk\JobId                                                                      | pda/pheanstalk                    |
| Pheanstalk\Pheanstalk                                                                 | pda/pheanstalk                    |
| phpDocumentor\Reflection\DocBlock                                                     | phpdocumentor/reflection-docblock |
| phpDocumentor\Reflection\DocBlockFactory                                              | phpdocumentor/reflection-docblock |
| phpDocumentor\Reflection\DocBlockFactoryInterface                                     | phpdocumentor/reflection-docblock |
| phpDocumentor\Reflection\DocBlock\Tags\InvalidTag                                     | phpdocumentor/reflection-docblock |
| phpDocumentor\Reflection\DocBlock\Tags\Param                                          | phpdocumentor/reflection-docblock |
| phpDocumentor\Reflection\PseudoType                                                   | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\PseudoTypes\List_                                            | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\Type                                                         | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\Types\Array_                                                 | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\Types\Collection                                             | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\Types\Compound                                               | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\Types\Context                                                | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\Types\ContextFactory                                         | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\Types\Integer                                                | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\Types\Nullable                                               | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\Types\Null_                                                  | phpdocumentor/type-resolver       |
| phpDocumentor\Reflection\Types\String_                                                | phpdocumentor/type-resolver       |
| PHPStan\PhpDocParser\Ast\PhpDoc\InvalidTagValueNode                                   | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode                                     | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode                                            | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode                                         | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode                                    | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode                                    | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode                                       | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\ArrayShapeNode                                          | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\ArrayTypeNode                                           | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\CallableTypeNode                                        | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\CallableTypeParameterNode                               | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\ConstTypeNode                                           | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\GenericTypeNode                                         | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode                                      | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\NullableTypeNode                                        | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\ThisTypeNode                                            | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\TypeNode                                                | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Ast\Type\UnionTypeNode                                           | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Lexer\Lexer                                                      | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Parser\ConstExprParser                                           | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Parser\PhpDocParser                                              | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Parser\TokenIterator                                             | phpstan/phpdoc-parser             |
| PHPStan\PhpDocParser\Parser\TypeParser                                                | phpstan/phpdoc-parser             |
| PHPUnit\Framework\Assert                                                              |                                   |
| PHPUnit\Framework\Constraint\Constraint                                               |                                   |
| PHPUnit\Framework\Constraint\IsIdentical                                              |                                   |
| PHPUnit\Framework\Constraint\IsInstanceOf                                             |                                   |
| PHPUnit\Framework\Constraint\IsNull                                                   |                                   |
| PHPUnit\Framework\Constraint\LogicalAnd                                               |                                   |
| PHPUnit\Framework\Constraint\LogicalNot                                               |                                   |
| PHPUnit\Framework\Constraint\LogicalOr                                                |                                   |
| PHPUnit\Framework\ExpectationFailedException                                          |                                   |
| PHPUnit\Framework\MockObject\Matcher\StatelessInvocation                              |                                   |
| PHPUnit\Framework\MockObject\MockObject                                               |                                   |
| PHPUnit\Framework\TestCase                                                            |                                   |
| PHP_SESSION_ACTIVE                                                                    | ext-session                       |
| PHP_SESSION_NONE                                                                      | ext-session                       |
| PHP_WINDOWS_VERSION_BUILD                                                             |                                   |
| PHP_WINDOWS_VERSION_MAJOR                                                             |                                   |
| PHP_WINDOWS_VERSION_MINOR                                                             |                                   |
| PKCS7_DETACHED                                                                        | ext-openssl                       |
| posix_isatty                                                                          | ext-posix                         |
| posix_kill                                                                            | ext-posix                         |
| Predis\Client                                                                         | predis/predis                     |
| Predis\ClientInterface                                                                | predis/predis                     |
| Predis\Command\Redis\UNLINK                                                           |                                   |
| Predis\Connection\Aggregate\ClusterInterface                                          | predis/predis                     |
| Predis\Connection\Aggregate\PredisCluster                                             | predis/predis                     |
| Predis\Connection\Aggregate\RedisCluster                                              | predis/predis                     |
| Predis\Connection\Aggregate\ReplicationInterface                                      | predis/predis                     |
| Predis\Response\ErrorInterface                                                        | predis/predis                     |
| Predis\Response\ServerException                                                       | predis/predis                     |
| Predis\Response\Status                                                                | predis/predis                     |
| Prophecy\Prophecy\ProphecySubjectInterface                                            |                                   |
| Psr\Http\Client\ClientInterface                                                       | psr/http-client                   |
| Psr\Http\Client\NetworkExceptionInterface                                             | psr/http-client                   |
| Psr\Http\Client\RequestExceptionInterface                                             | psr/http-client                   |
| Psr\Http\Message\RequestFactoryInterface                                              | psr/http-factory                  |
| Psr\Http\Message\RequestInterface                                                     | psr/http-message                  |
| Psr\Http\Message\ResponseFactoryInterface                                             | psr/http-factory                  |
| Psr\Http\Message\ResponseInterface                                                    | psr/http-message                  |
| Psr\Http\Message\StreamFactoryInterface                                               | psr/http-factory                  |
| Psr\Http\Message\StreamInterface                                                      | psr/http-message                  |
| Psr\Http\Message\UriFactoryInterface                                                  | psr/http-factory                  |
| Psr\Http\Message\UriInterface                                                         | psr/http-message                  |
| Psr\SimpleCache\CacheException                                                        | psr/simple-cache                  |
| Psr\SimpleCache\CacheInterface                                                        | psr/simple-cache                  |
| Psr\SimpleCache\InvalidArgumentException                                              | psr/simple-cache                  |
| Ramsey\Uuid\UuidInterface                                                             |                                   |
| RdKafka                                                                               |                                   |
| RdKafka\Conf                                                                          |                                   |
| RdKafka\Exception                                                                     |                                   |
| RdKafka\KafkaConsumer                                                                 |                                   |
| RdKafka\Message                                                                       |                                   |
| RdKafka\Metadata\Broker                                                               |                                   |
| RdKafka\Metadata\Collection                                                           |                                   |
| RdKafka\Metadata\Partition                                                            |                                   |
| RdKafka\Metadata\Topic                                                                |                                   |
| RdKafka\Topic                                                                         |                                   |
| RdKafka\TopicConf                                                                     |                                   |
| RdKafka\TopicPartition                                                                |                                   |
| Redis                                                                                 |                                   |
| RedisArray                                                                            |                                   |
| RedisCluster                                                                          |                                   |
| RedisClusterException                                                                 |                                   |
| RedisException                                                                        |                                   |
| RedisSentinel                                                                         |                                   |
| ResourceBundle                                                                        | ext-intl                          |
| sapi_windows_cp_conv                                                                  |                                   |
| sapi_windows_cp_get                                                                   |                                   |
| sapi_windows_cp_set                                                                   |                                   |
| sapi_windows_vt100_support                                                            | symfony/polyfill-php72            |
| sem_acquire                                                                           |                                   |
| sem_get                                                                               |                                   |
| sem_remove                                                                            |                                   |
| service                                                                               |                                   |
| service_locator                                                                       |                                   |
| SessionHandler                                                                        | ext-session                       |
| SessionHandlerInterface                                                               | ext-session                       |
| SessionUpdateTimestampHandlerInterface                                                | ext-session                       |
| session_abort                                                                         | ext-session                       |
| session_get_cookie_params                                                             | ext-session                       |
| session_id                                                                            | ext-session                       |
| session_name                                                                          | ext-session                       |
| session_regenerate_id                                                                 | ext-session                       |
| session_register_shutdown                                                             | ext-session                       |
| session_set_save_handler                                                              | ext-session                       |
| session_start                                                                         | ext-session                       |
| session_status                                                                        | ext-session                       |
| session_unset                                                                         | ext-session                       |
| session_write_close                                                                   | ext-session                       |
| setproctitle                                                                          |                                   |
| SIGINT                                                                                | ext-pcntl                         |
| SIGTERM                                                                               | ext-pcntl                         |
| SIGUSR1                                                                               | ext-pcntl                         |
| SIGUSR2                                                                               | ext-pcntl                         |
| SimpleXMLElement                                                                      | ext-SimpleXML                     |
| simplexml_import_dom                                                                  | ext-SimpleXML                     |
| simplexml_load_string                                                                 | ext-SimpleXML                     |
| Sodium\crypto_pwhash_str                                                              |                                   |
| Sodium\crypto_pwhash_str_needs_rehash                                                 |                                   |
| Sodium\crypto_pwhash_str_verify                                                       |                                   |
| sodium_crypto_box_keypair                                                             | ext-sodium                        |
| sodium_crypto_box_publickey                                                           | ext-sodium                        |
| sodium_crypto_box_seal                                                                | ext-sodium                        |
| sodium_crypto_box_seal_open                                                           | ext-sodium                        |
| SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE                                             | ext-sodium                        |
| SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE                                             | ext-sodium                        |
| sodium_crypto_pwhash_str                                                              | ext-sodium                        |
| sodium_crypto_pwhash_str_needs_rehash                                                 | ext-sodium                        |
| sodium_crypto_pwhash_str_verify                                                       | ext-sodium                        |
| SODIUM_LIBRARY_VERSION                                                                | ext-sodium                        |
| Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\UnusedTagsPassUtils |                                   |
| Symfony\Bundle\MercureBundle\MercureBundle                                            | symfony/mercure-bundle            |
| Symfony\Component\Cache\Adapter\DoctrineAdapter                                       |                                   |
| Symfony\Component\Debug\DebugClassLoader                                              |                                   |
| Symfony\Component\Debug\Exception\FlattenException                                    |                                   |
| Symfony\Component\Form\Tests\VersionAwareTest                                         |                                   |
| Symfony\Component\Mercure\Exception\InvalidArgumentException                          | symfony/mercure                   |
| Symfony\Component\Mercure\Exception\RuntimeException                                  | symfony/mercure                   |
| Symfony\Component\Mercure\HubInterface                                                | symfony/mercure                   |
| Symfony\Component\Mercure\HubRegistry                                                 | symfony/mercure                   |
| Symfony\Component\Mercure\Update                                                      | symfony/mercure                   |
| Symfony\Component\Messenger\Transport\AmqpExt\AmqpFactory                             |                                   |
| Symfony\Component\Messenger\Transport\AmqpExt\AmqpReceivedStamp                       |                                   |
| Symfony\Component\Messenger\Transport\AmqpExt\AmqpReceiver                            |                                   |
| Symfony\Component\Messenger\Transport\AmqpExt\AmqpSender                              |                                   |
| Symfony\Component\Messenger\Transport\AmqpExt\AmqpStamp                               |                                   |
| Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransport                           |                                   |
| Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransportFactory                    |                                   |
| Symfony\Component\Messenger\Transport\AmqpExt\Connection                              |                                   |
| Symfony\Component\Messenger\Transport\Doctrine\Connection                             |                                   |
| Symfony\Component\Messenger\Transport\Doctrine\DoctrineReceivedStamp                  |                                   |
| Symfony\Component\Messenger\Transport\Doctrine\DoctrineReceiver                       |                                   |
| Symfony\Component\Messenger\Transport\Doctrine\DoctrineSender                         |                                   |
| Symfony\Component\Messenger\Transport\Doctrine\DoctrineTransport                      |                                   |
| Symfony\Component\Messenger\Transport\Doctrine\DoctrineTransportFactory               |                                   |
| Symfony\Component\Messenger\Transport\RedisExt\Connection                             |                                   |
| Symfony\Component\Messenger\Transport\RedisExt\RedisReceivedStamp                     |                                   |
| Symfony\Component\Messenger\Transport\RedisExt\RedisReceiver                          |                                   |
| Symfony\Component\Messenger\Transport\RedisExt\RedisSender                            |                                   |
| Symfony\Component\Messenger\Transport\RedisExt\RedisTransport                         |                                   |
| Symfony\Component\Messenger\Transport\RedisExt\RedisTransportFactory                  |                                   |
| Symfony\Component\Security\Acl\Voter\FieldVote                                        | symfony/security-acl              |
| Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager              |                                   |
| Symfony\Component\Security\Core\Exception\UsernameNotFoundException                   |                                   |
| tagged_iterator                                                                       |                                   |
| tagged_locator                                                                        |                                   |
| token_get_all                                                                         | ext-tokenizer                     |
| Transliterator                                                                        | ext-intl                          |
| Twig\Extra\CssInliner\CssInlinerExtension                                             | twig/cssinliner-extra             |
| Twig\Extra\Inky\InkyExtension                                                         | twig/inky-extra                   |
| Twig\Extra\Markdown\MarkdownExtension                                                 | twig/markdown-extra               |
| Twig_ExtensionInterface                                                               |                                   |
| Twig_LoaderInterface                                                                  |                                   |
| T_CLASS                                                                               | ext-tokenizer                     |
| T_COMMENT                                                                             | ext-tokenizer                     |
| T_CONSTANT_ENCAPSED_STRING                                                            | ext-tokenizer                     |
| T_DOC_COMMENT                                                                         | ext-tokenizer                     |
| T_DOUBLE_COLON                                                                        | ext-tokenizer                     |
| T_ENCAPSED_AND_WHITESPACE                                                             | ext-tokenizer                     |
| T_END_HEREDOC                                                                         | ext-tokenizer                     |
| T_INLINE_HTML                                                                         | ext-tokenizer                     |
| T_NAMESPACE                                                                           | ext-tokenizer                     |
| T_NAME_QUALIFIED                                                                      | ext-tokenizer                     |
| T_NEW                                                                                 | ext-tokenizer                     |
| T_NS_SEPARATOR                                                                        | ext-tokenizer                     |
| T_OPEN_TAG                                                                            | ext-tokenizer                     |
| T_START_HEREDOC                                                                       | ext-tokenizer                     |
| T_STRING                                                                              | ext-tokenizer                     |
| T_WHITESPACE                                                                          | ext-tokenizer                     |
| xdebug_get_function_stack                                                             |                                   |
| xdebug_info                                                                           |                                   |
| xdebug_is_enabled                                                                     |                                   |
| XMLReader                                                                             | ext-xmlreader                     |
| XML_ATTRIBUTE_DECL_NODE                                                               | ext-dom                           |
| XML_ATTRIBUTE_NODE                                                                    | ext-dom                           |
| XML_CDATA_SECTION_NODE                                                                | ext-dom                           |
| XML_COMMENT_NODE                                                                      | ext-dom                           |
| XML_DOCUMENT_FRAG_NODE                                                                | ext-dom                           |
| XML_DOCUMENT_NODE                                                                     | ext-dom                           |
| XML_DOCUMENT_TYPE_NODE                                                                | ext-dom                           |
| XML_DTD_NODE                                                                          | ext-dom                           |
| XML_ELEMENT_DECL_NODE                                                                 | ext-dom                           |
| XML_ELEMENT_NODE                                                                      | ext-dom                           |
| XML_ENTITY_DECL_NODE                                                                  | ext-dom                           |
| XML_ENTITY_NODE                                                                       | ext-dom                           |
| XML_ENTITY_REF_NODE                                                                   | ext-dom                           |
| XML_HTML_DOCUMENT_NODE                                                                | ext-dom                           |
| XML_NAMESPACE_DECL_NODE                                                               | ext-dom                           |
| XML_NOTATION_NODE                                                                     | ext-dom                           |
| XML_PI_NODE                                                                           | ext-dom                           |
| XML_TEXT_NODE                                                                         | ext-dom                           |
| ZLIB_ENCODING_GZIP                                                                    | ext-zlib                          |
| Zookeeper                                                                             |                                   |
| ZookeeperException                                                                    |                                   |
+---------------------------------------------------------------------------------------+-----------------------------------+

@Ocramius
Copy link
Collaborator

Besides the empty lines (?!?!?!), that looks like an excellent result, and 3.5m seems OK too.

As for magento having incorrrect mappings, IMO that is an actual bug to be solved on their end :D

@Ocramius
Copy link
Collaborator

(TBH, I expected a much bigger slowdown!)

@DanielBadura
Copy link
Contributor Author

DanielBadura commented Mar 23, 2022

So my points that i need clearyfication are:

After that, the patch should be ready.

Besides the empty lines (?!?!?!), that looks like an excellent result, and 3.5m seems OK too.

That confused me too.

As for magento having incorrrect mappings, IMO that is an actual bug to be solved on their end :D

Yeah but this is not magento here at fault but a third party package AFAIK. EDIT: and already fixed since 2 years... 😕 : https://github.com/Lusitanian/PHPoAuthLib/blob/master/composer.json#L57

@Ocramius Ocramius self-requested a review March 23, 2022 09:54
));

$cleanPath = preg_quote(sprintf('%s/vendor', str_replace(DIRECTORY_SEPARATOR, '/', $installationPath)), '@');
$this->pathRegex = sprintf('@^%s/(?:composer/\.\./)?([^/]+/[^/]+)/@', $cleanPath);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mentioned by @DanielBadura in #346 (comment) - hacky as heck, so we may need to check this

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about this now quite some time and I didnt came up with another solution :/

@Ocramius
Copy link
Collaborator

@maglnet before we throw these major architectural changes in, perhaps you need to review and discuss this too :D

infection timeout should be increased to 90 seconds then based on the measurements, what do you think?

Fine for me - again, CI runs are not very problematic here.

the BC question is still open from here #346 (comment)

We can really release a new major just to be safe - not a problem.

As for magento having incorrrect mappings, IMO that is an actual bug to be solved on their end :D

Yeah but this is not magento here at fault but a third party package AFAIK. EDIT: and already fixed since 2 years... 😕 : https://github.com/Lusitanian/PHPoAuthLib/blob/master/composer.json#L57

Agreed: they haven't released that fix yet, but perhaps I can poke someone about it :)

Alternatively, we can improve roave/better-reflection to have a more lax factory for creating source locators starting from composer.json

@maglnet
Copy link
Owner

maglnet commented Mar 29, 2022

Thanks for all this work, I hope I can take a deeper look on the weekend.

@Ocramius Ocramius removed this from the 4.1.0 milestone Jul 6, 2022
@mvhirsch
Copy link

Thanks for all this work, I hope I can take a deeper look on the weekend.

Must have been a really long weekend 😁

Any updates?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Use roave/better-reflection
4 participants