Php Inspections (EA Extended)

Compatible with: IntelliJ IDEA PhpStorm
167 036
For support and donations please visit Github | Issues | PayPal.

Please follow me at twitter for status updates.

This plugin is a Static Code Analysis tool for PHP (aka inspections in JetBrains products).

It covers:
- architecture related issues (e.g. design pattern violations)
- weak types control and possible code construct simplifications
- performance issues
- non-optimal, duplicate and suspicious "if" conditions
- validation of magic methods usage
- regular expressions
- validation of exception handling workflow
- compatibility issues
- variety of time-consuming bugs
- PhpUnit API usage
- security issues

Some of inspections are expecting conditional statements (e.g. "if") to use group statement for wrapping body expressions. If this requirement is met then additional inspections are applied to the source code.

For Mac shortcuts, see this reference card. Windows/Linux ones are:
Alt + Shift + I to inspect current file with current profile
Ctrl + Alt + Shift + I to run inspection by name
Ctrl + Shift + F4 to close results of inspection.

On some projects CPU and therefore battery usage could be intensive, so it should be taken into account when traveling with a laptop.

Download plugin

Recent change notes

Thank you for supporting our crowdfunding campaign! We keep delivering funded results =)

- Documentation and reporting enhancements
- Callable parameter usage violates definition: resolved false-positives (iterable)
- Foreach source to iterate over: resolved false-positives (iterable type)
- Long inheritance chain: resolved false-positives (DDD-named exceptions, Phalcon framework)
- 'substr(...)' used as index-based access: resolved false-positives (mb_substr)

- Child method is exactly the same: implemented QFes
- Insecure 'uniqid(...)' usage: new patterns
- General '\Exception' is thrown: QF implemented
- PDO API usage: re-worked, added QFes
- Suspicious returns: new patterns
- Suspicious binary operations: new patterns
- 'array_unique(...)' low performing usage: added QFes
- 'file_put_contents(...)' misused: added QF
- 'strtotime(...)' misused: added QFes
- ::class can be used: new patterns

- Callable methods validity: implemented
- Empty/isset results correctness: implemented
- Null coalescing operator variable existence: implemented
- 'strncmp(...)/strncasecmp(...)' could be replaced with 'strpos(...)/stripos(...)': dropped