CSC/ECE 517 Fall 2013/ch1 1w08 cc: Difference between revisions
(105 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
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, [http://en.wikipedia.org/wiki/Code_review 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 [http://www.youtube.com/watch?v=CKjRt48rZGk "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, | 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, [http://en.wikipedia.org/wiki/Code_review 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 [http://www.youtube.com/watch?v=CKjRt48rZGk "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 [[#Features|email notifications]], [[#Features|syntax highlighted color diffs]], [[#Features|commenting]], [[#Features|side-by-side file comparison]], and [http://en.wikipedia.org/wiki/Source_Control_Management SCM] (source control management) integration. | ||
Code review is very important to software developers because it helps debugging go faster, it makes code easier to maintain, and it enforces standard coding practices. However, code review has several stigmas attached to it including long meetings, and potentially stressful criticism from your peers. Code review tools do the job to make code review more feasible, and even enjoyable. Benefits of using these tools include easy collaboration; no more in-person meetings; recordings of quantitative metrics which managers can review; historical reports of changes and comments; and, a standardized process for conducting reviews across the company or group of developers <ref> [SmartBear.com http://smartbear.com/SmartBear/media/pdfs/WP-CC-Peer-Code-Review-An-Agile-Process.pdf "Peer Code Review: An Agile Process"] </ref>. This takes the stress out of code review, and makes it available for easy everyday use on a personal computer. | |||
= Code Review Tools = | = 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. | 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|features]]. | ||
== Agile Review == | == Agile Review == | ||
Agile Review is an open source code review tool that is an Eclipse Plugin. <ref>Agile Review [http://www.agilereview.org]</ref> | Agile Review is an open source code review tool that is an [http://en.wikipedia.org/wiki/Eclipse_(software) Eclipse] [http://en.wikipedia.org/wiki/Plug-in_(computing) Plugin]. <ref>Agile Review [http://www.agilereview.org]</ref> | ||
'''Cost:''' Free | '''Cost:''' Free | ||
'''Features''' | '''Features''' | ||
* Refactoring Safety | * [http://en.wikipedia.org/wiki/Code_refactoring Refactoring] Safety | ||
* Highlighted Comments | * Highlighted Comments | ||
* SCM (Source Control Management) Integration | * [http://en.wikipedia.org/wiki/Source_Control_Management SCM] (Source Control Management) Integration | ||
* Commenting | |||
** Inline Comments | |||
** Reply to Comments | |||
== Barkeep == | == Barkeep == | ||
Barkeep is a code review system developed in Ruby by the company Ooyala <ref> GitHub [https://github.com/ooyala/barkeep/wiki/Comparing-Barkeep-to-other-code-review-tools "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 | Barkeep is a code review system developed in Ruby by the company Ooyala <ref> GitHub [https://github.com/ooyala/barkeep/wiki/Comparing-Barkeep-to-other-code-review-tools "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 its 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. Even if Barkeep doesn’t have a feature the user needs, it is very feasible for the user to add it. | ||
'''Cost:''' Free | '''Cost:''' Free | ||
Line 37: | Line 42: | ||
== Collaborator == | == Collaborator == | ||
Collaborator is a code review tool built on CodeCollaborator by SmartBear. Unlike many other code review tools | 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 use Collaborator. <ref> SmartBear [http://smartbear.com/products/software-development/code-review "Code & Document Review - Collaborator"] </ref> | ||
'''Cost:''' Paid | '''Cost:''' Paid | ||
Line 45: | Line 50: | ||
* Syntax Highlighted Color Diffs | * Syntax Highlighted Color Diffs | ||
* Comments | * Comments | ||
* IDE & SCM (Source Control Management) Integrations | * [http://en.wikipedia.org/wiki/Integrated_development_environment IDE] & [http://en.wikipedia.org/wiki/Source_Control_Management SCM] (Source Control Management) Integrations | ||
* Reports | * Reports | ||
** Pending Code Reviews | ** Pending Code Reviews | ||
Line 64: | Line 69: | ||
* Commenting | * Commenting | ||
** Per-line Comments | ** Per-line Comments | ||
* SCM (Source Control Management) Integration | * [http://en.wikipedia.org/wiki/Source_Control_Management SCM] (Source Control Management) Integration | ||
* Syntax Highlighted Color Diffs | * Syntax Highlighted Color Diffs | ||
* Bug Tracking System Integration | * [http://en.wikipedia.org/wiki/Bug_tracking_system Bug Tracking System] Integration | ||
== Crucible == | == Crucible == | ||
Crucible is collaborative peer code review software developed by Atlassian. Crucible is a proprietary and primarily used by enterprise teams. <ref> Atlassian [https://confluence.atlassian.com/display/CRUCIBLE/Crucible+Documentation+Home "Crucible Documentation Home"]</ref><ref> Atlassian [https://www.atlassian.com/software/crucible/overview "Crucible"] </ref> | Crucible is collaborative peer code review software developed by Atlassian. Crucible is a proprietary and primarily used by enterprise teams. <ref> Atlassian [https://confluence.atlassian.com/display/CRUCIBLE/Crucible+Documentation+Home "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, which makes many other software tools, Crucible 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 [https://www.atlassian.com/software/crucible/overview "Crucible"] </ref> | ||
'''Cost: '''Paid | '''Cost: '''Paid | ||
Line 79: | Line 84: | ||
* Iterative Reviews | * Iterative Reviews | ||
* Auditing of Review Activity | * Auditing of Review Activity | ||
* Email and RSS Notifications | * Email and [http://en.wikipedia.org/wiki/RSS RSS] Notifications | ||
* Support to Review code before Check-In | * Support to Review code before Check-In | ||
* Review Reminders | * Review Reminders | ||
Line 87: | Line 92: | ||
** Progress Indicators | ** Progress Indicators | ||
* Syntax Highlighted Color Diffs | * Syntax Highlighted Color Diffs | ||
* SCM (Source Control Management) Integration | * [http://en.wikipedia.org/wiki/Source_Control_Management SCM] (Source Control Management) Integration | ||
== Gerrit == | == Gerrit == | ||
Gerrit is a web based code review tool. Gerrit started off at Google as 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 [http://code.google.com/p/gerrit/wiki/Background "Background - The history behind Gerrit Code Review"]</ref> | |||
'''Cost: '''Free | |||
'''Features''' | |||
* Git Integration | |||
* Side-by-Side File Comparison | |||
* Commenting | |||
** Inline Comments | |||
== Groogle == | == Groogle == | ||
Groogle is an open source collaborative code review tool which is available as a cross-platform web interface <ref> Groogle [http://groogle.sourceforge.net/index.php "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 [http://sourceforge.net/blog/groogle-a-sensible-source-code-review-tool/ "Groogle: A sensible source code review tool"] </ref>. The customization factor makes it extremely user friendly. | Groogle is an open source collaborative code review tool which is available as a cross-platform web interface <ref> Groogle [http://groogle.sourceforge.net/index.php "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 [http://sourceforge.net/blog/groogle-a-sensible-source-code-review-tool/ "Groogle: A sensible source code review tool"] </ref>. The customization factor makes it extremely user friendly. | ||
Line 98: | Line 112: | ||
'''Features:''' <ref> Groogle [http://groogle.sourceforge.net/index.php "About Groogle"]</ref> | '''Features:''' <ref> Groogle [http://groogle.sourceforge.net/index.php "About Groogle"]</ref> | ||
* Cross-platform Web app | * Cross-platform Web app | ||
* SCM (Source Control Management) Integration | * [http://en.wikipedia.org/wiki/Source_Control_Management SCM] (Source Control Management) Integration | ||
* File upload support for formats: zip, tar, gzip, and bzip2 | * File upload support for formats: zip, tar, gzip, and bzip2 | ||
* Pre/Post commit support | * Pre/Post commit support | ||
Line 108: | Line 122: | ||
* Security features | * 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 [http://jcodereview.sourceforge.net/ "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 [http://jcodereview.sourceforge.net/html/faq.html "FAQ"] </ref> | |||
'''Cost:''' Free | |||
'''Features:''' <ref> JCR [http://jcodereview.sourceforge.net/ "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 == | ||
Jupiter is an open source plugin for Eclipse, and therefore available for all platforms that support Eclipse. <ref> [https://code.google.com/p/jupiter-eclipse-plugin/ "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 [http://www.devx.com/enterprise/Article/31658 "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 == | ||
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 [http://malevich.codeplex.com/wikipage?title=Why%20the%20name "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 [http://malevich.codeplex.com/wikipage?title=Why%20the%20name "Why the name"] </ref>. | |||
'''Cost:''' Free | |||
'''Features:''' | |||
*In-line Commenting | |||
*Side-by-side file comparison | |||
*Change tracking | |||
*Email notifications | |||
== Perforce == | == 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 and review code before it is checked-in. <ref> Perforce [http://www.perforce.com/product/components/integrations/code-review-tools "Code Review Tools"] </ref> It also integrates third party tools such as Crucible, FishEye, CodeStriker, and Code Collaborator. <ref> Perforce [http://www.perforce.com/product/components/integrations/code-review-tools "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 == | ||
Rietveld is an open source web application for code reviews. Rietveld was inspired by Mondrian | Rietveld is an open source web application for code reviews. Rietveld was inspired by Mondrian an internal web application at Google used for code reviews. Mondrian is heavily used inside Google. 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 [https://developers.google.com/appengine/articles/rietveld "An Open Source App: Rietveld Code Review Tool"] </ref> | ||
'''Cost:''' Free | '''Cost:''' Free | ||
Line 139: | Line 199: | ||
* Extensible | * Extensible | ||
= Comparison = | = Example Code Review Tool Workflow = | ||
Here is the common workflow for a code review tool. Every step will not necessarily be found in every tool. | |||
1. Developer adds newly developed code to version control tool of choice | |||
2. Reviewers are notified of code changes | |||
3. Reviewers review code and add comments/changes for developer | |||
4. Developer views comments of reviewers | |||
5. Developer makes appropriate changes and adds code to version control tool of choice | |||
6. Changes are tracked in order to aid future development of the source code. | |||
[[File: Code_review_example_img.png]] | |||
= Conclusion: Tool Comparison = | |||
== Functionality == | == Functionality == | ||
{| border="1" class="wikitable" | {| border="1" class="wikitable" | ||
|+ Comparison of code review tools | |+ Comparison of code review tools | ||
! | ! | ||
! Maintainer | ! Maintainer | ||
! License | ! License | ||
! Developed In | ! Developed In | ||
! Desktop Client vs Web App | ! Desktop Client vs Web App | ||
! Cost | ! Cost | ||
|- | |- | ||
! Agile Review | ! Agile Review | ||
| | | agilereview.org || Open Source || || Desktop Client (Eclipse) || Free | ||
|- | |- | ||
! Barkeep | ! Barkeep | ||
| | | Ooyala || Open Source || Ruby || Web Application || Free | ||
|- | |- | ||
! Collaborator | ! Collaborator | ||
| | | SmartBear || Proprietary || || Desktop Client || Paid | ||
|- | |- | ||
! Code Striker | ! Code Striker | ||
| | | codestriker.sourceforge.net || Open Source || Pearl || Web Application || Free | ||
|- | |- | ||
! Crucible | ! Crucible | ||
| | | Atlassian || Proprietary || Java || Web Application || Paid | ||
|- | |- | ||
! Gerrit | ! Gerrit | ||
| | | code.google.com || Open Source || Java || Web Application || Free | ||
|- | |- | ||
! Groogle | ! Groogle | ||
| | | groogle.sourceforge.net || Open Source || PHP || Web Application || Free | ||
|- | |- | ||
! | ! JCR | ||
| | | jcodereview.sourceforge.net || Open Source || Java || Web Application || Free | ||
|- | |- | ||
! Jupiter | ! Jupiter | ||
| | | code.google.com || Open Source || Java || Desktop Client (Eclipse) || Free | ||
|- | |- | ||
! Malevich | ! Malevich | ||
| | | malevich.codeplex.com || Open Source || || Web Application || Free | ||
|- | |- | ||
! Perforce | ! Perforce | ||
| | | perforce.com || Proprietary || Multiple || Both || Paid | ||
|- | |- | ||
! Rietveld | ! Rietveld | ||
| | | Google App Engine || Open Source|| Python || Web Application || Free | ||
|- | |- | ||
! Review Board | ! Review Board | ||
| | | reviewboard.org || MIT || Python || Web Application || Free | ||
|} | |} | ||
== Features == | == Features == | ||
This compares the tools based on the most common and valuable features for a collaborative code review tool. | |||
'''Syntax Highlighted Color Diffs''': Syntax highlighting is where text editors will highlight categorize certain portions of text by showing them in different colors or fonts. This is especially useful for source code, for example: it can color method names a different color than the function text. Color Diffs is a special type of syntax highlighting which highlights the changes that have been made to the source code (usually because of a review comment) so that you can see the differences between the original and changed file. | |||
'''Email Notifications:''' This is simply an automated system which notifies developers that code has been reviewed and comments have been made for them to review and make any necessary updates. | |||
'''Commenting:''' This is the most necessary feature of code review tools because it is the basis for which reviewers can communicate what is wrong with the code to the developers. Commenting can range anywhere from standard in-line commenting, to block commenting, to complex conversation commenting. | |||
'''SCM Integration:''' This is a feature which allows multiple users to work on the same code from one central location without writing over other developers' updates. This is important for code review, because changes will be made constantly to source code during the review to fix problems, so reviewers will have to download the current code before each review to make sure that they have the latest revision. | |||
'''Side-by-side File Comparison:''' This valuable feature allows reviewers to see the original source code directly next to the current source code so that the changes can be easily identified in one view. This would make it easier for reviewers to make sure that the change has been implemented correctly. | |||
"*" denotes a feature. | "*" denotes a feature. | ||
{| style="width: 60%; height = 100px;" | {| style="width: 60%; height = 100px;" | ||
Line 202: | Line 286: | ||
{| border="1" class="wikitable" | {| border="1" class="wikitable" | ||
|+ | |+ 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 | ||
| | | * || || * || || * | ||
| | |||
|} | |} | ||
Below are situations in which the various types of code review tools might be best used. | |||
'''Open Source vs. Proprietary''' | |||
For enterprises some of the proprietary tools which typically cost such as Crucible and Collaborator would probably be best. On the other hand for users outside the enterprise setting such as students and open source developers, many of the open source tools would probably be a better fit since these tools usually do not cost. | |||
'''Hackable''' | |||
Code review tools such as Barkeep and Rietveld allow the user to make modifications to the code base since they are self hosted. These are great tools to use if the user finds that no other code review tool meets their exact needs because the user can simply add any functionality they'd like. | |||
'''Reporting''' | |||
If metrics is important to a team they may want to go with one of the few code review tools that provide this functionality. A few tools have the ability to generate reports based on various metrics related to code review. These tools are Collaborator, Crucible, and JCR. | |||
As can be seen no two code review tools are the same. The best code review tool would vary based on the needs of the users because each tool has its strengths and weaknesses. When shopping for a code review tool the user needs to think about what are the most important features in a code review tool then choose the tool that best satisfies these needs. | |||
= References = | = References = | ||
<references/> | <references/> |
Latest revision as of 03:30, 25 September 2013
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, side-by-side file comparison, and SCM (source control management) integration.
Code review is very important to software developers because it helps debugging go faster, it makes code easier to maintain, and it enforces standard coding practices. However, code review has several stigmas attached to it including long meetings, and potentially stressful criticism from your peers. Code review tools do the job to make code review more feasible, and even enjoyable. Benefits of using these tools include easy collaboration; no more in-person meetings; recordings of quantitative metrics which managers can review; historical reports of changes and comments; and, a standardized process for conducting reviews across the company or group of developers <ref> [SmartBear.com http://smartbear.com/SmartBear/media/pdfs/WP-CC-Peer-Code-Review-An-Agile-Process.pdf "Peer Code Review: An Agile Process"] </ref>. This takes the stress out of code review, and makes it available for easy everyday use on a personal computer.
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
- Commenting
- Inline Comments
- Reply to Comments
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 its 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. Even if Barkeep doesn’t have a feature the user 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 use 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, which makes many other software tools, Crucible 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 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 and 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 an internal web application at Google used for code reviews. Mondrian is heavily used inside Google. 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
Example Code Review Tool Workflow
Here is the common workflow for a code review tool. Every step will not necessarily be found in every tool.
1. Developer adds newly developed code to version control tool of choice
2. Reviewers are notified of code changes
3. Reviewers review code and add comments/changes for developer
4. Developer views comments of reviewers
5. Developer makes appropriate changes and adds code to version control tool of choice
6. Changes are tracked in order to aid future development of the source code.
Conclusion: Tool Comparison
Functionality
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.
Syntax Highlighted Color Diffs: Syntax highlighting is where text editors will highlight categorize certain portions of text by showing them in different colors or fonts. This is especially useful for source code, for example: it can color method names a different color than the function text. Color Diffs is a special type of syntax highlighting which highlights the changes that have been made to the source code (usually because of a review comment) so that you can see the differences between the original and changed file.
Email Notifications: This is simply an automated system which notifies developers that code has been reviewed and comments have been made for them to review and make any necessary updates.
Commenting: This is the most necessary feature of code review tools because it is the basis for which reviewers can communicate what is wrong with the code to the developers. Commenting can range anywhere from standard in-line commenting, to block commenting, to complex conversation commenting.
SCM Integration: This is a feature which allows multiple users to work on the same code from one central location without writing over other developers' updates. This is important for code review, because changes will be made constantly to source code during the review to fix problems, so reviewers will have to download the current code before each review to make sure that they have the latest revision.
Side-by-side File Comparison: This valuable feature allows reviewers to see the original source code directly next to the current source code so that the changes can be easily identified in one view. This would make it easier for reviewers to make sure that the change has been implemented correctly.
"*" denotes a feature.
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 | * | * | * |
Below are situations in which the various types of code review tools might be best used.
Open Source vs. Proprietary For enterprises some of the proprietary tools which typically cost such as Crucible and Collaborator would probably be best. On the other hand for users outside the enterprise setting such as students and open source developers, many of the open source tools would probably be a better fit since these tools usually do not cost.
Hackable Code review tools such as Barkeep and Rietveld allow the user to make modifications to the code base since they are self hosted. These are great tools to use if the user finds that no other code review tool meets their exact needs because the user can simply add any functionality they'd like.
Reporting If metrics is important to a team they may want to go with one of the few code review tools that provide this functionality. A few tools have the ability to generate reports based on various metrics related to code review. These tools are Collaborator, Crucible, and JCR.
As can be seen no two code review tools are the same. The best code review tool would vary based on the needs of the users because each tool has its strengths and weaknesses. When shopping for a code review tool the user needs to think about what are the most important features in a code review tool then choose the tool that best satisfies these needs.
References
<references/>