Recently, I had my code reviewed. My reviewer had some very nice suggestions for change. Also had things in there, I didn't necessarily agree on, but that's a whole different blog :-))
The day's of printing out the code and running through the same in a meeting room is a bit passe! Primarily for security reasons, what if one touches a raw nerve of the guy whose code we are reviewing...with all these mall incidents etc, its too scary..remote handling of the matter that too with day and age of the internet is definitely the preferred and prudent route. I am sure my reviewer would have felt the same seeing my halloween features :-))..I better be kidding here!
My reviewer had painstakingly (thanks again if he ever reads this) interspersed in my code comments for improvement and checked the same into SVN. Eclipse has a TASK's tab that can display items like TODO's or FIXME's etc. Pretty neat. I could then open Eclipse's task tab and run through the individual TODO's and FIXME's and address the review issues.
So I started off addressing his issues. Where do i start? Which is high priority? What should I do after fixing the concern, just delete the comments? Hopefully he will do a "diff" on the source files when he re-reviews :-))))...maybe I can be smart enough to just delete his comments and leave for the day ...lol...kidding of course ..I don't advocate this practice...
Somethings to note about this. There is no PRIORITY associated with the FIXME's so all appear as the same severity. Of course going into each of those FIXME's can provide commented details.
Additionally the review involves the user having to repeat themselves in writing the comments. For example, Coding Style, Optimization etc and specifics there in (no common language). Also the review involves polluting the code base with the comments that later need to be removed after addressing the same; ugh for pain !
Also, in a team environment, it is possible that a checked in code base is reviewed by more than one individual with different comments and potentially different severity. Also, in terms of feedback to the reviewer, there is no easy way of saying what one did to fix the issue or the fact that they won't fix an issue because of some reason or how it was fixed unless maybe listing in an SVN commit or within the code as java doc. Also from a Team perspective, with Task comments, it's not easy to assign specific elements of a review to different people in the team. "You John Doe, get all the FIXME's that contain 'Code ishtyle in the comments'"!. What about duration since a review was posted and the review did not meet a resolution? Maybe this can be addressed by creating a project in your favorite bug tracking tool for the code review? Any thoughts about the pain points there in? "Sanjay pretending to be in deep thought (an anomaly of nature) now, surely there could be an easier way!"
Let me speak a bit in the third person, my son does so all the time, "Yash hungry, Yash going away, Yash Sad, Yash gonna beat u up!"..so emulating him , "Sanjay searching web for something as he is lazy to do something or contribute personally!". "Yay! Sanjay finds something!"
Helping out with all the above but not limited to, is a nice plugin for Eclipse called Jupiter.
Think of Jupiter as a Bug tracking tool for code reviews. Its an Eclipse embedded JIRA of sorts. I tried to use this on a simple project that I created and was rather impressed with what I saw. I could expand with examples of how it works but primarily due to laziness, will allow you to discover its features via the user guide and trying it out :-))) Sheeeeepish and totally shameless here!
As a note , I couldn't get the plugin to work using the update site. The plugin was not picking any of my source files for review..kinda defeated the purpose. Had to manually install the jar I obtained from HERE. After that all was smooth as silk, got em examples woiking...
Don't think I wan't to recommend this to my reviewer, as I definitely don't want a review of a code-review tool...its hard enough finishing the code review ;-))) kidding as always!!!!
If I were leading a team, I would definitely look toward exploring this tool further...