ReviewClipse is an ECLIPSE integrated, continuous code review tool developed at the Vienna University of Technology and presented at the EclipseCon 2009. In the last year ReviewClipse has gained increasing popularity and a growing user community. A lot of users have downloaded ReviewClipse and adopted the concept of continuous code reviews within their development teams. Our session includes an extended presentation of the concepts of ReviewClipse, show how the review tool integrates in the ECLIPSE environment and how changesets from the version control system can be used to review the source code more efficiently.
Code reviews have many benefits, most importantly to find bugs during the development phase, and to enforce coding standards. But traditional inspection methods consume a lot of time, hence developers are discouraged doing code reviews during their regular work. The planning of review meetings is hard or even impossible, because review teams are distributed across multiple countries or continents, having different time zones. Another problem is the delocalization of code in object-oriented programming languages. Inheritance, dynamic binding & co. make it hard to understand the code, because developers use foreign classes and frameworks, and the business logic is shared across them.
Based on the experiences from previous projects the Vienna University of Technology developed ReviewClipse, a code review tool which follows a different approach: The item under inspection is one changeset in the revision control system. Furthermore flexible author/reviewer assignments are defined, which allow to use different types of review models. The assignments may be done in a peer to peer manner, where developers inspect the code changes of one or more team members. Reading each others code has the consequence that developers also learn the code from their colleagues, thus supporting collective code ownership. As a result, a better code sharing and reuse will be more likely, the team's interaction and creativity will be encouraged. A more hierarchical approach would be to assign a senior developer to review the code for new or less experienced developers. The senior developer in the role of the reviewer may enforce coding standards and better code quality within the development team.
A special review editor is used to view the changesets from the version control system. The ECLIPSE integrated compare editor assists the reviewer to view the file differences in a more comprehensible form. The reviewer uses this compare editor to inspect the changes, and leaves his comment for the commiter of the changeset. To support task-oriented planning ReviewClipse allows to create Mylyn tasks based on defect lists. The reviewer may create a follow-up task for the original autor of the code if the inspection needs a rework phase. The review tool aligns with the basic concepts of the ECLIPSE environment, so the initial training will consume little time.
To support a wide range of development environments we have implemented adapters for the use of different versioning systems. ReviewClipse relies on changesets - the review item is one changeset in the revision control system. But there are versioning systems with different concepts, which do not have changesets at all or in a quite different manner. Our session will give some insights how we faced this problem and how the modularity of ECLIPSE helped us to implement the review tool.
Christoph started working in 2001 for an IT company in Vienna, where he gained first experience with industrial software solutions. In 2003 he decided to study Software Engineering on the Technical University of Vienna, where he gained his Bachelor of Science in 2007. In 2006 he joined a software project for the medical industry, where he got interested in Open Source software development and the Eclipse project, particularly in the Eclipse Rich Client Platform. Currently he is writing his master thesis about software reviews and the integration into the Eclipse IDE.
Mario Bernhart is a research assistant at the Vienna University of Technology. He is currently working in the field of software development, software quality assurance and software testing - both, from an academic and industrial perspective.