The onlyš static approach I can think of is to restrict/enrich an object model in a way to define the methods statically.

That means you can extend each class you use with information (eg an array or flagging them with attributes) about the method names.

Then you can get the information which classes use which methods without running the class-code.

Well you can easily do this with your own code... and I suppose you don't plan changing method names of foreign classes...

BUT then you still have the problem to identify statically which class an object belongs to. An object in Perl is just a blessed reference to a data structure. A reference might have been created from somewhere without any "new class" syntax in the same file to parse.

So you have to enrich your code with type-declarations (should be possible with attributes)

So it's possible (you will be mimicking the mechanisms of static languages) but is this still perl???

There are plenty of discussions of this in Perlmonks (search for static parsing and ppi), you might want to check if IDE-extensions like perlysense for emacs or padre already provide any automated help.

Cheers Rolf

UPDATE: (1) reliable


In reply to Re: Compile-time/Auto-test method checking? by LanX
in thread Compile-time/Auto-test method checking? by Cybris

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.