I find these tools to not be too useful. The things they catch is like trying to force it to be an entirely different language, and don’t actually help with maintaining code. Then again, I’m usually writing low-level libraries that take advantage of quirks in the language for performance:
$a = &$arr[]
Gives you a reference to null and appends it to the array. Then you can pass $a to something to mutate the tail “from a distance”. Most people never need this, nor should they use it. But when you are writing a streaming parser, it is quite handy as a one-liner instead of writing
$a = null
$arr[] = &$a
or keeping track of the current index and dealing with off-by-one errors.
For applications, these static analysis tools are great. For libraries, not so much.
For applications, these static analysis tools are great. For libraries, not so much.