Php Inspections (EA Extended)

Compatible with: IntelliJ IDEA PhpStorm
Jul 12, 2018
331 906
For support and donations please visit Github | Issues | PayPal | Patreon.

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
- weak types control and possible code construct simplifications
- performance issues
- non-optimal, duplicate and suspicious "if" conditions
- validation of magic methods usage
- regular expressions
- 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.

Note: we are sending anonymous crash-reports and installation statistics to Google Analytics. You are welcome to review the implementation.

Download plugin

Recent change notes

Enhancements and bug-fixes. Supporters via Patreon are wanted.

- Performance and deep code analysis improvements
- New settings (Other Settings -> Php Inspections (EA Extended))
- Hot-fix for a runtime exception

- Array and string offset validity: bug-fix types calculation (array|mixed + number)
- Loop which does not loop: resolved false-positives (generator, iterable and co)
- Null reference: resolved false-positives (null-coalescing/isset context)
- Useless return: added QF, resolved a false-positive (static variables)
- 'isset(...)' constructs can be merged: QF bug-fix (lost parenthesises)
- 'substr(...)' short-hand usage: bug-fixing rare offset calculation issue

- Could be replaced with '(array) ...': dropped
- Exceptions handling and annotating: dropped in favor bundled one
- Parameter/variable is not used: new patterns
- Return type hint can be used: new patterns
- Unnecessary type casting: new patterns
- 'substr(...)' could be replaced with 'strpos(...)': added QF settings