Smart Bear Software
Welcome CodeCollaborator

" Our team balked at code reviews at first. Now we can't imagine working without Code Collaborator. "

—Brian Toombs
Cisco Systems®
Code Collaborator
Use
Read
FREE PAPERBACK BOOK!  Best Kept Secrets of Peer Code Review.  Free shipping in US.

Moving Parts in CodeCollaborator

Read on to learn about the pieces that make up CodeCollaborator and how they interact.

Moving Parts

The Server

As with most enterprise-class software systems, a server process acts as the hub, manager, and controller of information. The server has a web-based user interface where users and administrators can do everything — create and perform reviews, configure personal and system-wide settings and run reports.

Besides the web-based user interface, the server also hosts a Web Services server. This server is integrated into the same web server as the web-based user interface, so no additional configuration is necessary. You can use Web Services to integrate CodeCollaborator into any external systems (SCM server triggers, issue-tracking systems, reporting scripts, intranet portals, data-mining tools, etc.).

Other CodeCollaborator software (such as the command-line and GUI clients) also use this Web Services interface. We even supply a Java client library that provides an object-oriented interface to this system.

The server uses an external database to store all data and configuration. Currently CodeCollaborator supports MySQL, Oracle, Microsoft SQL Server, and an embedded database (Hypersonic) that is useful during trials.

Command-line Client

Developers will typically install the cross-platform command-line client. This tool lets you upload local files (and file-changes) into new and existing reviews.

Report-generators will also install the command-line client. Although all information in the system can be retreived through Web Services, we also support a rich set of reports in a variety of data formats (HTML, XML, CSV) with appropriate filtering options. You can access these reports through the command-line (as well as through the web-based user interface).

Windows GUI Client

Windows users have the option of installing a graphical client to complement the web-based user interface already provided by the server.

The Windows GUI Client provides all the functionality of the command-line client, but in a graphical interface. The client also supports a larger range of version control systems than does the command-line client.

In addition, the Windows GUI Client gives you a taskbar icon that updates to show you whether you have any pending tasks in CodeCollaborator.

Perforce® Integration

Perforce users will probably want to install the Perforce Client Integration tools. These are included in the command-line installer.

Integration with P4V and P4Win lets developers upload changelists into new or existing reviews just by right-clicking on the changelist. This works on both "pending" and "submitted" changelists.

We also supply a special tool for use as a Perforce server trigger. For example, you can use this to enforce a rule like "Every submit on this branch requires a review." You can also use this to automatically upload all submitted changelists into CodeCollaborator so that you can review code after it has been checked in. This can be especially useful with off-shore development groups.

Eclipse™ Integration

Our Eclipse Plug-in enables users to upload files to new and existing reviews directly from their Eclipse workspace. We also provide a view that updates to show you whether you have any pending tasks in CodeCollaborator.

Web Services API

The CodeCollaborator server publishes a Web Services API based on the widely-used XML-RPC standard. It is easy to communicate with the server on any platform and language.

The command-line and Windows GUI clients themselves use this Web Services API. In fact, we additionally wrap the API inside a type-safe, object-oriented, efficient data model and we provide libraries in Java so you can take advantage of the same technology for your integrations.

There are many reasons why you might want to integrate CodeCollaborator with other systems. An issue-tracker integration point might let you synchronize CodeCollaborator "defects" with issue-tracker "issues," or you might want to mirror review data (metrics/comments/file-diffs) into the associated ticket. A reporting integration point might let you mirror CodeCollaborator metrics into your existing reporting system (examples: defects/kLOC, defects/man-hour, kLOC/man-hour, number of defects found of different types or severities).