8

Where I work, we have very rigorous code review standards, which is great. However, our process is very archaic so I'm looking for a tool that will help to make it a bit more efficient. I've looked at some likely candidates (Gerrit, Phabricator, etc.) but none of them seem to support our environment. I'm looking for something that supports:

  • Git (easy enough)
  • A single code review request that includes changes to multiple packages (in separate repositories, though the central repositories are all on the same host)
    • Implementing a feature potentially requires changes to the application itself, libraries used by the application, and integration tests
  • Attaching output from various test runs, code quality tools, etc. to verify that the change does not cause a regression and meets our quality standards.
  • A formal approval process

Currently, our code review process basically involves creating hand-crafted HTML documents with links to diffs displayed in Gitweb combined with a bespoke signing tool. Is there a tool with these features?

EDIT: To answer the question in the comments, the ideal solution would be free, open source, and run on Linux. However, we've also looked at other tools such as GitHub Enterprise that do not fit this definition. In other words, the right tool is more important than the environment.

  • Any restrictions on the OS side (Linux, Mac, Windows)? Andy budget, or must it be free? – Izzy Jun 12 '14 at 6:01
  • Have you had a chance to look at the tool options available in the git website itself? for example here: git-scm.com/downloads/guis – user4827 Jun 20 '14 at 4:23
  • Skimming through that link, it looks like most of those tools are primarily focused on displaying code, branches, diffs, etc. While that's really useful, it doesn't really satisfy our need for an actual review workflow tool. – jpappe Jun 23 '14 at 9:35
  • @jpappe did you ever find a solution? It seems we're facing a similar issue. – Holloway Feb 26 '15 at 11:09
  • @Trengot - in short; no. We are currently using GitLab, which does not really meet my requirements as described above. We've instead found it more practical to slightly modify the way that we work rather than try to find the perfect tool. – jpappe Feb 26 '15 at 11:43
4

I would strongly recommend Review Board having used it myself and knowing several other projects that have used it successfully.

Features:

  • Multiple reviewers
  • Flexible but formal workflow
  • Extensible via REST and Python APIs
  • Free download or hosting available, free community support or paid for support contracts.
  • Supports multiple VCS systems, (Mercurial, Git, Bazaar, Perforce, Subversion & CVS).
  • Use you own host or several on-line ones.
  • Web based interface avoids Reviewer OS issues.
  • Items other than code, (e.g.: screenshots, test output, documents, etc.), can be made a part of the review process as attachments.
  • from the Admin Manual repositories section. - "Review Board supports talking to multiple source code repositories of various types. A single Review Board server can be configured with nearly an unlimited number of repositories, making it useful in large projects and companies as well as small. These are managed in the Administration UI through either the database section or the Administrator Dashboard."
  • Written in Python using Django so the server can run on various platforms/OSs.
  • MIT Licence so you can customise or extend.

Screen Shot

  • 2
    Does it meet the other requirements, too? What makes it "recommendable"? Any personal experiences you could share? Would be great if you could include that ;) – Izzy Jun 12 '14 at 6:04
  • @Izzy - Will do. – Steve Barnes Jun 12 '14 at 6:06
  • 1
    Thanks for the recommendation. However, the fact that it supports multiple repositories does not mean that a single "review" can include changes to multiple repositories. I think I'll try playing around with it and see if the workflow is compatible. – jpappe Jun 12 '14 at 9:44
  • 2
    A single review request can only include changes to a single repository in Review Board. From what I've seen, Phabricator allows more control over the review process than RB does - for example having the concept of 'Blocking Reviewers'. – BCran Sep 14 '14 at 14:28
  • Also the biggest complaint about Review Board (by the users) is that since it was designed as a post-push review tool (not intended to gate the changes being pushed), the approval feature is very weak. Anyone can click the approve button, and approval cannot be revoked. You also can't see if individual users have approved without scrolling through the whole event log, you can only see the number of times the approve button has been clicked by anyone. – mtalexan Jan 30 '18 at 23:06
0

For what you're describing there isn't really a single tool, nor would you probably want one. What you want is a Code Review tool for the portion that reviews the code, a CI (continuous integration) tool or tools that handle validation, test builds, static analysis, code metrics, artifact generation, etc, a tool that controls what goes into your repository, and a tool that brings all these results together. In some cases one tool might provide multiple of these, while in others you might only get one of these features.
Common solutions have things like PerforceHelix, GitHub (cloud or locally hosted), GitLab (cloud or locally hosted), RhodeCode, etc as the central tool that handles the repository(ies) management and the results collection point. You then either install other tools that integrate with them or provide plugins to them to accomplish the additonal tasks like code review and CI.
For my company we have somewhat similar needs/goals. We have a self-hosted GitLab instance, then choose to integrate it with SmartBear Collaborator for rigorous code reviews, and Jenkins for our CI. With GitLab Enterprise (paid, but mostly open source) you have change gates called Merge Requests (they're called Pull Requests in GitHub parlance) that require approvals to merge into the master branch of your repo(s), and these can be dependent on the Enterprise-only "Pipelines". Pipelines, along with Runners are designed to implement your CI build steps and ensure test builds succeed, unit tests pass, etc. They're setup so you can have multiple steps in your Pipelines, so if you need to generate static analysis results and post a link to them for review, you can do so. Keep in mind that every single person has a different need in this area, so they provide the building blocks and it's up to you to stitch them together with yaml files and Web hook/API scripts to/from other tools.

If you have need of a rigorous review process, and want to be able to include changes across multiple repositories, one of the only tools I've found that does it well is SmartBear's Collaborator tool. There's a user-count-limited free version you can try out, and they have regular free Webcasts you can join to see how it works and ask questions about it (of a real and knowledgeable person). The code itself is unfortunately closed source, and beyond 10 users you have to pay for licenses, but they have integration support with GitLab (self and cloud hosted) and GitHub (cloud hosted only), as well as a couple other options I haven't looked too closely at.

Smartbear Code Collaborator

Features include
Customizable independent workflows (templates) specifying:

  • How many members of each role of up to 4 roles must be on a review.
  • Whether a role in the workflow is required to approve changes, optionally can, or doesn't approve at all
  • How many of a given role must approve the review (includes all, none, or a fixed number)
  • Unique names of the roles
  • Fields (drop downs, multi-selection, multi-line text) and field requirements (regex, length limits) for reviews
  • Checklists
  • Bug/Defect fields
  • Whether a post-approval E-Sign step is required by all members of one of the roles or not.

It keeps a running audit log of all actions by all users on all reviews that is mostly unmodifiable.
By directly uploading changes to it, you can have as many different repositories in a single review as you'd like, and all the repositories can be automatically identified (git repositories at least).
It's one of the few tools that does a good job of reviews on MSWord/OpenOffice/LibreOffice documents, and has a decent way to comment on both the documents and image file comparisons (floating pins).

Code Collaborator screenshot from Google Image search (screenshot from unknown Google Image search results)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.