CSC/ECE 517 Fall 2013/ch1 1w08 cc

From Expertiza_Wiki
Jump to navigation Jump to search

Code review tools are used to aid and automate existing peer code review practices in order to simplify and guide the review work flow. In general, code review is a systematic analysis of source code by a peer to find bugs which may have been missed by the original coder. <ref> GoogleTalksArchive "Mondrian Code Review on the Web" </ref>. The code review tools discussed here are collaborative tools designed for multiple users to easily share, review, and comment on one another's code to speed up the debugging process. Key features of code review tools include email notifications, syntax highlighted color diffs, commenting, reports, and subversion integration.

Code Review Tools

There are many code review tools in use today. Which tools one chooses to use depends on the individual needs since every tool is different. Below are some popular code review tools in use today along with their background and features.

Agile Review

Agile Review is an open source code review tool that is an Eclipse Plugin. <ref>Agile Review [1]</ref>

Cost: Free

Features

  • Refactoring Safety
  • Highlighted Comments
  • SCM (Source Control Management) Integration

Barkeep

Barkeep is a code review system developed in Ruby by the company Ooyala <ref> GitHub "Comparing barkeep to other code review tools" </ref>. Although written in Ruby Barkeep is not language specific and may be used for code review of any language. Barkeep is standalone and the end user is responsible for hosting it. One of the key features that Barkeep prides itself on is it hackable nature. Since Barkeep is hosted by the user and they provide their “small codebase” it allows users to add on new features and make modifications as they see fit for their needs. So even if Barkeep doesn’t have a feature someone needs it is very feasible for the user to add it.

Cost: Free

Features

  • Email Notifications
  • Syntax Highlighted Color Diffs
  • Hackable
  • Commits Searching
  • Review Requests
  • Comments
    • Inline Code Snippets
  • Stats
    • Most Active Reviewers
    • Most Commented Commits
    • Review Coverage
    • Top Approvers

Collaborator

Collaborator is a code review tool built on CodeCollaborator by SmartBear. Unlike many other code review tools collaborator also doubles as a peer review tool allowing review of not only code but documents and other project deliverables such as user stories, test plans and user documentation. Companies such as Intel, Southwest Airlines, Cisco and Walmart have used Collaborator. <ref> SmartBear "Code & Document Review - Collaborator" </ref>

Cost: Paid

Features

  • Real-time Chat
  • Syntax Highlighted Color Diffs
  • Comments
  • IDE & SCM (Source Control Management) Integrations
  • Reports
    • Pending Code Reviews
    • Code Review Performance
    • Many more…
  • Customizable and Automated Workflows
  • Defect Tracking & Management
  • Review Checklists

Code Striker

Code Stricker is a collaborative code reviewing web application written in cross-platform Perl. Code Stricker is open source and located on Sourceforge.<ref>Sourceforge "What is Codestriker?"</ref>

Cost: Free

Features

  • Email Notifications
  • Commenting
    • Per-line Comments
  • SCM (Source Control Management) Integration
  • Syntax Highlighted Color Diffs
  • Bug Tracking System Integration

Crucible

Crucible is collaborative peer code review software developed by Atlassian. Crucible is a proprietary and primarily used by enterprise teams. <ref> Atlassian "Crucible Documentation Home"</ref> Customers of Crucible include ESPN, Cosco, Twitter, Visa and UPS. Unlike most other code review tools since Crucible is developed by Atlassian who makes many other software tools it integrates well with the other tools providing additional functionality above the typical code review tool. This includes Crucible's functionality to allow code review actions to be turned into defects using Atlassian's defect tracking system, JIRA. Crucible is the code review tool of choice for many large software companies. <ref> Atlassian "Crucible" </ref>

Cost: Paid

Features

  • Commenting
    • Threaded Inline Discussions
  • Iterative Reviews
  • Auditing of Review Activity
  • Email and RSS Notifications
  • Support to Review code before Check-In
  • Review Reminders
  • Dashboard & Reporting
    • Review Coverage Reports
    • Activity Streams
    • Progress Indicators
  • Syntax Highlighted Color Diffs
  • SCM (Source Control Management) Integration

Gerrit

Gerrit is a web based code review tool. Gerrit started off at Google as a some simples fixes to the code review tool, Rietveld. Shortly after it's creation it became a fork of Rietveld and a eventually a separate project from Rietveld which needed a seperate name, Gerrit. When Gerrit first came into existence it was developed in Python like Rietveld. Gerrit2 which is in use today is a rewrite of the original Gerrit in Java. <ref>Google Code "Background - The history behind Gerrit Code Review"</ref>

Cost: Free

Features

  • Git Integration
  • Side-by-Side File Comparison
  • Commenting
    • Inline Comments

Groogle

Groogle is an open source collaborative code review tool which is available as a cross-platform web interface <ref> Groogle "About Groogle"</ref>. The distinct value of the tool is its ability to adapt to and enforce existing workflows rather than making workflows adapt to the code review tool <ref> sourceforge.net "Groogle: A sensible source code review tool" </ref>. The customization factor makes it extremely user friendly.

Cost: Free

Features: <ref> Groogle "About Groogle"</ref>

  • Cross-platform Web app
  • SCM (Source Control Management) Integration
  • File upload support for formats: zip, tar, gzip, and bzip2
  • Pre/Post commit support
  • 100 language syntax highlighting
  • Syntax highlighting color diffs
  • Repository tree change comparison
  • Email notifications
  • Asynchronous repository checkouts
  • Security features

JCR - Java Code Reviewer

JCR is a web app for collaborative code reviews. It is available for reviews of any source code language, but it is especially useful for Java <ref> JCR "Java Code Reviewer" </ref> It targets users who review large amounts of code at a time, and is specifically for more formal reviews. <ref> JCR "FAQ" </ref>

Cost: Free

Features: <ref> JCR "Java Code Reviewer" </ref>

  • Syntax-highlighted
  • Changes highlighted
  • Code extracts shown with comments for context
  • Status reports
  • Tracking required actions per comment
  • Review any source code

Jupiter

Jupiter is an open source plugin for Eclipse, and therefore available for all platforms that support Eclipse. <ref> "jupiter-eclipse-plugin" </ref> It organizes the code review into four different stages to incorporate both the review team and the developer: configuration, individual review, team review, and rework. <ref> John Ferguson Smart "Peer Code Reviews Made Easy with Eclipse Plug-In" </ref>.

Cost: Free

Features:

  • Sorting and Filtering
  • Switch quickly between source code and review files
  • Individual and Team views
  • XML data storage
  • File integration
  • Cross-platform compatibility
  • Multiple language support

Malevich

Malevich is a web based code review tool, which prides itself on making commenting easy. It was developed as a more secure alternative to the Rietveld tool, which requires uploading source code to Google servers <ref> Malevich "Why the name" </ref>. Considering this to be a bad way to protect IP, the developers came up with Malevich as a similar tool that can be deployed by each individual user. <ref> Malevich "Why the name" </ref>.

Cost: Free

Features:

  • In-line Commenting
  • Side-by-side file comparison
  • Change tracking
  • Email notifications

Perforce

Perforce is actually a revision control system but it incorporates a review tool as well. This works well because it allows you to work with ad review code before it is checked-in <ref> Perforce "Code Review Tools" </ref> It also integrates third party tools such as Crucible, FishEye, CodeStriker, and Code Collaborator. <ref> Perforce "Code Review Tools" </ref>

Cost: Free with use of Perforce

Features: (some of these are integrated only with the third party tools)

  • Email notifications
  • Inline Commenting
  • Asynchronous reviews
  • Search and code sharing
  • Review diffs

Rietveld

Rietveld is an open source web application for code reviews. Rietveld was inspired by Mondrian a internal web application at Google used for code reviews. Mondrian is heavily used inside Google and a developer of Mondrian always wanted to release it as an open source tool but due to its popularity within the company was unable to. Rietveld came about from the inspiration of Mondrian and was released to the open source Python community. <ref>Google Developers "An Open Source App: Rietveld Code Review Tool" </ref>

Cost: Free

Features

  • Email Notifications
  • Syntax Highlighted Color Diffs
  • Hackable
  • Inline Comment

Review Board

Review Board is a free web-based code review tool which was originally developed by Christian Hammond and David Trowbridge from VMWare <ref> Gavin Terrill "Review Board - Online Code Review Tool". Feb 12, 2008 </ref>. It focuses on combining everything needed for a code review to a central dashboard, and using emails as only the notification system instead of the full support for passing code between users. <ref> Jake Edge "Making code reviews easier with Review Board" January 16, 2008 </ref>

Cost: Free

Features: <ref> Review Board[2] </ref>

  • Track review requests
  • Syntax-highlighted color diffs
  • Inter-revision diff
  • Diff any file, not only source code
  • Commenting on multiple lines
  • Open item to-do list
  • Development history
  • Extensible

Comparison

Functionality

Comparison of code review tools
Maintainer License Developed In Desktop Client vs Web App Cost
Agile Review agilereview.org Open Source Desktop Client (Eclipse) Free
Barkeep Ooyala Open Source Ruby Web Application Free
Collaborator SmartBear Proprietary Desktop Client Paid
Code Striker codestriker.sourceforge.net Open Source Pearl Web Application Free
Crucible Atlassian Proprietary Java Web Application Paid
Gerrit code.google.com Open Source Java Web Application Free
Groogle groogle.sourceforge.net Open Source PHP Web Application Free
JCR jcodereview.sourceforge.net Open Source Java Web Application Free
Jupiter code.google.com Open Source Java Desktop Client (Eclipse) Free
Malevich malevich.codeplex.com Open Source Web Application Free
Perforce perforce.com Proprietary Multiple Both Paid
Rietveld Google App Engine Open Source Python Web Application Free
Review Board reviewboard.org MIT Python Web Application Free

Features

This compares the tools based on the most common and valuable features for a collaborative code review tool. "*" denotes a feature.

Feature comparison of code review tools
Syntax Highlighted Color Diffs Email Notifications Commenting SCM Integration Side-by-Side File Comparison
Agile Review * *
Barkeep * * * *
Collaborator * * *
Code Striker * * * *
Crucible * * * *
Gerrit * * *
Groogle * * * *
JCR * *
Jupiter *
Malevich * * * *
Perforce * * *
Rietveld * * *
Review Board * * *

Example Code Review Tool Workflow

Here is the common workflow for a code review tool. It does not apply to every tool. 1. Upload source code to tool repository 2. Make comments on the 3.

References

<references/>