Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Re: Re: Forcing Compile Time Checking That Subs Exist

by bikeNomad (Priest)
on Jun 05, 2001 at 01:12 UTC ( #85614=note: print w/ replies, xml ) Need Help??


in reply to Re: Re: Forcing Compile Time Checking That Subs Exist
in thread Forcing Compile Time Checking That Subs Exist

Keep the faith, Brother!

Having been a Smalltalk user for at least 5 years now, one thing that helps in typical Smalltalk environments is their checking of method names when you define new methods. Every time you edit a method, it's recompiled; the compiler does a simple check to see if any of the method names you're using haven't been defined yet. If so, you get a warning. This has helped me detect a lot of typos in my code.

I'm thinking that a similar strategy could be used with Perl, by scanning programs like this:

  • For each 'use'd or 'require'd package, make a defined symbol list (easiest way to do this is probably just to use B::Xref).
  • Scan your program for method calls (or, more simply, for words, removing all the Perl pre-defined words).
  • Make a list of all the method calls (or words) in your program that don't match any of the subroutines defined in your included packages

This is a simple strategy, and it should be easy to implement. Tell me if it works!

I still prefer full testing, though. Have you read anything about Extreme Programming techniques? One of the XP tenets is to write tests FIRST.


Comment on Re: Re: Re: Forcing Compile Time Checking That Subs Exist

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://85614]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (7)
As of 2015-07-07 09:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (88 votes), past polls