Skip to content

Increase php-parser use#278

Open
BrianHenryIE wants to merge 635 commits into
masterfrom
add/enumerate-symbols
Open

Increase php-parser use#278
BrianHenryIE wants to merge 635 commits into
masterfrom
add/enumerate-symbols

Conversation

@BrianHenryIE

@BrianHenryIE BrianHenryIE commented Apr 15, 2026

Copy link
Copy Markdown
Owner

This should eliminate some bugs.

Also includes:

TODO:

@github-actions

github-actions Bot commented Apr 15, 2026

Copy link
Copy Markdown

Project Code Coverage
project coverage report 46% @ 74b52c2

Generated: Sat, Jun 27, 2026, 0:48:06 UTC.

Lines Functions and Methods Classes and Traits
Total 🟥🟥🟥🟥⬜⬜⬜⬜⬜⬜ 48.12% (2281 / 4740) 🟥🟥🟥⬜⬜⬜⬜⬜⬜⬜ 35.56% (186 / 523) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 7.69% (4 / 52)
Composer/Extra/StraussConfig.php 🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜ 67.11% (151 / 225) 🟥🟥🟥🟥⬜⬜⬜⬜⬜⬜ 43.94% (29 / 66) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Composer/ComposerPackage.php 🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜ 64.66% (75 / 116) 🟥🟥🟥🟥⬜⬜⬜⬜⬜⬜ 48.65% (18 / 37) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Composer/DeepDependenciesCollection.php ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 12) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 2) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Composer/DependenciesCollection.php 🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜ 60.00% (6 / 10) 🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜ 55.56% (5 / 9) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Composer/ProjectComposerPackage.php 🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜ 90.62% (29 / 32) 🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜ 60.00% (3 / 5) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Config/AutoloadConfigInterface.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Config/CleanupConfigInterface.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Config/FileEnumeratorConfig.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Config/FileSymbolScannerConfigInterface.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Config/MarkFilesExcludedFromChangesConfigInterface.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Config/PrefixerConfigInterface.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Console/Commands/AbstractRenamespacerCommand.php 🟥🟥🟥⬜⬜⬜⬜⬜⬜⬜ 31.31% (31 / 99) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 7) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Console/Commands/DependenciesCommand.php 🟥🟥⬜⬜⬜⬜⬜⬜⬜⬜ 22.42% (74 / 330) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 4.55% (1 / 22) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Console/Commands/IncludeAutoloaderCommand.php 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 11.11% (3 / 27) 🟥🟥⬜⬜⬜⬜⬜⬜⬜⬜ 25.00% (1 / 4) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Console/Commands/PrefixComposerAutoloadFilesCommand.php 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 11.54% (3 / 26) 🟥🟥⬜⬜⬜⬜⬜⬜⬜⬜ 25.00% (1 / 4) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Console/Commands/ReplaceCommand.php 🟥🟥⬜⬜⬜⬜⬜⬜⬜⬜ 21.50% (23 / 107) 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 11.11% (1 / 9) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Console/Application.php 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (7 / 7) 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (1 / 1) 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (1 / 1)
Files/DiscoveredFiles.php 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 18.75% (3 / 16) 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 16.67% (2 / 12) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Files/File.php 🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜ 64.00% (16 / 25) 🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜ 59.09% (13 / 22) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Files/FileBase.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Files/FileWithDependency.php 🟥🟥🟥🟥⬜⬜⬜⬜⬜⬜ 46.43% (13 / 28) 🟥🟥⬜⬜⬜⬜⬜⬜⬜⬜ 27.27% (3 / 11) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Flysystem/DeletedFilesInMemoryFilesystemAdapter.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Helpers/Flysystem/FileSystem.php 🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜ 55.74% (68 / 122) 🟥🟥🟥🟥⬜⬜⬜⬜⬜⬜ 44.44% (8 / 18) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Flysystem/FlysystemAdapterBackCompatTrait.php 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 88.89% (16 / 18) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 2) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Flysystem/FlysystemAdapterBackCompatTraitInterface.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Helpers/Flysystem/FlysystemReaderBackCompatTrait.php ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 3) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Flysystem/FlysystemReaderBackCompatTraitInterface.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Helpers/Flysystem/InMemoryFilesystemAdapter.php 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 83.33% (15 / 18) 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 83.33% (5 / 6) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Flysystem/ModifiedFilesInMemoryFilesystemAdapter.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Helpers/Flysystem/PathPrefixer.php 🟥🟥🟥🟥⬜⬜⬜⬜⬜⬜ 46.67% (7 / 15) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 5) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Flysystem/PathPrefixerInterface.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Helpers/Flysystem/PathSymlinkDetails.php ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 6) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 2) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Flysystem/ReadOnlyFileSystemAdapter.php ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 5.84% (8 / 137) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 4.17% (1 / 24) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Flysystem/StripFsRootPathNormalizer.php 🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜ 94.29% (33 / 35) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 2) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Flysystem/SymlinkProtectFilesystemAdapter.php ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 369) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 27) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Log/PadColonColumnsLogProcessor.php ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 10) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 2) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Helpers/Log/RelativeFilepathLogProcessor.php 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (8 / 8) 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (3 / 3) 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (1 / 1)
Helpers/ParserErrorException.php ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 10) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 2) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/Aliases/Aliases.php 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 87.83% (101 / 115) 🟥🟥🟥🟥🟥⬜⬜⬜⬜⬜ 50.00% (4 / 8) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/Autoload/ComposerAutoloadGeneratorFactory.php 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (4 / 4) 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (1 / 1) 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (1 / 1)
Pipeline/Autoload/DumpAutoload.php 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 87.50% (84 / 96) 🟥🟥🟥🟥🟥⬜⬜⬜⬜⬜ 50.00% (3 / 6) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/Autoload/Psr0.php 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 85.00% (34 / 40) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 2) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/Autoload/VendorComposerAutoload.php 🟥🟥🟥🟥⬜⬜⬜⬜⬜⬜ 42.33% (69 / 163) 🟥🟥⬜⬜⬜⬜⬜⬜⬜⬜ 28.57% (2 / 7) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/Cleanup/Cleanup.php ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 5.30% (8 / 151) 🟥🟥⬜⬜⬜⬜⬜⬜⬜⬜ 22.22% (2 / 9) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/Cleanup/InstalledJson.php 🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜ 59.58% (143 / 240) 🟥🟥🟥🟥⬜⬜⬜⬜⬜⬜ 41.67% (5 / 12) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/Autoload.php ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 36) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 2) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/AutoloadedFilesEnumerator.php ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 161) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 6) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/ChangeEnumerator.php 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 15.15% (15 / 99) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 4) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/Copier.php 🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜ 58.97% (23 / 39) 🟥🟥🟥⬜⬜⬜⬜⬜⬜⬜ 33.33% (1 / 3) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/DependenciesEnumerator.php 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 80.80% (101 / 125) 🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜ 60.00% (3 / 5) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/FileCopyScanner.php 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 15.94% (11 / 69) 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 16.67% (1 / 6) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/FileEnumerator.php 🟥🟥⬜⬜⬜⬜⬜⬜⬜⬜ 26.23% (16 / 61) 🟥🟥⬜⬜⬜⬜⬜⬜⬜⬜ 25.00% (1 / 4) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/FileSymbolScanner.php 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 81.53% (203 / 249) 🟥🟥🟥⬜⬜⬜⬜⬜⬜⬜ 35.29% (6 / 17) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/Licenser.php 🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜ 53.60% (67 / 125) 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 16.67% (1 / 6) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/MarkFilesExcludedFromChanges.php 🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜ 95.56% (43 / 45) 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 83.33% (5 / 6) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/MarkSymbolsForRenaming.php 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 18.45% (19 / 103) 🟥⬜⬜⬜⬜⬜⬜⬜⬜⬜ 18.75% (3 / 16) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Pipeline/Prefixer.php 🟧🟧🟧🟧🟧🟧🟧⬜⬜⬜ 76.87% (585 / 761) 🟥🟥🟥⬜⬜⬜⬜⬜⬜⬜ 32.00% (8 / 25) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Types/ClassSymbol.php 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 80.00% (12 / 15) 🟥🟥🟥🟥⬜⬜⬜⬜⬜⬜ 40.00% (2 / 5) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Types/ConstantSymbol.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Types/DiscoveredSymbol.php 🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜ 82.61% (38 / 46) 🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜ 68.75% (11 / 16) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Types/DiscoveredSymbols.php 🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜ 65.93% (89 / 135) 🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜ 60.00% (21 / 35) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Types/FunctionSymbol.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Types/InterfaceSymbol.php 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (9 / 9) 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (3 / 3) 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100.00% (1 / 1)
Types/NamespaceSymbol.php 🟥🟥🟥🟥🟥⬜⬜⬜⬜⬜ 50.00% (1 / 2) 🟥🟥🟥🟥🟥⬜⬜⬜⬜⬜ 50.00% (1 / 2) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Types/NamespacedSymbol.php 🟥🟥🟥🟥⬜⬜⬜⬜⬜⬜ 48.39% (15 / 31) 🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜ 66.67% (6 / 9) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)
Types/Psr0NamespaceSymbol.php n/a (0 / 0) n/a (0 / 0) n/a (0 / 0)
Types/TraitSymbol.php 🟥🟥⬜⬜⬜⬜⬜⬜⬜⬜ 22.22% (2 / 9) 🟥🟥🟥⬜⬜⬜⬜⬜⬜⬜ 33.33% (1 / 3) ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0.00% (0 / 1)

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request refactors the symbol discovery and replacement logic, moving from a regex-based implementation to an AST-based approach using the PHP-Parser library. It introduces a DiscoveredSymbols collection to manage various symbol types and updates the Prefixer to handle global symbols, namespace aliasing, and PHPDoc replacements. The review feedback highlights several critical areas for improvement: the regex for string-based classname replacement is too restrictive and incorrectly uses preg_quote, the AST walker may process comments multiple times leading to invalid offsets, and the circular dependency workaround in the File class is fragile. Additionally, the heuristic for closing braces in partial snippets is unreliable, and some log messages need updating to reflect the new architecture.

Comment thread src/Pipeline/Prefixer.php Outdated
Comment thread src/Pipeline/Prefixer.php
Comment thread src/Files/File.php Outdated
Comment thread src/Pipeline/Prefixer.php Outdated
Comment thread src/Pipeline/Prefixer.php Outdated
Comment thread src/Types/DiscoveredSymbol.php Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants