New features(CLI, Configs):
- Sort output of
--dump-ctags=basic
by element type before sorting by file name (#3811)
(e.g. make class and global function declarations the first tag type for a tag name) - Colorize the output of
phan_client
by default for the default and text output modes. (#3808)
Addphan --no-color
option to disable colors. - Warn about invalid CLI flags in
phan_client
(#3776) - Support representing more AST node types in issue messages. (#3783)
- Make some issue messages easier to read (#3745, #3636)
- Allow using
--minimum-severity=critical
instead of--minimum-severity=10
(#3715) - Use better placeholders for parameter default types than
null
in issue messages and hover text (#3736) - Release
phantasm
, a prototype tool for assembling information about a codebase and aggressively optimizing it.
Currently, the only feature is replacing class constants with their values, when safe to do so.
More features (e.g. inlining methods, aggressively optimizing out getters/setters, etc.) are planned for the future.
Seetool/phantasm --help
for usage.
New features(Analysis):
- Improve analysis of php 7.4 typed properties.
Support extracting their real union types from Reflection information.
Infer the existence of properties that are not inReflectionClass->getPropertyDefaults()
due to being uninitialized by default. - Emit
PhanAbstractStaticMethodCall*
when calling an abstract static method statically. (#3799) - Emit
PhanUndeclaredClassReference
instead ofPhanUndeclaredClassConstant
forMissingClass::class
.
Language Server/Daemon mode:
- Catch exception seen when printing debug info about not being able to parse a file.
- Warn when Phan's language server dependencies were installed for php 7.2+
but the language server gets run in php 7.1. (phpdocumentor/reflection-docblock 5.0 requires php 7.2) - Immediately return cached hover text when the client repeats an identical hover request. (#3252)
Miscellaneous:
- PHP 8.0-dev compatibility fixes, analysis for some new functions of PHP 8.0-dev.
- Add
symfony/polyfill-php72
dependency so that symfony 5 will work better in php 7.1.
The next Phan major release will drop support for php 7.1.