Stelligent Home Page
CONSULTING  •  COACHING  •  COLLABORATING

Quick Links
 

An Interview with Tom Copeland of PMD

Article Topics
Introduction · Maven · The Future
« Maven



The Future


Stelligent: What does the future hold for PMD? What features are most needed now?

Tom: There's a lot of work still to be done. The JDK 1.5 support isn't perfect yet, although it's getting closer as more people are using generics and annotations and giving feedback. Big jobs still to do include full symbol resolution, nailing down the data flow analysis module, and doing a control flow graph. Those are three pretty complicated tasks that would be worthy of any PhD thesis :-)

Stelligent: Who are the players in PMD besides you?

Tom: Recently Miguel Griffa has written a bunch of rules, as has Eric Olander. Philippe Herlin is a stalwart maintainer of the Eclipse plugin, and Jiger Patel keeps the jEdit plugin up to date. And a host of folks have contributed bugs and feature requests and patches once or twice... it all helps.

Stelligent: People offer the project code- do you require corresponding JUnit tests? If not, who writes them?

Tom: Nah. It's nice if someone includes the tests, but if not, I write them. Either way is fine; if the tests are included that's great, and if not, writing them helps me ensure I understand the code.

Stelligent: What is your favorite PMD rule?

Tom: Probably one of the oldest ones - unused local variable. That's usually the first one I run on a new clump of source code; anything it finds can be snipped out and everything gets a little cleaner. It's especially nice when it finds a variable that gets declared, initialized, and assigned a couple times - but never used. Getting rid of that kind of thing is pretty cool.

Stelligent: You are a Ruby guy. What's your take on Ruby and the corresponding flame wars that take place when someone mentions Rails and Java in the same sentence?

Tom: Yup, Ruby is pretty cool, and Ruby on Rails is really making it take off. I help run RubyForge and our average hits per day has gone from 50K in January to 90K so far this month (May). I don't really have a strong feeling about the language wars; I do find programming in Ruby to be pretty fun, though. It seems like I can do a lot with a little bit of code. For example, the Ruby unit testing framework has a thingy that lets you ensure a block of code throws an exception; to use it, just do this:

def test_delete_contact
 assert_raise(FooException) {@r.delete_contact("foobar")}
end

Nifty, huh? Also, having done a bunch of JNI coding at one point, I feel like doing Ruby native extensions are a breeze compared to javah and pinning global references and all that.

Stelligent: How do you manage to keep a full time job, run an open source project, and have a family of 5 children- do you sleep?

Tom: I'm lucky to have a job working for Rich Kilmer, who does a ton of open source coding and helps me maintain RubyForge. Also, since InfoEther has a PMD product, that's supportable on business time as well. And, you know how it is, the longer you've programmed, the better you are at getting things done quickly with little scripts and libraries and whatnot. So it just all kind of works out somehow :-)