Please tell me there is something like this for PHP or JS?
It is quite limited by Perl's quirky syntax, unfortunately ("only Perl can parse Perl"). Last time I checked, it would miss e.g. all warnings for anonymous subs:
# triggers "Subroutine "foo" does not end with "return" at line 5, column 1. See page 197 of PBP. (Severity: 4)"
sub foo {
my $s=shift;
}
# triggers no warnings
my $x = sub {
my $s=shift;
}
This is a bug/limitation in PPI (which otherwise does a great job with the mess that is Perl syntax) ... I'd assume the various JS analysers can do a more thorough job.https://developers.google.com/closure/utilities/
(disclaimer: I helped write this when I was working there)