Wednesday, January 26, 2011

Crucible - the ultimate code review tool

I wanted to write this post for a few weeks, but was so busy I simply didn't have time.

Code reviews - I don't have to tell you how important is this technique in the context of source code quality, adherence to standards, audits, and mentoring less experienced programmers. Code reviews are essential to software project, and I cannot imagine a project without code reviews.

In my current project our Technical Consultant introduced Crucible and I have to say that it is the best code review tool I have ever used!

But before I tell you something more about Crucible I want to tell you how it was done previously (and maybe is still done by some of you).

Code reviews in Word

In my first production iPhone application we had an external consultant - an expert in Objective-C and iPhone development. He didn't have access to our company's infrastructure so I was sending him zipped project and he sent me comments in Word. Code reviews in place, but not what you would normally do in a year-long, 5 team members project.

Centralised document repository

In an eCommerce project we used Lotus Notes for code reviews. How did it look like? Well you created a document, added files into it, and someone else reviewed it, then it was you turn to amend the files appropriately and check them into the repository.

It has the following advantages:

  • the document repository is centralised, is accessible by everyone
  • it supports iteration (document version changes and final acceptance)
  • it supports reviewers
Quite nice, but there is one huge disadvantage:
  • the tool is completely separated from the source code, you attach source code to the document manually, if the reviewer wants to track changes he/she should update its working copy and compare the changes himself/herself
For me this disadvantage makes this approach completely useless.

Simple Tools embedded in IDEs

A friend of mine showed me last year a VS plugin for code reviews. The code comments were visible in a tab which looked like a Errors/Warnings tab.

Posted via email from Jasper-Net