We were finally able to procure a build server so I spent some time over the last few days setting up Hudson for the first time. For the first project I used one of the projects we already have setup for automated building with ANT. I added the following ANT tasks and Hudson plugins: Checkstyle, FindBugs, Cobertura, PMD, Warnings, Violations, and Tasks. I tried JavaNCSS but had a few issues with it. I could get it to run using the ANT task documentation from the JavaNCSS website, but not from the javancss2ant documentation. It didn’t understand the output file attributes so it just printed the results to the console. It was probably user error on my part… I’ll try again someday soon.
Here’s a screenshot of the project dashboard.
I have run Cobertura and PMD against the codebase of this project before, but seeing all of the result together gives you a great, and possibly alarming, view of the quality of the code. At first CheckStyle was really ticked off. I was using the default module set that was included in the CheckStyle distribution (sun-checks.xml) and it was enforcing some rules that I don’t agree with as important and wouldn’t ask my team to worry about either… most of them were in the ‘Whitespace’ category (I’m not arguing their merit, just saying we aren’t following them now). After I tweaked the modules that were being used it was much happier, but still showing some issues we need to work on.
The visibility tools like these give you are great… and it couldn’t be much simpler. Now we’re going to be able to enforce unit test code coverage, style, and complexity rules easily and actually measure project performance with these metrics as well. I will be checking into a lava lamp soon. 🙂
I know there are commercial tools for this sort of thing, too, but Hudson is a great open source tool. Thanks to those involved in its development. Thinking back to my early years when there wasn’t ‘open source’, only ‘freeware’, I can’t imagine tools like this being openly available. How far we’ve come.
This is a good way for our team to start the new year.
Happy New Year to you.