So if I understand you right you want to parse a module's file to work out what the module's API is and then parse any program which which use that module and flag places where the program uses the module in a way that's different to the API. Is that right?

If so, then you've given yourself a very hard (maybe even impossible) task. It's tricky enough to even _know_ what the API to a module is by looking at the file, let alone trying to write a program for it. Problems that immediately spring to mind include:

Even having identified the names of all of the object methods how are you going to identify the allowed sets of parameters? Remember that prototypes don't work for object methods. And what about methods that interpret @_ as a hash to simulate named parameters? Or parameters that are a reference to a hash or another object?

All in all I think this is probably impossible and you'd be better off finding a way to minimise your API changes.

--
<http://www.dave.org.uk>

European Perl Conference - Sept 22/24 2000, ICA, London
<http://www.yapc.org/Europe/>

In reply to Re: Parse/Validate Code by davorg
in thread Parse/Validate Code by pos

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.