Making Code Review Software Tools Help, Not Hinder
Software automation tools can be a boon for developers who are preparing for a code review, and they can take away a lot of the bookkeeping drudgework. But don't expect software tools to replace human evaluation skills.
Mon, December 22, 2008
CIO — Among the admirable hallmarks of software developers is that they always write tools to automate the boring or repetitive stuff. Tools can certainly assist in the code review process—particularly in ensuring that the code adheres to corporate style, collecting metrics and applying departmental programming policies—but some caution that you shouldn't depend overmuch on them.
In particular, look at automated tools as a way to help collect and manage information before or during a code review, or learn the structure of the software—not to do the analysis for you. "Software will help the code review process, but initially your investment will be in trimming down the rule set to get the most value out of the tool," says Micheal Lalande, director of technology at QLogitek, a SaaS supply chain solution provider. "Work with the smallest set of rules as possible, so that you can tune out the noise. As you tune the rule set, you will find that software will become better and better within the organization."
The tools exist to automate the things that computers do better, such as checking naming conventions or comments, so developers don't have to waste their time on those details. "Some of these things can be caught by tools like FXCop, for instance, so a senior programmer and a group of peers should not be going over them," says Christopher Buchino, director of software engineering at GotVMail Communications.
J. Schwan, managing partner of Solstice Consulting, points out that while software can help automate the creation of unit test cases and ensure code coverage in unit test identification, the tools can't replace code reviews. "There aren't any tools to my knowledge that can offer perspectives on opportunities for code reusability and efficiency. This is where the human mind prevails over the CPU and should be leveraged accordingly," says Schwan.
Or to put it in different terms: Someone once asked Fats Waller, in the early days of boogie-woogie piano, how he kept the right hand from doing what the left hand was doing. He said, "That's what I'm in the middle for."
But do turn to the tools for where they can help the team. Lalande suggests you run all code through an automated tool as often as possible. "This will handle the low hanging fruit, and will train developers in best practices for development. Focus this automated review on rulesets that you care about, as most code review tools cover more non-functional requirements than you are concerned about in your project." Doing so reduces the size of the report and provides more relevant results. Plus, he says, "Review all automated test results before making changes. You cannot take the results of an automated code review tool as gospel. Since these tools are designed to cover general cases, there may be specific reasons that you are breaking those rules."