in reply to static method checker for perl?

The simplest answer is "no".

First of all methods don't have signatures in plain Perl 5, so there's no way a code checker could actually know arguments a sub expects. It could guess, though.

Second, variables don't have type annotations, so you'd have to introduce these first.

Thirdly, methods can be added at run time. In the simplest case it's something like *methodname = sub { ... }, in the most general (and thus hardest) case something like that would happen in a string eval, completely undetectable at compile time.

All of those can be ignored to some extend, and you can still try to write some static checker, which would be more heuristically than correct.

So you want a Perl with explicit signatures, type annotations and no eval. Luckily there's something that provides the first two of these criteria - Perl 6. It can't do complete, reliable checking at compile time, but at least it allows for much better introspection, and much better compile time detection if you ignore that an eval() might add methods.