__TOC__
= Getting Started  =

== Overview  ==

&nbsp; &nbsp;Review for Eclipse (R4E) is a set of Eclipse plugins that provide eclipse-integrated code and text review functionality. R4E supports reviewing files associated to Eclipse projects and optionally included under a Version Control System. Three review workflows are included (Basic, Informal and IEEE standard 1028-compatible Formal reviews). 

The main purpose of R4E is to review Source Code, especially Java and C/C++ Source code. Eventually, support for reviewing Data Models (based on EMF) will be included. R4E also aims to support multiple Version Control Systems (via Eclipse Team Providers). Git (implemented in Eclipse through EGit/JGit), and SVN (implemented in Eclipse through Subclipse) are the ones currently supported. 

The R4E User Interface includes three main components: '''R4E Review Navigator View''', '''R4E Properties View''' and '''R4E Context Menus''' 

<br> [[Image:R4E main.png]] 

<br> 

&nbsp; &nbsp;The '''R4E Review Navigator View''' is the main interface to R4E. It shows all the R4E elements in a hierarchical tree structure, or alternatively in a table-like structure for the elements under the currently active Review only.  The '''R4E Properties view''', using the generic Eclipse Properties View,  presents the properties and attributes attached to each R4E element represented in the Review Navigator view. Some elements values can be altered after creation, and some other are read-only and settable at creation time. The '''R4E Context Menu''' appears in Eclipse Context menus whenever it is possible to use R4E command is this particular context. Please refer to section 3 ("Tasks") below for more information.<br> 

&nbsp; &nbsp;Take note that it is strongly recommended to use the layout shown above for optimal user experience.  This means the R4E Review Navigator should be positioned on one side of the screen, the editor in the central position, and the R4E Properties view at the bottom.  For instance, it is not recommended to use the Review Navigator and the Properties view as tabbed view together, as selecting an element on the Review Navigation will automatically set the focus on the Properties view.
<br> 
=== R4E main interfaces ===
R4E interacts with the following features/plugins: 

*Mylyn Versions Connectors for Egit and Svn (via Subclipse)
*C/C++ Language support: CDT (Optional)
*Java Language support: JDT (Optional)
*LDAP Connector: R4E LDAP plugin 
*Email support: R4E SMTP connector 
*Meeting support: R4E VCalendar connector 
*General: EMF (for the Review meta-data)<br>
<br>

== Starting R4E  ==
To start up R4E, show the Review Navigator View e.g. using the Eclipse Window->Show View menu:<br>
To associate existing review groups see [[#Opening an Existing Review Group]]
 
[[Image:R4E show view.png]] 

<br>

== R4E Configuration  ==

The R4E Configuration can be entered by accessing the R4E Preferences Pages, which are part of the Eclipse Global Preferences. There are three R4E Preference Pages: '''R4E General Preferences''', '''R4E LDAP Settings''', and '''SMTP Hosts Definitions'''. 

=== R4E General Preferences  ===

R4E General Preferences page is split up into four tab sections.  Take note that the ''Restore Defaults'' and ''Apply buttons'' apply to the values displayed in all the tabs<br> 

====User Tab====

[[Image:UserPreferences.png]] 

<br> 

&nbsp; &nbsp;This is used to enter the current user details. 

The following elements are configurable

*User ID: The User ID is set by default to the login ID of the current session and can be modified to any String that can be used to identify the user. This field is mandatory.

*UserEmail: The User Email should be set to a valid email for the current user. The E-mail address is used to notify the user information about the reviews he is currently part of by Email, as configured in the SMTP Hosts Definitions section. Take note that if the LDAP Preferences are filled-in (see below) and a corresponding LDAP database can be resolved, then this field will be automatically be set based on the User ID entered. This field is also mandatory.

*Participants Lists and Participants:  Participants Lists are a group of users that can be added together as participant to a review.  To create a new Participant List, use the ''Add'' button for the Participant List table.  The ''Remove'' button can be used to remove a Participant List. Once a participant List is created, specific participants can be added to the selected list and removed by using the ''Add'' and ''Remove'' buttons of the Participants table, respectively .  Using the ''Add'' button will open a New Participant dialog that can be used to specify the users to add.  Refer to the ''Adding Participants to a Review'' section for more information on using the New Participants dialog.  After it is set up, a participant list can be used in any New Participant dialog and adding it as a participant will instead add all its participants values to the review.  Take note that participant lists are optional and participants can be added separately to reviews.

*Checkboxes:
**''Create Delta Elements...'' checkbox is used to control the display of file differences as elements in the Review Navigator.
**''Import Postponed Global Anomalies...'' checkbox is used to specify that global anomalies (i.e. anomalies not attached to a particular file) that are in state POSTPONED in all other reviews included in the parent Review Group should also be imported to the currently active Review, in addition to the local anomalies, when the ''Import Postponed Anomalies'' command is used.  See Postponed Anomalies section below for more information.<br> 

<br> 

====Groups Tab====

[[Image:R4E preferences general groups.png]] 

<br> 

&nbsp; &nbsp;This is used to specify the location of the data files that contain Review Group information. 
See below for more information on Review Groups. The Name and Description fields show additional information attached to the selected Review Group file. Typically, all R4E data files will be located on a shared network drive. Users can add one or multiple references to Group files to their workspace as needed using the ''Add ''button. Files can be removed from the workspace by pressing the ''Remove ''button. Files can be moved up or down in the list by clicking the corresponding button. This will affect the order in which the Groups are displayed in the Review Navigator.

&nbsp; &nbsp;If there is a version compatibility problem between the version of the Group file and the current R4E plugin version, where the R4E version is older than the Group file version, then this group cannot be used and the description field will show a version mismatch error.  Such errors can typically be fixed by upgrading the R4E plugins to their later version.

'''Note: Make sure the defined directory location is accessible and configured with read/write permissions for the team members involved in the review.''' 

<br> 

====Rule Sets Tab====

[[Image:R4E preferences general ruleSets.png]] 

<br> 

&nbsp; &nbsp;This is used to specify the location of the data files that contain Rule Set information. See below for more information on Rule Sets. The Name and Version fields show additional information attached to the selected Rule Set file. Typically, all R4E data files will be located on a shared network drive. Users can add one or multiple references to Rule Set files to their workspace as needed using the ''Add ''button. Files can be removed from the workspace by pressing the ''Remove'' button. Files can be moved up or down in the list by clicking the corresponding button. This will affect the order in which the Rule Sets are displayed in the Review Navigator. 

&nbsp; &nbsp;If there is a version compatibility problem between the version of the Rule Set file and the current R4E plugin version, where the R4E version is older than the Rule Set file version, then this ruleset cannot be used and the description field will show a version mismatch error.  Such errors can typically be fixed by upgrading the R4E plugins to their later version.

<br> 

====Filter Tabs====

[[Image:R4E preferences general filters.png]] 

<br> 

&nbsp; &nbsp;This is used to set-up default filters that will be applied to the Review Navigator view. See the Filters section below for the various filters descriptions. 

<br>

=== R4E LDAP Settings  ===

[[Image:R4E preferences ldap.png]] 

<br> 

&nbsp; &nbsp;This is used the specify configuration for an available LDAP database server that contains information about the users. The Server Information part contains LDAP server information (Host, Port, DN (Distinguished Name), and Login User Name and Password) to use. The Mandatory Parameters part contains mapping values for LDAP attributes that maps the User Id, Name and E-Mail parameters The Optional Parameters part contains mapping values for LDAP attributes that maps optional parameters that could exists in the database. 

This is optional. If no information is entered, LDAP functionality will be unavailable, but will not affect R4E otherwise 

<br> 

=== SMTP Hosts Definitions  ===

[[Image:R4E preferences smtp.png]] 

<br> 

&nbsp; &nbsp;This is used to specify the mail server(s) that will be used to send manual and automatic email notifications to the users. More than one server can be specified. Users can add one or multiple servers to their workspace as needed using the ''Add ''button. Servers can be removed from the workspace by pressing the ''Remove ''button. Servers can be moved up or down in the list by clicking the corresponding button. The primary server should always be the first on the list. 

<br>

=== R4E Capabilities ===

R4E uses Eclipse Capabilities to manage its functionalities. In order to use R4E, its capabilities must be enabled. This can be done by enabling R4E in the Eclipse ''Preferences-&gt;General-&gt;Capabilities'' preference page. 

[[Image:R4E capabilities.png]] 


=== Version Compatibility ===

In order to prevent compatibility problems between versions, R4E now implements a compatibility check.  This will prevent older versions of R4E opening new versions of the R4E metadata files.  Compatibility is checked independently for Review Groups, Rule Sets and Review elements when opening them, or when starting up the Review Navigator for Groups and Rule Sets.  There are basically three cases that can occur:

*Metadata version and R4E plugin data versions are the same:  In this case R4E opens the element normally.

*Metadata version is more recent than the R4E plugin data version:  This means that the element was created with a more recent version of R4E than the one currently being used.  In this case an Error message dialog is displayed and the element cannot be used.  The solution to this is typically to upgrade the R4E version to the latest one available.

[[Image:versionMismatchError.png]]

*Metadata version is older than the R4E plugin data version:  This means that the element was created with an older version of R4E than the one currently being used.  In this case an information dialog is displayed to highlight the fact and ask the user how to proceed.  There are 2 possible scenarios that can occur:

**The metadata is compatible with the current R4E plugin data version: In this case, the user can choose to cancel the action, upgrade the metadata version to the current R4E data version, which will permanently change the metadata version for all users, or keep the older metadata version and open the element in read-only mode.  When the element is open in read-only mode it is displayed with a top-right lock decorator in the Review Navigator View.

[[Image:versionMismatchInfo.png]]

**The metadata is not compatible with the current R4E plugin data version: In this case, the user can choose to cancel the action or upgrade the metadata version to the current R4E data version, which will permanently change the metadata version for all users.  Non-compatible Reviews under an upgraded (or compatible/read-only Review Group) will be displayed prefixed with "Unknown" tag.  There reviews cannot be used, and opening them will trigger an upgrade dialog.

Review Groups, Reviews and Rule Sets that have uncompatible versions mismatches will not be resolved.  They will be displayed in the Review Navigator with a question mark (?) decorator and their properties will not be available in the Properties View.  The only possible action on them is to open them to trigger the upgrading procedure.

<br>

== Eclipse Project Configuration  ==

*R4E can be used to create reviews that include files present in given Eclipse Projects.

*While R4E can operate on stand-alone Eclipse projects (i.e. outside of any Version Control System), it is recommended that it is used in conjunction with projects that are held within Revision Control. Currently, R4E supports Version-Controlled projects that are associated with Egit and Subclipse as team provider., For Git, the [http://wiki.eclipse.org/EGit/User_Guide "EGit/User Guide"] is the best place to find the information on how to create new repositories, work with existing repositories and importing Eclipse projects under and existing repositories into the Eclipse workspace.<br>

*Once the project is associated/connected to the team provider the project will display the project name and associated branch between brackets.

[[Image:ProjectWithTeamProvider.jpg]] 

<br>

== Tutorials  ==

To familiarize yourself with how R4E operates, three tutorials are provided, which focus on the different review types and their respective workflows. As we progress in doing the tutorials, more common functionalities are introduced (such as Notifications, Meeting Requests, Setting reviewed state, Disabling elements, Assigning participants etc.). 
 
=== Configuration and Set-up  ===

Before doing any of the tutorials, we will set-up R4E and configure it to do reviews. 

*Open the R4E Review Navigator view by going to the ''Window-&gt;Show View-&gt;Other...'' dialog.

[[Image:TutorialShowView.png]]

<br> 

*Select the ''R4E-&gt;Review Navigator'' view. An empty Review Navigator view should now be visible

<br> 

[[Image:R4E show view.png]]
 
<br> 

*Typically, users will use Review Groups and (optionally) Rule Sets already created. For now we will assume none is present and we will create one group.

*Go to the Review Navigator toolbar and click on the ''New Review Group'' icon. This should open the New Review Group dialog.

<br> 

[[Image:TutorialAddNewGroup.png]] 

<br> 

*Add information for the new Group. The folder should normally be set to a shared drive that will be accessible to all users. For this tutorial, we will set it to our local drive.

<br> 

[[Image:TutorialAddNewGroupDialog.png]] 

<br> 

*Once the Group is created it should show in the Review Navigator View tree. It will automatically be added to your tracking groups in the R4E preferences so that it will appear again next time you open Eclipse to use R4E.

*You can now open the Review Group by right-clicking on it and selecting the ''Open Element'' command. The Group icon should change from a grayed out icon to a multi-colored one.

*Go to the Eclipse R4E preferences and make sure your user identity is set correctly.

<br> 

[[Image:UserPreferences.png]] 

<br> 

*We will now create some Design rules that can be used during reviews. First create a new Rule Set by selecting the ''New Rule Set'' icon in the Review Navigator toolbar. This should open the New Rule Set dialog.

<br> 

[[Image:TutorialNewRuleSet.png]] 

<br> 

*Add information for the new Rule Set. The folder should normally be set to a shared drive that will be accessible to all users. For this tutorial, we will set it to our local drive

<br> 

[[Image:NewRuleSetDialog.png]] 

<br> 

*Now let's create a Rule Area for this rule set by right-clicking on the Rule Set we just created and selecting the ''New Rule Area'' from the context menu.

<br> 

[[Image:TutorialNewRuleArea.png]] 

<br> 

*In the dialog shown, set the Area Name

<br> 

[[Image:NewRuleAreaDialog.png]] 

<br> 

*Now create a Rule Violation under the Rule Are we just created

<br> 

[[Image:TutorialNewRuleViolation.png]] 

<br> 

*In the dialog shown, set the Violation Name

<br> 

[[Image:NewRuleViolationDialog.png]] 

<br> 

*Finally, create a new Rule under this Rule Violation

<br> 

[[Image:TutorialNewRule.png]] 

<br> 

*In the dialog shown, set the Rule values as follows:

<br> 

[[Image:NewRuleDialog.png]] 

<br> 

We are now ready to proceed to the tutorials. 

<br> 

<br>

=== Running the Tutorials ===

R4E provides 3 different ways to perform reviews:  Basic, Informal and Formal Review Types.  They will all be demonstrated in the tutorials below. Here's a brief description of each Review Type:

*[[#Basic and Informal Reviews workflows|Basic Reviews]]:  Basic Reviews do not use phases, anomalies written are stateless, and participant do not assume any roles.  These are used to do quick, small reviews.

*[[#Basic and Informal Reviews workflows|Informal Reviews]]: Informal Reviews do not use phases.  However anomalies written are stateful and their states can be tracked as the review progresses and they can be postponed to be eventually fixed in other reviews. All anomalies should be set to a terminal state before the review can be completed.  Participants have roles assigned to them.  Informal Reviews are typically used to do agile reviews.

*[[#Formal Review workflow|Formal Reviews]]: Formal Reviews are based on the IEEE Standard for Software Reviews (IEEE Std 1028-1997) standard.  They are divided into multiple phases (Planning, Preparation, Decision, Rework), and criterias should be met before transitioning from a review phase to another. As in Informal Reviews, the anomalies written are stateful, could be postponed, and ultimately need to be set to a terminal state before the review could be completed.  Formal Reviews are typically used in organizations that require a more organized review process.

For more information, please refer to the [[#Concepts]] section below.

==== Tutorial 1: Performing a Basic Review  ====

This tutorial shows how to use R4E by going through a very simple Basic Review. It also introduces how to add Review Items from a Commit to the Version Control System. 

*Using the setup created above, create a new Basic Review by right-clicking on the Group we created and selecting the ''New Review'' command.

<br> 

[[Image:TutorialAddNewReview.png]] 

<br> 

*This will show the New Review dialog

<br> 

[[Image:TutorialAddNewReviewDialog.png]] 

<br> 

*Once the Review is created, you will notice that new elements were added to the Navigator tree: The review itself, the global anomaly container, and the current user as a new participant to the review.

*You can now browse through the R4E property view, which will appear as soon as you select a new element in the Navigator tree.  You will notice that the General Properties tab for the review has the start date property set to when the review was created and that the end date property is set to ''(In Progress)'' to indicate that the review is still going on.

*It is now time to add contents to be reviewed. Contents can be added by selecting whole resources (e.g. files directly) or by using the ''Find Review Items'' command on Eclipse project if the project is connected to a Version Control System. Here we will assume that the Eclipse projects are connected to Git (using EGit) and we will use the ''Find Review Items'' command for the R4E context menu on a given project. Select a project connected to Git and right-click on it to use the ''R4E-&gt;FindReviewItems'' command.

<br> 

[[Image:TutorialFindReviewItems.png]] 

<br> 

*This should show the Find Review Items dialog for Git

<br> 

[[Image:TutorialFindReviewItemsDialog.png]] 

<br> 

*We will now pick the current Commit and add it to the review. The Review Navigator view should now show a new Commit Review Item, its children files and their deltas (changes).  Take note that if you do not see the deltas, make sure that the ''Hide Deltas'' filter is not set in the Review Navigator Drop-Down menu, ''Filters'' sub-menu.

<br> 

[[Image:TutorialNavigatorView1.png]] 

<br> 

*Let's say we are now done adding review items. At this point we could add new reviewers to the review and notify them that the items are ready for reviews. However, since this is a simple tutorial, we will pretend that we are also the reviewer for this review.

*To open the compare editor and perform the review, we can double-click on any of the file of delta element.  Let's pick the first delta of the first file. This will open the compare editor that will show the changes between the new version of the file after the file is committed to the version control system, and the predecessor version.  It will also position the cursor to the location of the change (or Delta) we selected in the Review Navigator and highlight it.

*Let's now create a new anomaly on the selected text. To do this, right-click on the selected text and use the ''R4E-&gt;New Anomaly'' command

<br> 

[[Image:NewAnomaly.png]] 

<br> 

*This should trigger the New Anomaly dialog

<br> 

[[Image:TutorialNewAnomalyDialog.png]] 

<br> 

*Now, let's pretend we are done and the anomaly that the anomaly we highlighted is dealt with. We can now mark this review as completed. To do this, select the Review Element and, in the R4E Properties view, set the ''Phase'' property in the view to ''Completed''.

*The review is now completed and we are done with this tutorial.

<br>

==== Tutorial 2: Performing an Informal Review  ====

This tutorial shows how to use R4E by going through a very simple Informal Review. It also introduces how to add Review Items manually, how to remove obsolete items from the Review Navigator view, and how to use Email notifications. 

*Using the setup created above, create a new Informal Review by right-clicking on the Group we created and selecting the ''New Review'' command.

*This will show the New Review dialog

<br> 

[[Image:TutorialAddNewReviewInformalDialog.png]] 

<br> 

*As in the basic Review tutorial above, the Review Navigator tree is updated with the new elements.  You will also notice that the current participant roles in the Participant Extra Properties tab are set to '''Organizer''' and '''Lead'''. This is the default and it can be changed if needed. Take note that the icons representing the participants in the Navigator View will change depending on the primary role of the participant. 

*It is now time to add contents to be reviewed. In the previous tutorial, we showed how to add a Commit Review Item from a project under revision control. Here we will show how to add a Resource Review Item. Let's say you have a brand new file, not necessarily under revision control, that you want to be reviewed.

*Assume we use a Java project. Open the Package Explorer view, right-click on a file within the target project and trigger the ''Add Review Item'' command from the R4E context menu.

<br> 

[[Image:TutorialAddReviewItem.png]] 

<br> 

The Review Navigator view should now show a new Resource Review Item, its children file and the selection, which in this case will span the whole file from the first to the last lines. 

*Now let's add another reviewer to this review by right-clicking on the participants container icon in the review navigator and selecting the ''New Participants'' command from the context menu

<br> 

[[Image:TutorialAddParticipant.png]] 

<br> 

*This will show the New Participants dialog.

<br> 

[[Image:TutorialAddParticipantDialog.png]] 

<br> 

*Let's fill in our participant ID in the top field and press the ''Add'' button.  The participant is added to the participant list

*We now select the participant entry in the list and we see all the parameters associated to this participant in the Basic and Extra Parameters sections.  Fill in the information field as shown and press ''OK'' to add the user as a participant to the current review.

*Note that we added this Participant as a reviewer only. We've also set the optional focus area.

*Now that we have added a participant, we will assign the review item we imported for him to review.  To do this, right-click on the Review Item and select ''Assign to Participant'' command.

[[Image:TutorialAssignParticipant.png]]

*This will trigger the ''Assign Participant'' dialog, which is similar to the previous ''Add Participant'' dialog and works in the same way.  We will enter the participant details.  Take note that assigning review elements to participants is optional.

[[Image:TutorialAssignParticipantDialog.png]]

*Once this is done, in the Review Item properties and all its children elements properties, you will note that the ''Assign To'' property is now set to the participant.

*Let's say we are now done adding review items. We will now notify the new Participant we added that the items are ready for review. To do this, right-click on the current review and choose the ''Send Email/Notification'' command. When the subsequent dialog appears, select the ''Notify Participants of New Items ready for Review''.

<br> 

[[Image:TutorialSendEmail.png]] 

<br> 

[[Image:TutorialSendEmailDialog.png]] 

<br> 

*This will trigger the Email Client dialog. You can review the contents of the message, modify it as you see fit, and press the ''OK ''button to send it. Of course, the destination email address(es) need to be valid for the email to actually be sent.

<br> 

[[Image:TutorialSendEmailClient.png]] 

<br> 

*Once this is done, the reviewer should receive the email and can start reviewing the code. So, let's say we are now the reviewer.  If we want, we can change the display of the Navigator View to show the current review in a more compact and table-like fashion.  To do this, select the ''Change Display'' command, located in the view menu.

[[Image:TutorialChangeDisplay.png]]

*The view should now look like this:

[[Image:TutorialTreeTableDisplay.png]]

*We see now that the Review elements to be reviewed are shown in an alternate way, with columns displaying file paths, assignees, number of changes and number of anomalies written on the review elements.  This display could be used at any time.  For now, we will return the original default Tree display using the same command again.

*We now want to log a general anomaly on the review. We right-click on the Global anomaly container icon in the Review Navigator view and we select the ''New Anomaly'' command from the context menu

<br> 

[[Image:TutorialAddGlobalAnomaly.png]] 

<br> 

*This will trigger the New Anomaly dialog.

<br> 

[[Image:TutorialNewAnomalyInformal.png]] 

<br> 

*Now we should see that the Anomaly was added to the Review Navigator view, prepended with the Anomaly state (which is ''ASSIGNED'' at this point). If we do not have any other anomalies to enter, we can indicate that we are done reviewing by setting the review as reviewed by us. To do so, right-click on the Review icon in the Review Navigator and use the ''Mark as User Reviewed'' command.

<br> 

[[Image:TutorialMarkUserReviewed.png]] 

<br> 

*Since we are done reviewing, a popup dialog appears to ask us to send a Completion Notification to the Review Owner (Lead). Click OK and send the notification email out. The Review Navigator view should now look like this (notice the little checkmarks that appeared on the Review and its children elements):

<br> 

[[Image:TutorialNavigatorViewInformal1.png]] 

<br> 

*Now, in order to complete the review, we need to resolve the anomaly that was raised. Select the anomaly icon in the Review Navigator view and look at the R4E Properties view detailed tab. We should see the following:

<br> 

[[Image:TutorialAnomalyProperties1.png]] 

<br> 

*We see that the optional class and rank are not set for this anomaly, we could have set them after creation, or we can set them here if we want. In order to resolve the anomaly, the author of the code should be notified and the reviewer, lead and author should work together in resolving the issue.

*Once the anomaly is resolved, we can set the Anomaly state to ''FIXED'' by changing the ''State ''combo box value in the R4E Properties view. Note that the ''Fixed by'' property (in the ''Participant Details'' expandable section) gets automatically set to the current user. This can be changed to any of the participants if needed.

*Let's pretend that the anomaly is resolved and add a comment to it saying so. Right-click on the Anomaly icon on the Review Navigator view and add a Comment by using the ''New Comment'' command from the context menu.

<br> 

[[Image:TutorialNewComment.png]] 

<br> 

*This will trigger the New Comment dialog.

<br> 

[[Image:TutorialNewCommentDialog.png]] 

<br> 

*We can now complete the review as we've done in the previous tutorial, by setting the ''Exit Decision'' field in the Review R4E Properties view-&gt;Detailed tab/Decision Information expandable section to ''Accepted'' and the Phase field in the Review R4E Properties view-&gt;Detailed tab to ''COMPLETED''.  Alternatively, we can also complete the review by selecting it in the Review Navigator and using the ''Progress Review'' Toolbar command:

[[Image:TutorialProgressReview.png]] 

*To remove this completed review from the Review Navigator tree so that is does not clutters the view, we can Disable it. To do that, first close the review by right-clicking on the Review element from the Review Navigator view and selecting the ''Close Element'' command form the context menu. Then, once the review element is closed, disable it by selecting the Disable element command in the same fashion.

<br> 

[[Image:TutorialDisableReview.png]] 

<br> 

*We are now done with this tutorial.

<br>

==== Tutorial 3: Performing a Formal Review  ====

This tutorial shows how to use R4E by going through a very simple Formal Review. It also introduces how to work with Linked Anomalies, Design Rules, Optional Review Parameters, Review time tracking, and how to use Meetings Notifications. 

*First we will add default projects and components to our review group. Select the Review Group icon in the Review Navigator view and go to the Group Detailed properties tab in the R4E Properties view. In the ''Project and Components'' expandable section, add Projects and Components to the Group by clicking on the ''Add'' buttons for the ''Available Projects'' and ''Available Components'' tables and typing in some values. We will also add a reference to the Rule Set we created in the setup in the ''Rule Sets'' expandable section.

<br> 

[[Image:TutorialReviewGroupProperties.png]] 

<br> 

*Using the setup created above, create a new Formal Review by right-clicking on the Group we created and selecting the ''New Review'' command.

*This will show the New Review dialog. In this case we will populate the Review optional elements as shown

<br> 

[[Image:TutorialNewReviewFormalDialog.png]] 

<br> 

*As in the other Review tutorials above, the Review Navigator tree is updated with the new elements.

*If you look at the Review Properties Detailed tab, you will notice that is display a ''Phase Map'' table. The phase map is only displayed for formal reviews and is used to track the progress of the review. At review creation, the ''PLANNING ''phase is the active one (highlighted in blue).

*It is now time to add contents to be reviewed. As in the basic tutorial review, we will add a Commit Review Item using the ''Find Review Items'' command.

<br> 

[[Image:TutorialFindReviewItems.png]] 

<br> 

*This should show the Find Review Items dialog for Git

<br> 

[[Image:TutorialFindReviewItemsDialog.png]] 

<br> 

*We will now pick the current Commit and add it to the review. The Review Navigator view should now show a new Commit Review Item, its children files and their deltas (changes)

<br> 

[[Image:TutorialNavigatorView2.png]] 

<br> 

*Now, as in the Informal review tutorial, let's add another reviewer to this review by right-clicking on the participants container icon in the review navigator and selecting the ''New Participants'' command from the context menu

<br> 

[[Image:TutorialAddParticipant2.png]] 

<br> 

*This will show the New Participants dialog.

<br> 

[[Image:TutorialAddParticipantDialog.png]] 

<br> 

*The participant is added exactly the same way it was done in the previous tutorial

*Let's say that we are done adding new items and participants for this review, we can now transition the review phase from ''PLANNING'' to ''PREPARATION'' by selecting the Phase combo box in the R4E Properties to the Review. Note that phases can only be changed if we are the phase owner, which we are in this case. We will now automatically be asked to set up a decision meeting by entering meeting details.

<br> 

[[Image:TutorialMeetingDialog.png]] 

<br> 

*Once the details are entered, the Email client dialog is shown, and upon clicking the ''OK ''button, a new notification of items ready for review, bundled with a meeting invitation will be sent to all participants.

*Now, in ''PREPARATION'' phase, the users can review the included items. Reviewers can send progress notification or ask questions to other participant by right-clicking on a Review Navigator element and using the ''Send Email/Notification'' command. Anybody can also add new Review Items to the review, which will automatically notify other participants with a ''New Item Ready for Review'' notification.

*Let's say we found that part of the new code is not correct, we can select the appropriate change (Delta) in the Review Navigator and directly write an Anomaly on it by right-clicking on the Delta and using the ''New Linked Anomaly'' command.

<br> 

[[Image:TutorialNewLinkedAnomaly.png]] 

<br> 

*This will show the ''New Anomaly'' dialog. For this anomaly, we will refer to an existing design rule. Expand the Extra parameters section and select the first design rule from the tree. Note that the text fields are set to the value of the anomaly selected.  We will also assign the anomaly and set a due date for it. 

<br> 

[[Image:TutorialNewFormalAnomalyDialog.png]] 

<br> 

*We are finished reviewing the files and we will now add the time we spent reviewing the files. We do this by selecting the participant element in the Review Navigator and going to its R4E Properties view Detailed tab, Time Management expandable section. In the ''Time Spent'' table, add the time we spent.

<br> 

[[Image:TutorialParticipantProperties.png]] 

<br> 

*As in the informal review tutorial, we now mark the review as User completed, which will trigger the sending of the completion notification to the review lead.

*The review lead can now move the Review Phase to ''DECISION'' in the same way the previous transition was done.

*In the decision phase, it is time to assess anomalies and if necessary assign them to participants so that they can be handled and fixed. Let's set our Anomaly to ''ACCEPTED'' and assign it to a participant. We do this by setting the appropriate values the R4E Properties Extra tab for the selected anomaly.

<br> 

[[Image:TutorialAnomalyProperties.png]] 

<br> 

*We are now done with all anomalies so we will set the review decision properties. In the Review element R4E Properties, let set the values as follows

<br> 

[[Image:TutorialReviewProperties.png]] 

<br> 

*We set the ''Exit decision'' to ''Accepted with follow-up'', since some anomalies need to be fixed. We also enter the decision participants and decision time spent values.  We now move the Review phase to REWORK in the same way we moved it previously.  The author can now start working on the anomaly raised.

*Once the anomaly is fixed, we can change its state to ''FIXED'' in the R4E Properties. The fix can now be reviewed by the reviewer, who can set it to ''VERIFIED''. Its properties should now look like this:

<br> 

[[Image:TutorialAnomalyProperties2.png]] 

<br> 

*At this point all anomalies are covered and we can complete the review by setting its phase to ''COMPLETED''.

*We are now done with this tutorial.

<br>

= Concepts  =

== Basic and Informal Reviews workflows  ==

R4E basic and informal reviews use a lightweight review process and can help to save time while performing reviews involving a small number of participants. It is also recommended to use them when using an agile methodology as development process. 

The main difference between Basic and Informal Reviews is that there is no Anomaly state tracking in Basic reviews, while anomalies in Informal reviews are stateful and need to be closed in one way of another before the review can be completed. 

The main differences of Basic and Informal reviews compared to Formal reviews are: 

*There are no review phases. Reviews are either Active or Completed. 
*Anomalies can be created as long as the review is Active. For example, the author can create anomalies as soon as the review is created. 
*The decision meeting is not mandatory. 
*It is possible to notify the author/lead of progress in logging anomalies several times in a review. The author/lead can then start fixing some anomalies before the end of the review. 
*Anomalies are assigned to the author by default on a per review basis.

There are several ways to perform basic and informal reviews since there are no formal review phases. The below picture describes a typical review that will be described in more detail. Dashed elements in the picture represent optional steps in this scenario. 

<br> 

[[Image:BasicInformalReview.png]] 

<br> 

=== Create new review  ===

In this scenario, the organizer wants artifacts to be reviewed by one colleague. The author first needs to create the review in R4E. As in formal reviews, this step involves naming the review, identifying participants/roles and identifying relevant input documentation. During the creation of the review, the organizer needs to specify that the review type is basic or informal. 

=== Identify what needs to be reviewed  ===

The organizer uses R4E to specify what needs to be reviewed. This step is performed like for formal reviews using R4E tools to automatically find artifact changes or by manually specifying portions of artifacts that need to be reviewed. The result is a collection of review items. 

=== Items ready for review  ===

The author notifies the reviewer that items are ready to be reviewed. This is done via an email notification that is generated from R4E. In this scenario, no formal meeting is scheduled. 

=== Review item examination, anomaly/time logging  ===

The reviewer examines review items and logs anomalies. The time spent doing this activity can be logged in R4E in an iterative way (e.g. every day). 

=== Progress notification  ===

=== Examine and fix/reject anomalies  ===

The author relies on the progress notification information to start the anomaly examination. As a result, anomalies can either be accepted or rejected. Accepted anomalies can then be fixed. 

In this scenario, the reviewer has completed a significant portion of the review (for example, a module/subsystem/feature) and wants to immediately inform the author about it. R4E is used to send a progress notification via an email containing the progress details to the author. Several progress notifications can be sent in a given review. 

=== Completion notification  ===

When the reviewer has completed the review item examination, R4E is used to send a completion notification via email. 

=== Examine and fix/reject anomalies  ===

The author relies on the completion notification information to complete the anomaly examination. As a result, anomalies can either be accepted or rejected. Accepted anomalies can then be fixed. 

=== Mark review completed  ===

When all anomalies have been fixed, the author can specify the exit decision and mark the review as completed. 

== Formal Review workflow  ==

R4E uses the IEEE Standard for Software Reviews (IEEE Std 1028-1997) for formal reviews. The process is broken down into four phases. 

This process can be adapted to your organization. It is possible to use R4E to perform large reviews with several participants and formal meetings. It is also possible to use R4E for smaller one-on-one reviews with no formal meetings. 

=== Planning Phase  ===

[[Image:FormalReviewPlanning.png]] 

During the Planning phase, the review organizer, lead and author(s) define the scope of the review. Together, they specify the list of review items. The review lead also takes care of the overall review scope and planning by specifying aspects like the participants, their roles, the review schedule, etc... 

<br> 

=== Preparation Phase  ===

[[Image:FormalReviewPreparation.png]] 

<br> 

During the Preparation phase, reviewers individually examine review items and record detected anomalies. This activity needs to be performed as preparation for the Decision phase. 

<br> 

=== Decision Phase  ===

[[Image:FormalReviewDecision.png]] 

<br> 

During the Decision phase, review participants meet and analyze all submitted anomalies. Together they agree on which anomalies should be accepted and fixed in this particular phase of the project. Anomalies can be rejected because they are invalid or duplicated. They can also be postponed to another project. All accepted anomalies are assigned to the relevant authors for the Rework phase. 

<br> 

=== Rework Phase  ===

[[Image:FormalReviewRework.png]] 

<br> 

During the Rework phase, authors fix all accepted anomalies assigned to them during the Decision phase. 

<br> 

== Author  ==

An Author is an R4E Participant that wrote the code being reviewed. Typically, authors are involved in fixing raised Anomalies. 

== Anomaly  ==

An Anomaly is any condition that deviates from expectations based on requirements specifications, design documents, user documents, standards, etc., or from someone's perceptions of experiences. R4E Anomalies are typically created by reviewers during the review. They can also be found during test, analysis, compilation, or by users of software products or applicable documentation. 

== Comment  ==

In the context of R4E, Comments are user commentaries that are associated to Anomalies as follow-up, or to provide complementary information. 

== Commit Review Item  ==

A Commit Review Item is a review item that represents the file versions included together in a commit to a Version-Controlled Repository. A commit review item includes the ancestor version (base) and committed version (target) of the files. Commit Review Items are added to a review by Using the ''R4E Find Review Items'' command on an Eclipse project. 

== Delta  ==

A Delta represents a single difference in a File Context between the base and target versions. A Delta can refer to content that was modified, added or removed within the file and can span one or multiple lines. 

== File Context  ==

A File Context represents a File included in the review. A file context includes references to the base (ancestor) and target (current) versions of the affected file. 

== Global Anomaly  ==

In the context of R4E, Global Anomalies are Anomalies that do not tie to a specific file or part of a file, but are rather applicable to the whole review or are general comments. 

== Lead  ==

A Lead is an R4E Participant that is responsible to monitor the progress of the review and coordinate the work of the various participants. It should also be the person that has the final say on the closure of the review. 

== Organizer  ==

An Organizer is an R4E Participant that create the review and puts together the Review contents. Most of the time, the lead and the organizer are the same person. 

== Participant  ==

A Participant is a user that is part at any given point of a review. A Participant can have one or more roles within the review. Possible roles includes Author, Lead, Organizer, or Reviewer 

== Participants List  ==

A Participant List is a collection of multiple potential users, with their IDs and emails, which can be grouped together and added as a unit to a review.

== Postponed Anomaly ==

A Postponed Anomaly is an Anomaly that has been written in a previous review and that was set to state POSTPONED (i.e. it was not fixed/addressed then).  Postponed anomalies can be imported in subsequent reviews to be addressed.

== Resource Review Item  ==

A Resource Review Item is a review item that represents a single Eclipse resource (typically a File). Resource Review Items are added to a review by manually selecting the affected file in the workspace 

== Reviewer  ==

A Reviewer is an R4E Participant that reviews the code under review. Typically, reviewers are involved in raising Anomalies and following up on their resolution. 

== Review Group  ==

A Review Group is a set of Reviews bundled together under the same directory and that have common factor(s) as determined by the user (e.g. Same Project, Product, Design Team, Organization, Time Span, etc.) 

== Review  ==

A Review is a collection of Review Items that are to be reviewed together, by the same reviewers, within a given time period. 

== Review Item  ==

A Review Item is a collection of file contexts that will be reviewed as part of the current review. There are two types of Review Items currently supported: Commit Review Items and Resource Review Items. 

== Rule  ==

A Rule represents a Design Rule that is to be enforced in the code. Design Rules should be enforced by the reviewers at review time. When a Rule is used in creating an anomaly, its values become the default values for the anomaly. 

== Rule Set  ==

A Rule Set is a collection of Design Rules that are bundled together as a unit. Rule Sets are associated to the Review Group in which they can be used 

== Rule Area  ==

A Rule Area is a container for Design Rules related to the same area. E.g. Java, C++, Testing etc. 

== Rule Violation  ==

A Rule Violation is a Container for the multiple design rules associated to a category. E.g. Format, Performance, Syntax, etc. 

== Selection  ==

A Selection represents the part of a File that was manually added to a review. A Selection can span one or multiple lines within a file, or could refer to the whole file itself. 

<br>

= Tasks  =

== Working with the Navigator View  ==

The R4E Navigator View is the main component of R4E. It shows all the information that is available to the user and it is also the place where most user commands are available. The Review Navigator information is organized in a hierarchical tree structure and is presented in a Navigator panel.  Elements shown in red are read-only. Commands are available in the view toolbar and in context menus that appear when right-clicking the navigator elements. 

<br> 

[[Image:ReviewNavigatorView.png]] 

<br> 

When a Review is open, the Navigator view can focus on and display the Review elements in an alternate display that show them in a more compact and table-like way.  Both representations can be toggled on by using the ''Change Display'' toolbar command.

<br> 

[[Image:ReviewNavigatorViewAlt.png]]

<br> 

=== Disabling and Restoring Elements  ===

When Review Navigator elements are not relevant anymore (e.g. completed reviews), they can be removed from the view by using the ''Disable ''command from the element's context menu. 

<br> 

[[Image:DisableElement.png]] 

<br> 

Disabled elements data is kept, but they will not appear in the navigator view anymore. Take note that currently it is not possible to completely remove references to an element once it is created. 

To see disabled elements in the Navigator view, go to the R4E Preferences Filter Tab and select the ''Show Disabled Elements'' checkbox and apply the preferences. The disabled elements will show in the Navigator grayed out and with the little disabled decorator icon [[Image:Dsbldovr tsk.gif]] 

Ideally, disabled elements should never be shown, but there could be a need to restore mistakenly disabled elements. To do so, first go to the Eclipse preferences R4E page, on the ''Filters'' tab and enable the ''Show Disabled Elements'' filter, then return to the Navigator view and select the ''Restore ''command from the disabled element context menu 

<br> 

[[Image:RestoreElement.png]] 

<br> 

=== Sorting Review Navigator Elements  ===

The Navigator elements can currently be sorted alphabetically or by review type, by selecting the appropriate sorter in the Review Navigator Toolbar menu. 

<br> 

[[Image:Sorters.png]] 

<br> 

=== Filtering Review Navigator Elements  ===

The Navigator view provides different filters that can be used to limit the visibility of elements within the navigator tree. Filters are available in the Review Navigator Toolbar menu. 

<br> 

[[Image:Filters.png]] 

<br> 

The filters available are: 

*''Show Reviews Only'': Show only Review Groups and Review elements 
*''Show My Reviews'': Show only Review Groups and Review elements in which the current user is a Participant 
*''Show Reviews for Participant...'': Opens a dialog box where a User ID can be specified. The Navigator will then show only Reviews in which this User is a Participant 
*''Show My Assigned Elements'': Show review elements that are unassigned or assigned to the current User 
*''Show Assigned Elements for Participant...'': Opens a dialog box where a User ID can be specified. The Navigator will then show only Review elements that are unassigned or assigned to the specified participant.
*''Show Unassigned Elements'': Show only review elements that are not currently assigned to any participant.
*''Show Anomalies Only'': Only show the Anomalies for the currently open Review and their parent containers 
*''Show My Anomalies'': Only show the Anomalies for the currently open Review that the current User created and their parent containers 
*''Hide Completed Reviews'': Hide all the reviews that are in phase ''COMPLETED''
*''Hide Reviewed Elements'': This filter will hide all elements that have been marked as Review by the current User 
*''Hide Rule Sets'': This filter will hide all Rule Sets elements and their children 
*''Hide Deltas'': This filter will hide all Selection and Delta elements. 
*''Remove All Filters'': Remove all currently applied filters and restores the full display of all enabled elements in the Navigator tree.

<br>

=== Setting Elements Reviewed State  ===

To help Users to keep track of the content that was reviewed it is possible to mark relevant Review Navigator elements as reviewed using the context menu Mark/Unmark as User Reviewed command. This will put a little done decorator [[Image:Revovr tsk.gif]] icon. The marking can be removed by using the same command to toggle the state. 

<br> 


=== Setting Elements Due Date  ===

A due date can be set for the Review and Anomalies elements to specify a latest date after which the review (or anomaly) should be completed (i.e. set to a terminal state).  After this date has passed, if the elements are still not completed, they will be highlighted in the Review Navigator, using icon decorators, red text and additional info in their respective tooltips, so that the review participants are aware of the situation and can take action quickly.  Take note that does not apply to anomalies in basic reviews, since they are stateless.

<br>

=== Other Review Navigator Commands  ===

These other commands are also available from the Navigator view toolbar and/or drop-down menu: 

*''Progress Element'' [[Image:nxtstate menu.gif]]: Change the state of a stateful element (e.g. Review, Anomaly) to its next logical state.  This is a shortcut and can also be done through the R4E Properties view for the element.
*''Regress Element'' [[Image:prevstate menu.gif]]: Change the state of a stateful element (e.g. Review, Anomaly) to its previous logical state.  This is a shortcut and can also be done through the R4E Properties view for the element.  Take note that this is the only way to change the state of a ''COMPLETED'' Review.
*''Go Into'' [[Image:Focus menu.gif]]: This is a special filter that will take the selected element of the Navigator and put it at the root of the Navigator tree. This is useful to focus on a particular element and its children.
*''Collapse Navigator tree'' [[Image:Clpseall menu.gif]]: Collapse the current Navigator tree.
*''Expand Navigator tree'' [[Image:Expndall menu.gif]]: Expand the current Navigator tree to the lowest level. 
*''Select and Open Next Element'' [[Image:Nxtelem menu.gif]]: Move the selection to the next (lower) element in the tree and opens it in an editor if possible (for File Contexts elements and children) 
*''Select and Open Previous Element'' [[Image:Prvelem menu.gif]]: Move the selection to the previous (higher) element in the tree and opens it in an editor if possible (for File Contexts elements and children) 
*''Refresh Navigator Data'' [[Image:Refrsh menu.gif]]: Fetches data from disk and rebuilds the Navigator tree. This will also show new data that has been added by other users. 
*''Show UI Legend'' [[Image:icons-legend.gif]]: Shows a legend that displays and explains all R4E icons in a pop-up dialog.
<div><br></div> 

Take note that not all filters and toolbar commands are available on all Review Navigator representations.

<br>

== Handling Review Groups and Reviews  ==

=== Creating a Review Group  ===

When using R4E for the first time, the first thing to do is to create Review Groups that will hold the R4E review data. Typically, Review Groups include common settings that will be used for multiple reviews. For instance, one can create a Review Group for a design organization, for a given project or task etc. 

A given Review Groups is created only once, typically by a "super-user" selected among people that are part of the group. 

In order to create the Group, select the ''New Group'' icon in the Review Navigator Toolbar. 

<br> 

[[Image:NewReviewGroup.png]] 

<br> 

This opens the New Review Group dialog. 

<br> 

[[Image:NewReviewGroupDialog.png]] 

<br> 

*Add the Review Group Name and (optionally) a brief description in the appropriate text fields. 
*Select a shared folder location where team members have access and write permissions (i.e. Review Group shared folder) 
*Under the Extra Parameters section, more information can optionally be entered to further characterize the Group: Default Project, Default Components and Default Entry Criteria values will be available for all Reviews created under this Review Group. Rule Sets defines the available Rule Sets for Review created under this Review Group (see Rule Sets below).

<br> 

=== Opening an Existing Review Group  ===

When you create a new Review Group, its references are automatically included in your workspace. To add other Review Group references, open the R4E Preference Group Tab (Window->Preferences->R4E, then switch to tab "Groups")

<br> 

[[Image:R4E preferences general groups.png]] 

<br> 

*Add a new Review Group reference file by clicking the ''Add ''button and select the appropriate Group File. Take note that all Review Group filename end with "_group_root.xrer" suffix. 
*The Review Group Name and Description are also shown in the Preferences Group tab.

<br>

=== Creating a Review  ===

The Review is the main element of R4E. It is used to group together file that are to be reviewed. There are three type of reviews, Basic, Informal and Formal review (See concepts section for an explanation of the different types of reviews). 

To create a new Review, right-click on the parent Review Group under which you want to create the review and select the ''New Review'' Command from the R4E Context Menu. 

<br> 

[[Image:NewReview.png]] 

<br> 

This opens the New Review dialog. 

<br> 

[[Image:NewReviewDialog.png]] 

<br> 

*Add the Review Name and a brief description in the appropriate text fields. 
*Under the Extra Parameters section, more information can optionally be entered to further characterize the Review: 
**A due date can be set to specify a date before which the review should be completed
**Project and Components values can be selected from the values entered in the parent Review Group Default Projects and Default Components respectively 
**Entry Criteria is taken by default from the parent Review Group value 
**Objectives and Reference Materials can be set by the Review creator

<br> 

=== Opening and Closing of Review Groups and Reviews  ===

In order to be able to see the Review Group child Reviews, a Review Group must be open. Closed Review Group are shown with hollow Group icons. You can open a closed Review Group by right-clicking on it and selecting the ''Open Element'' command, or simply by double-clicking on it. &nbsp;Closing unused Review Groups make navigation easier and free up memory and resources, so the Groups should be closed when they are unused. 

Likewise, reviews can also be open and closed using the same mechanism. The only difference is that only one review (called the Active Review) can be open at any given time. Opening another Review closes the currently open one. 

Take note that Review Groups and Reviews are automatically open after they are first created. 

<br>

=== Adding Participants to a Review ===

Participants are automatically added to the current Review as soon as they add review items to it or create an anomaly. It is also possible to add them manually. 

To do so, right click on the parent review and select the ''New Participants'' Command from the R4E Context Menu. 

<br> 

[[Image:NewParticipant.png]] 

<br> 

This opens the ''Enter Participants details'' dialog. 

<br> 

[[Image:NewParticipantDialog.png]] 

<br> 

The dialog is divided into 2 sections:

*Participants:  This is where the participants are added.  Use the field above to enter the IDs on the participants to add, separated by semicolons (;).  If you defined Participants Lists in the preferences, the list name can be added here.  Once the participants are entered, hit the return key, or use the ''Add'' button to add them to the list of participants.  The participants will now appear in the participants list just below.  If present, participants lists from Preferences are resolved and their contents is added to the list as well.  If an LDAP database is setup up and configured in the preferences, R4E will also try to resolve the added users and automatically fetch the information from the database.  Participants can be removed from the list by using the ''Erase'' button, and the list can be reset by using the ''Clear'' button.  If an LDAP database is set up, it can also be accessed using the ''Find'' button (see below).  The participant id entered within the R4E review data will be in lower case and R4E will enforce that (this to prevent duplicated users Ids for the same user).
*Basic Parameters:  Once participants are added to the participants list.  This section displays the basic information for the currently selected entry in the list.  The email address can be edited, but not the Id or the participant details field (which in only filled if an LDAP database is set up and there is information about the user in it).

<br> 

If an LDAP database is configured and connected, the user information could be searched and filled-in automatically using the ''Find'' button, which will open the Find User Dialog 

<br> 

[[Image:FindUserDialog.png]] 

<br> 

Any field can be entered in the Search Filters section and by clicking the Search button, an LDAP query will be sent to the database. If any matches are found, the results will be displayed in the Query Results section.   Once the results are in, users can be added by double-clicking on them in the results table, or by selecting them and using the ''Add Users'' button.  Pressing the ''OK'' button will result in the users being added to the New Participants dialog participant list.

<br>

=== Creating a Review Item  ===

In R4E, Review Items are a collection of one or more files, or parts of files, that are to be reviewed. There are two types of Review Items that exist: Commit Review Items and Resource Review Items. 

<br> 

==== Creating a Resource Review Item  ====

This item type is created by manually selecting a workspace resource (i.e. File) or a portion of a resource (i.e. line ranges within a given file). 

*To create Resource review items for a whole file, right-click a File on a Package Explorer, Navigator or Project View and select the ''Add Review Item'' command from the R4E context menu.

<br> 

[[Image:AddResourceReviewItemFile.png]] 

<br> 

*To create Resource review items for a portion of a file, right click a line range selection in an editor or compare editor, or on an element of the outline view and select the ''Add Review Item'' command from the R4E context menu.

<br> 

[[Image:AddResourceReviewItemRange.png]] 

<br> 

Once a Resource Review Item is created, it will be shown in the Review Navigator. If you expand the Review Item, you will see the child elements: The file on which the Review Item is applied and the line range selection that is part of the item. 

<br> 

[[Image:ResourceReviewItem.png]] 

<br> 

==== Creating a Commit Review Item  ====

This item type is created by selecting files that were committed to a Version Control System repository. Currently, the only Version Control System supported is Git. 

To create a Commit Review Item, right click on a project attached to the Egit team provider (see Project Configuration) and select the ''Find Review Items'' command from the R4E Context menu. 

<br> 

[[Image:FindReviewItems.png]] 

<br> 

This will show the Version Control System Commit Dialog (Here shown for the Git connector). 

<br> 

[[Image:FindReviewItemsDialog.png]] 

<br> 

Use the ''Available Commits'' combo box to browse through all available commits and select one. For the selected commit, the commit information and affected files appear in the Commit Information and Committed Components sections respectively. 

Once a Commit Review Item is created, it will be shown in the Review Navigator. If you expand the Review Item, you will see the child elements: The file on which the Review Item is applied and, optionally if the option is selected in the preferences, the line ranges for the Deltas (or differences between the committed file and its direct ancestor) that are part of the Item. 

<br> 

[[Image:CommitReviewItem.png]] 

<br> 

The icons for the files that are new and were added in the commit will be shown decorated with a little [[Image:Addovr tsk.png]] icon The icons for the files that were removed in the commit will be shown decorated with a little [[Image:Removr tsk.png]] icon Files in the commit that are out of sync i.e. for which the version to review and the version present in the users workspace differ will be shown with the &gt; sign prepended to the filename. Such files can be reviewed, but to use the full navigatability provided by the editors, it is strongly recommended that the files be in sync with the workspace whenever possible. 

<br>
 
 When two Review Items have the same first line description, their displayed name in the Review Navigator will include a version number just after the Review Item type (e.g. Commit 1:... and Commit 2:..., where ... are two identical strings).  This will show the users that the two Review Items are two different versions of the same code change.  Of course, the first line of the Review Item description must not be changed for this function to work.
 
=== Comparing Review Items  ===

Is is possible to compare two arbitrary Review Items that are included in the same Review.  Typically this will be used to see the differences between two versions of a given code change.

In order to do this, select two Review Items in the Review Navigator (using Ctrl-Left click or Shift-Left click) and then right click on one of the items and select the "Compare Review Items" command from the context menu

[[Image:CompareReviewItems.png]]

This will open a Structural Compare Editor that will show the files versions that are different.  The file that belong to the most recently committed Review Item will always be the target files (on the left side) and the files belonging to the oldest Review Item will be the base files (on the right side).

Little + decorators show the files that were added in the newest Review Item, whereas - decorators show removed files.

To see the differences within a specific file, just double click on it and the lower side of the compare editor will be populated with the content differences between the files.  From the Compare Editor, it is also possible to modify the R4E annotation markers (see [[#Using Review Annotations and Inline Comments|R4E Annotations]]), on either side.

For instance, one could verify that anomalies that were written on a previous version of the code change are indeed corrected and change the state of the anomalies on the base version (right side) accordingly, as shown below.

[[Image:CompareReviewItemsEditor.png]]

=== Assigning Review Elements  ===

It is possible to assign specific review  elements (i.e. Review Items, File Contexts, Selections and Deltas) to specific participants.  To do so, use the context command ''Assign to Participant'' for the desired elements.  

[[Image:AssignParticipant.png]]

To remove an assignment, use the context command ''Unassign Participant''.

[[Image:UnassignParticipant.png]]

Take note that if a parent is assigned to given participants, then all its children will also be assigned.  It is possible to override the parent's values and to change the children's assignments by operating on the child element directly.

Assignments can also be managed by using the Properties view for the selected element.

=== Creating an Anomaly  ===

R4E Anomalies are raised by reviewers to flag problems or add comments on specific parts of the contents as part of the review process. 

Anomalies are added in a similar way Resource Review Items are, either from a selected Resource or from a portion/range of a resource, by selecting the ''Add Anomaly'' command from the R4E context menu. 

<br> 

[[Image:NewAnomaly.png]] 

<br> 

Anomalies that are directly tied to a specific selection/delta range can also be created by selecting the ''Add Linked Anomaly'' command from the context menu of the affected selection/delta in the Review Navigation View 

<br> 

[[Image:NewLinkedAnomaly.png]] 

<br> 

Anomalies can also be created at the review level. This is useful to flag problems that are not specifically tied to a given file or file part. To do this, use the ''Add Anomaly'' Command from the context menu of the Global Anomalies element in the Review Navigator view. 

<br> 

[[Image:NewGlobalAnomaly.png]] 

<br> 

This opens the New Anomaly dialog. 

<br> 

[[Image:NewAnomalyDialog.png]] 

<br> 

*Add the Anomaly Title and Description in the appropriate text fields. 
*Under the Extra Parameters section, you can also specify the class, rank, due date and participant that will be assigned to this anomaly.  If Rule Sets are associated to the parent Review Group, the Rule Sets hierarchy will be shown and, optionally, a design rule can be toggled selected/de-selected and if selected its values will be applied to this anomaly. This will override the previous Anomaly values.

<br> 

=== Cloning an existing Anomaly  ===

Anomalies can be duplicated so that their information is applied to a new location and/or file.  Anomalies are cloned be selecting a new range in an editor and using the ''Clone Anomaly'' contextual command

[[Image:CloneAnomaly.png]]

This will trigger the Clone Anomaly Dialog, where the source anomaly to clone can be selected.

[[Image:CloneAnomalyDialog.png]]

Once this is done, a new Anomaly will appear at the new location with the same information as the source one.

Anomalies can also be cloned to a specific Delta or Selection element by dragging and dropping them over the desired Delta or Selection, by using the Copy and Paste Review Navigator Contextual commands or by using the generic Copy (CTRL+C) and Paste (CTRL+V) hotkeys.  

[[Image:DragDropAnomaly.png]]

[[Image:CopyAnomaly.png]]

[[Image:PasteAnomaly.png]]

Take note that the child comments on the source anomaly are not copied to the new cloned anomaly.  It is however possible to copy the comments manually (see below).


=== Creating Comments on an existing Anomaly  ===

It is possible to add comments to an existing anomaly. This could be useful in discussing the anomaly or for tracking purposes. To create a Comment, use the ''Add Comment'' command on the context menu on the selected Anomaly. 

<br> 

[[Image:NewComment.png]] 

<br> 

This opens the New Comment dialog, where the comment can be added. 

<br> 

[[Image:NewCommentDialog.png]] 

<br>

=== Cloning existing Comments to an Anomaly  ===

As for anomalies, it is also possible to copy comment information to another anomaly.  It is done in a similar way than for cloning anomalies, by dragging and dropping the source comment(s) unto the target anomaly, by using the Copy and Paste Review Navigator contextual commands or by using the generic Copy (CTRL+C) and Paste (CTRL+V) hotkeys

[[Image:DragDropComment.png]]

[[Image:CopyComment.png]]

[[Image:PasteComment.png]]


=== Importing Postponed Anomalies  ===

Postponed Anomalies are Anomalies that were written in previous Informal/Formal Reviews, but were not handled then and were instead set to ''POSTPONED'' state.  If the current Review include files on which these anomalies were written, whether it is the same or a different version of a file, it is possible to import them in the current review so that they can be addressed.  Currently, only Postponed Anomalies that belong to Reviews under the same Review Group can be imported. Global Anomalies that were written in other Reviews in the same Review Group can also optionally be imported.

To import Postponed Anomalies, just select the current Review in the Navigator View and use the context menu:

[[Image:ImportAnomalies.png]]

R4E will scan all Reviews under the current Review Group and will copy all Anomalies in ''POSTPONED'' state that were written on files also included in the current Review, and also Global Anomalies in ''POSTPONED'' state written in other Reviews, if the option is selected in the preferences.  Once the command is done, the imported elements will appear on their own container elements under the Review element in the Review Navigator tree.

From then on, Postponed anomalies will behave like any other Anomaly and can be handled in the same way.  All changes except the state changes will be local to the imported anomaly i.e. changing the imported anomaly will not change the original one.  When a Postponed Anomaly is modified, the state changes will also be reflected in the original Anomaly (i.e. the one filed in the previous Review).  For instance if the imported anomaly is fixed, the original one will be marked as fixed to convey the fact that the postponed issue is now closed. 

Take note that Postponed Anomalies that have their state changed from POSTPONED will be disabled.  If they are set back to Postponed, they will be restored as Postponed elements.

Postponed Anomalies will not be imported/refreshed from Reviews that have non-compatible metadata (Prefixed by the Unknown Tag).  Likewise, it is not possible to alter a Postponed Anomaly if its original Review have non-compatible metadata without first upgrading it to the current metadata version (See [[#Version Compatibility]] for more details on version compatibility)

== Handling Design Rules  ==

=== Creating a Rule Set  ===

R4E support the use of Design Rules, to help reviewers enforce consistent design conventions and rules. A Rule Set is a container that includes multiple related Rules. Rule Sets are independently defined and can be shared among multiple Review Groups. Take note that the use of Design Rules is completely optional. 

To create a new Rule Set, select the New Group icon in the Review Navigator Toolbar. 

<br> 

[[Image:NewRuleSet.png]] 

<br> 

This opens the New Rule Set dialog. 

<br> 

[[Image:NewRuleSetDialog.png]] 

<br> 

*Add the Rule Set Version and Name in the appropriate text fields. 
*Select a shared folder location where team members have access and write permissions (i.e. Rule Set shared folder)

<br> 

=== Importing an Existing Rule Set  ===

When you create a new Rule Set, its references are automatically included in your workspace. To import other Rule Set references, open the R4E Preference Rule Sets Tab 

<br> 

[[Image:R4E preferences general ruleSets.png]] 

<br> 

*Add a new Rule Set reference file by clicking the ''Add ''button and select the appropriate Rule Set File. Take note that all Review Group filename end with "_rule_set.xrer" suffix. 
*The Rule Set Version and Name are also shown in the Preferences Group tab.

<br>

=== Creating a Rule Area  ===

In order to create Design Rules, a Rule Area et a Rule Violation containers first need to be created. 

Rule Areas represent a logical grouping of Rule Violations. They can, for instance refer to a specific language of element of the architecture. To create a Rule Area, right-click on the parent Rule Set and select the ''New Rule Area'' command. 

<br> 

[[Image:NewRuleArea.png]] 

This opens the New Rule Area dialog. 

[[Image:NewRuleAreaDialog.png]] 

<br> 

*Add the Rule Area Name in the appropriate text field.

<br> 

=== Creating a Rule Violation  ===

Rule Areas contain Rule Violation. A Rule Violation is a logical grouping and Design Rules. They refer to a specific problem highlighted by the Rule e.g. Syntax Error, Bad Naming Convention etc. 

To create a New Rule Violation, right-click on the parent Rule Area and select the ''New Rule Violation'' command. 

<br> 

[[Image:NewRuleViolation.png]] 

<br> 

This opens the New Rule Violation dialog. 

<br> 

[[Image:NewRuleViolationDialog.png]] 

<br> 

*Add the Rule Violation Name in the appropriate text field.

<br> 

=== Creating a Rule  ===

A Rule is the smallest unit in the Design Rule hierarchy. It refers to a specific code convention that is to be followed. The values of the rules are automatically set in anomalies that are created using the Rule as a reference. This can speed up and put some consistency in the review process. 

To create a New Rule, right-click on the parent Rule Violation and select the ''New Rule'' command. 

<br> 

[[Image:NewRule.png]] 

<br> 

This opens the New Rule dialog. 

<br> 

[[Image:NewRuleDialog.png]] 

<br> 

*Add the Rule Violation Id, Title and Description in the appropriate text fields. 
*Select the Rule Class and Rank in the appropriate combo boxes.

<br> 

== Working with Editors  ==

=== Opening files in editors ===

Once the Navigator view is open and Review Items are present. The items can be reviewed. Files are reviewed using various editor views to browse the content. Currently R4E is fully integrated with the Java JDT and C/C++ CDT editors and will take advantage of the special features these editors provide. &nbsp; 

Files can be open in editors by double-clicking on them or their children in the Review Navigator. By default, files belonging to resource review items will be open in single-file editors, whereas files belonging to commit review items will be open in a compare editor. If the file is open using the child Selection/Delta/Anomaly element, then the cursor will automatically be positioned to the start of the line range that corresponds to the element. Files and also be open in the single-file editor by using the ''Open File in Editor'' command from the selected element context menu. 

<br> 

[[Image:OpenFile.png]] 

<br> 

Once the file is open, anomalies can be added on the contents by selecting a range in the file and using the New Anomaly command in the R4E context menu. 

<br>

=== Using Review Annotations and Inline Comments ===

When to Review Navigator is open, Selections, Deltas and Anomalies elements will be shown as annotations in the Editor window left ruler.  The text area of the editor that correspond to the position range of the element will also be highlighted.

The [[Image:anomalyAnnotationMarker.png]] icons show anomalies and associated comments, the [[Image:deltaAnnotationMarker.png]] icons show Deltas and the [[Image:selectionAnnotationMarker.png]] icons show Selection elements.

[[Image:CompareEditorAnnotations.png]]

Additionally, the single editor will also show them as markers in the overview ruler on the right side.

[[Image:SingleEditorAnnotations.png]] 

The appearance of the annotations (highlighting colors, widgets etc.) can be chaged by going to the ''Window->Preferences'' under the ''General->Editors->Text Editors->Annotations'' preferences page

[[Image:AnnotationPreferences.png]] 

=== Navigating through and using R4E Annotations ===

In the compare editor, it is possible to navigate through the R4E Annotations by using the ''Goto Next Anomaly'' and ''Goto Previous Anomaly'' commands

[[Image:CompareEditorNavigateAnnotations.png]]

In the single editor, we use the normal annotation navigations command in the main R4E toolbar.  It it possible to restrict navigation to go only through the R4E Annotation by removing the navigation to other annotation type as shown below

[[Image:SingleEditorNavigateAnnotations.png]]

When hovering over the R4E annotation markers, information about the corresponding R4E element will be displayed in the hovering popup window.  It is also possible to use contextual commands on the associated R4E element in the hovering window.  This has the same effect as using contextual command on the element in the R4E Navigator.

[[Image:EditorAnnotationHover.png]]

Annotations are a nice and effective tool to help in performing reviews without having to go outside of the editor window.


== Working with R4E Properties  ==

Updates to any review elements are performed via the R4E Properties View. The R4E Properties view uses the Generic Eclipse Properties View to display the R4E Properties and will show up when any Review Navigator element is selected to display the properties that are associated with this element. 

The R4E Properties View is a tabbed properties view that consists of two tabs. 

*The ''Detailed Tab'' show properties in a custom view where they can be edited.
*The ''Classic Tab'' displays all properties at a glance, using the default Eclipse properties layout. Take note all properties will be read-only in this tab.

Editable properties can be changed directly in the properties view. Take note that some properties can only be set when the element is created, while others could be editable only under specific circumstances (e.g. a specific element state or review phase for Formal Reviews). 

By default, the Properties view is linked with the Review Navigator.  This means that if an element of the Review Navigator is selected, the Properties view will be activated and will show the element's properties.  It is possible, to remove this link by toggling on and off the ''Link with Properties'' command, which is located in the Review Navigator View drop-down menu.  

[[Image:LinkProperties.png]]

When the Review Navigator view in unlinked, the Properties view will not be started automatically upon element selection.  To activate the Properties view and see the element's properties in this case, right-click on the element and use the ''Show Properties'' contextual command.

[[Image:ShowProperties.png]]


A more detailed description of the properties for each element is shown below. 

=== Working with Review Groups Properties  ===

[[Image:ReviewGroupDetailedProperties.png]] 

Properties for the Review Group Element includes: 

*Directly in the property view:
**The Group name 
**The location of the root folder where the information is stored on disk 
**The Group description
**The Default Entry Criteria that will be set when creating child reviews 

*In the Projects and Components expandable section:
**The Available Projects that can be used in child reviews 
**The Available Components that can be used in child reviews 

*In the Rule Sets expandable section:
**The Applied Rule Sets that specify Design Rules that can be used when creating anomalies in child reviews.  If the ruleset is not loaded, a little disabled icon will appear besides its name in the table.  Otherwise a little checkmark icon will be displayed.

<br>

=== Working with Reviews Properties  ===

[[Image:ReviewDetailedProperties.png]] 

Properties for the Review Element includes: 

*Directly in the property view
**The Review name. 
**The current Review phase. Basic and Informal reviews can have only 2 phases, ''Started ''and ''Completed''. Formal reviews have multiple phases. Refer to the formal review section for more information. 
**A brief description of the review. 

*In the Review Details expandable section
**The review start (or creation) date. 
**The review due date (i.e. the date the review should be completed by).
**The review end (or completion) date. If the review is not completed, this will show as ''In Progress''. 
**Project Id. The value is taken for the list of possible values from the parent Review Group 
**Components. The values are taken for the list of possible values from the parent Review Group 
**The Entry Criteria that has to be met for the review to start. The default value is taken from the parent Review Group but can be modified here. 
**The Objectives for the review. 
**The Reference Materials (documents etc.) that can be used during the review 

*In the Decision Information expandable section (Informal/Formal reviews only)
**Meeting data for the decision meeting (Subject, Time, Duration, Location). This can be updated at any time using the ''Update ''button. The data can be fetched using the ''Refresh'' button 
**The Exit Decision that tell whether the review is accepted or if some rework has to be done 
**Participants that were part of the exit decision 
**The Total Time spent in the decision meeting.

*For formal reviews only, a phase map that show all phases and the progress of the review. Completed phases are highlighted in green and the current phase is highlighted in cyan. It also show the state and end date for the phase as well as the participant that is the phase owner. Only the phase owner can change the current phase and can thus update progress on the review.

=== Working with Review Items Properties  ===

[[Image:ReviewItemProperties.png]] 

Properties for the Review Item Element includes: 

*The Participant Id of the participant that added the Item 
*The Email address of the participant that added the Item 
*The Project(s) Id(s) the file(s) included in this Item belong to 
*The Id of the change e.g. he commit Id. This is only applicable for Commit Review Items. 
*The date the change was included e.g. the commit date. This is only applicable for Commit Review Items. 
*A brief description of the changes. For Commit Review Items, this is set to the commit message.
*The participants this Review Item is assigned to for review purposes.

<br> 

=== Working with File Contexts Properties  ===

[[Image:FileContextProperties.png]] 

Properties for the File Context Element include a section for the base (predecessor) and target (current) files. Each section contains: 

*The Name of the file.
*The Version tag or Id for the file.
*The Path Information for the file.
**The Repository path show the path to the remote version-controlled repository where the file is located.
**The Absolute path show the local absolute path to the file.
**The Project Relative Path show the relative path to the file in the Eclipse workspace.
*The participants this File is assigned to for review purposes.

<br>

=== Working with Selections and Deltas Properties  ===

[[Image:ContentsProperties.png]] 

Properties for the Selection and Delta Elements include the Position (i.e. the line range) where the selection or delta is located within the parent file and the participants it is assigned to for review purposes. 

<br> 

=== Working with Anomalies Properties  ===

[[Image:AnomalyDetailedProperties.png]] 

Properties for the Anomaly Element includes: 

*Directly in the properties view
**The Anomaly title. If this anomaly includes a design rule, this will be set to the title of the design rule by default. 
**The Description of the Anomaly. If this anomaly includes a design rule, this will be set to the description of the design rule by default.
**The Anomaly current state (Informal and Formal reviews only).
**The participant this Anomaly is assigned to for rework purposes.

*In the Anomaly Details expandable section
**The Creation Date for this Anomaly.
**The Position (i.e. the line range) where this Anomaly is located within its parent file. This is not applicable for Global Anomalies.
**The Anomaly Class. The class describes the type of problem that is highlighted by this Anomaly (Informal and Formal reviews only).
**The Anomaly rank. The rank sets the seriousness of the problem highlighted by this Anomaly (Informal and Formal reviews only).
**The Rule ID that Anomaly uses, if any (Informal and Formal reviews only).
**The Due Date for this anomaly to be resolved or addressed (Informal and Formal reviews only).
**The Reason for Rejection. This is only applicable for anomaly that are rejected (Informal and Formal reviews only).

*In the Participant Details expandable section
**The Id of the participant that added this Anomaly.
**The Id of the participant that decided how to handle this Anomaly (Informal and Formal reviews only).
**The Id of the participant that fixed this Anomaly (Informal and Formal reviews only).
**The Id of the participant that does the follow-up of this Anomaly (Informal and Formal reviews only).

=== Working with Comments Properties  ===

[[Image:CommentProperties.png]] 

Properties for the Comment Element includes: 

*The Participant Id of the participant that added the Comment 
*The Time when the Comment was created 
*The Comment contents

<br> 

=== Working with Participant Properties  ===

[[Image:ParticipantDetailedProperties.png]] 

Properties for the Participant Element includes: 

*Directly in the properties view
**The Participant Id.
**The Participant Email address.
**The Number of anomalies that were added by this Participant.
**The Number of comments to anomalies that were added by this Participant.
**The Focus Area for the Participant for this review.

*In the User Details expandable section
**Extra User details. This will show the raw information returned by a query to the LDAP database, if one is configured.

*In the Role Management expandable section
**The Participant roles for the current review. A participant can have more than one role concurrently. 

*In the Time Management expandable section
**A table that tracks the Time Spent by the participant reviewing the file. Entries can be added (or removed) by the participant at any time by using the ''Add ''(or ''Remove'') button. The table will also show the cumulative time spent in its header.

=== Working with Rule Sets Properties  ===

[[Image:RuleSetProperties.png]] 

Properties for the Rule Set Element includes: 

*The Rule Set version 
*The Rule Set name 
*The Path to the file that contains the Rule Set data

<br> 

=== Working with Rule Areas and Rule Violations Properties  ===

[[Image:RuleAreaProperties.png]] 

Properties for the Rule Are and Rule Violation Elements only include the name of the Area or Violation. 

<br> 

=== Working with Rules Properties  ===

[[Image:RuleProperties.png]] 

Properties for the Rule Element includes: 

*An Identifier that uniquely identifies this Rule. 
*The Title. The Anomaly that include this rule will have its title set to this by default. 
*The Description. The Anomaly that include this rule will have its description set to this by default. 
*The Class. The Anomaly that include this rule will have its class set to this by default. 
*The Rank. The Anomaly that include this rule will have its rank set to this by default.

<br>

== Using Key Bindings and Hotkeys  ==

==== Keys  ====

Eclipse allows you to customize your keyboard using ''General&gt;Keys'' preference page. Within Eclipse, key strokes and key sequences are assigned to invoke a command. 

==== Bindings  ====

R4E defines some keys as accelerator keys to help the user to perform reviews. Each command starts with ALT +4 as below: 

[[Image:DefaultKeyBindings.png]]

[[Image:DefaultKeyBindings2.png]]

<br> 

*ALT +4 A&nbsp;: Add Review Anomaly. Available from any editor View. There must be a selection in the editor to create a new Anomaly. 
*ALT +4 -&nbsp;: Collapses the Review Navigator View tree. 
*ALT +4 D&nbsp;: Change Display type.  Toggles between the Tree and Tree Table displays for the Review Navigator View. 
*ALT +4 =&nbsp;: Expand all elements of the Review Navigator View tree. 
*ALT +4 F&nbsp;: Opens a dialog used with the Version Control System connector to Find new Review Items. A Project needs to be selected first before using this shortcut. 
*ALT +4 I&nbsp;: Add Review Item. Available from any editor View. There must be a selection in the editor to create a new Review Item. 
*ALT +4 L&nbsp;: Add a new Linked Anomaly to the selected Review Navigator Selection/Delta element, if any.
*ALT +4 N&nbsp;: Progress the selected element (Review or Anomaly) to its next logical state 
*ALT +4 O&nbsp;: Open the default editor on the selected Review Navigator element, if any
*ALT +4 P&nbsp;: Regress the selected element (Review or Anomaly) to its previous logical state
*ALT +4 R&nbsp;: Refresh the Review Navigator View.
*ALT +4 S&nbsp;: Mark/Unmark the selected Review Navigator element as Reviewed, if any. 
*ALT +4 X&nbsp;: Remove (disable) the selected Review Navigator element, if any.

When selecting the accelerator key ALT + 4, if the user waits before selecting the next accelerator key, a commands list like the one shown above will be displayed at the bottom right corner of the Eclipse window.

The default Copy and Paste accelerators (CTRL+C, CTRL+V) are also available in the Review Navigator view to clone Anomalies and Comments.

== Using Notifications  ==

R4E support sending Meeting and E-mail notifications directly from the Eclipse workbench. Notification send are pre-filled with all the relevant information, making it easy to have standardized communication between the Review participants. 

Meeting notifications also can be used to schedule various meetings (e.g. decision meetings) automatically. 

<br> 

=== Using Email Notifications  ===

E-mail notification can be sent on Review Navigator elements by using the ''Send Email/Notification'' command from the selected element context menu. 

<br> 

[[Image:SendEmail.png]] 

<br> 

Once the command is triggered, a dialog appears asking the kind of notification to be sent. Take note that not all the options are available depending on the element selected, the review type and other factors. 

<br> 

[[Image:SendEmailDialog.png]] 

<br> 

Selecting one option and closing the dialog will show up a simple email client pre-filled with all the relevant information. The user is free to modify the information as he sees fit and send the email by clicking the ''OK ''button. 

<br> 

[[Image:SendEmailClientForm.png]]<br> 

<br> 

=== Using Meeting Notifications  ===

Meeting can also be scheduled directly in the workbench using R4E. Meeting data generated is in a VCalendar format that is attached to the Email that will be sent. Meeting data for decision meeting is mandatory for Formal Reviews and optional for other review types. 

To add meeting data, use the ''Update ''button in the Extra property tab, under the Decision Information section, for the selected Review element. This will open the Meeting Information dialog. 

<br> 

[[Image:MeetingInfoDialog.png]] 

<br> 

The meeting information to enter include the time of the meeting, the duration and location where the meeting will take place. To make the time entry easier, you can use the date selector button (the ''"..."'' button on the right side of the ''Starts'' text field). 

<br> 

[[Image:MeetingInfoDate.png]] 

The meeting info stored in the system can be retrieved at all times by using the ''Refresh ''button in the Extra property tab, under the Decision Information section, for the selected Review element. 

<br>

== Using Statistical Reports  ==

Statistical reports provide useful information to analyze the efficiency of one or several reviews.
To have this functionality available, you need to install the report feature on top of the R4E feature.

=== Generating Reports  ===

To generate a statistical report, select in the Review Navigator view one or more review, the right click and select "Generate Report"

[[Image:GenerateReport.png]]

Two types of report can be generated.

* Inspection record: when you select only one review to generate a report, this type of report will be initiated. You will see a list of anomalies at the end of the report.

* Global report: when two or more review are selected. It gives a summary of information based on the selected reviews.

The report folder is located under the group folder. The group folder is specified in the R4E Preferences,

If the user is not allowed to create a report in the existing group report directory, a new pop-up allows the user to select or to create a new directory to save the requested report. The user can enter a path or select the Browse button to select a location where to store the report. 

<br> 

[[Image:r4e_report_dir_selection.png]] 

<br> 


When the report generation is completed, a pop-up window will indicate where the report was stored.


<br> 

[[Image:GeneratingReport.png]] 

<br> 

Once the OK button is clicked, the HTML report will be displayed in the default web browser or in the Eclipse web browser depending on the Eclipse web browsing preferences.

=== Report Contents ===
<br> 

[[Image:Inspection1.png]] 

<br>
==== Report Summary ====
This section lists the reviews that were selected for the report. The review name, group, component, review item type, review type and project information are displayed for each review. The total number of reviews is also displayed at the bottom of this section when more than one review was selected.

==== Review Anomaly Statistics ====
This section provides the following anomaly counts.

*Totals: Total number of anomalies. 
*Ranking: Breakdown of minor and major anomalies. 
*Class: Breakdown of anomalies per class. 
*State: Breakdown of anomalies per state. 

==== Review Efficiency Statistics ====
This section provides several interesting review efficiency statistics divided in the following groups.

===== Review Items =====
*Total number of files: Total number of files for which review items have been specified. 
*Total Review Items: Total number of review items. 
*Total LOC: Total number of reviewed lines of code as specified by the review items. This total includes blank lines and lines with comments. 
*Number of Participants: Total number of participants. 
*LOC / Participant: Number of reviewed lines of code per participant. 
*Preparation Review Rate: Number of reviewed lines of code per hour spent to perform the examination of review items (preparation time). 
*Decision Review Rate: Number of reviewed lines of code per hour spent at the decision meeting. 

===== Review Anomalies =====
*Preparation Review Rate: Number of created anomalies per hour spent to perform the examination of review items (preparation time). 
*Decision Review Rate: Number of created and imported anomalies per hour spent at the decision meeting. The decision time is based on the meeting time multiplied by the number of meeting participants. For example, if a decision meeting lasts 1 hour and has 3 participants, the decision time is 3 hours. 
*Defect Density: Number of accepted anomalies (in states Accepted, Fixed and Verified) per reviewed lines of code. 
*Anomaly / Participant: Number of created anomalies per participant. 

===== Average Time Line =====
*Review Start: Review start date. This is only valid when only one review was selected for the report. 
*Review Completion: Review completion date. This is only valid when only one review was selected for the report. 
*Review Cycle: Average number of days for a review cycle (all review phases). 
*Planning Phase: Average number of days spent in the planning phase. This statistic is only valid for formal reviews. 
*Preparation Phase: Average number of days spent in the preparation phase. This statistic is only valid for formal reviews. 
*Decision Phase: Average number of days spent in the decision phase. This statistic is only valid for formal reviews. 
*Rework Phase: Average number of days spent in the rework phase. This statistic is only valid for formal reviews. 

===== Average Effort per Participant =====
*Preparation Time: Average time spent to perform examination of review items per participant. 
*Decision Time: Average time spent at the decision meeting in hours per participant who participated in the meeting. 
*Average Review Time: Average review time spent per participant.
 
===== Total Review Effort =====
*Preparation Time: Total time spent to perform examination of review items (preparation time). 
*Decision Time: Total time spent at the decision meeting. The decision time is based on the meeting time multiplied by the number of meeting participants. For example, if a decision meeting lasts 1 hour and has 3 participants, the decision time is 3 hours. 
*Total Review Time: Total review time.

===== List of Anomalies =====
This section is only available for the inspection record. The list of anomalies raised during the review with the following information:
File Name, line range, tile of the anomaly, class, ranking and the due date.

== Performing Reviews  ==

=== Performing Basic Reviews  ===

In R4E, basic reviews are the simplest form of reviews available. Basic reviews are stateless and the anomalies that are raised are also stateless. This means the participants must track progress of the Review and of the raised Anomaly externally. 

Typically, the workflow of a basic review will go as follows: 

#Review is created 
#Review Items are added, either by manually selecting resources or by automatically selecting files committed using the Find Review Items command on the target project .
#Optionally, review elements are assigned to specific participants.
#Organizer/Lead notifies reviewers that the items are ready for review. his can be done externally or by using the Email notification functionality provided by R4E 
#Reviewers review their items and raise anomalies as they encounter them. 
#At any time there could be communication between the reviewers and the authors of the code under review. Since there is no anomaly state tracking, they will have to agree on how to handle the anomalies raised. 
#Once all the reviewers are done and the anomalies are fixed, the review can be set as completed.

<br> 

=== Performing Informal Reviews  ===

Informal Review workflow is pretty much the same as the Basic Review workflow, so the steps described above still apply. However, the main difference is the fact that anomalies are now stateful and they need to be addressed/resolved before the review can be closed. 

The state diagram for the anomaly workflow is as follows: 

[[Image:InformalAnomalyStates.png]] 

*Assigned: This is the state set when the anomalies are created. This is the only non-terminal state 
*Deferred: The Anomaly will is valid but will not be fixed now, but at a later time 
*Duplicated: The Anomaly is a duplicate of another one 
*Rejected: The Anomaly is invalid and will not be fixed 
*Fixed: The Anomaly is valid and was fixed. This is normally a terminal state, unless the Review Exit Decision is set to Accepted with Follow-up, in which case the Verified state is the terminal one. 
*Verified: The Anomaly was fixed and verified by the participant that raised it. This state is normally optional, but all Anomalies that are fixed should be subsequently set to verified is the Review Exit Decision is set to Accepted with Follow-up.

<br> 

Once all the Anomalies are in a terminal state, the review can then be closed as it is done for Basic Reviews. 

<br> 

=== Performing Formal Reviews  ===

Formal Review follow the IEEE 1028-1997 standard. They are stateful and divided into Review Phases. As in Informal Reviews, anomalies created are also stateful. 

The state diagram for Formal review workflow is as follows: 

[[Image:FormalReviewStates.png]] 

==== Planning Phase  ====

The Planning phase is the active phase when the review is initially created. In this phase, the Review Organizer and/or Lead adds the contents that is to be reviewed, either manually or by selecting items from the Version Control System and adds participant that will be part of the review. Optionally, review elements are assigned to specific participants.  At the end of this phase, a notification is sent to the participant that the items are ready to be reviewed, and an invitation to a decision meeting set-up by the Organizer/Lead. Once this phase is completed, it is impossible to go back to it. 

==== Preparation Phase  ====

The Preparation phase is the phase where participants review the items included in the review and potentially raise anomalies. Once all reviewers have completed their tasks (and notified the Organizer/Lead), then the review can progress to the next phase. 

==== Decision Phase  ====

The Decision phase is where all the anomalies that were logged are analyzed and a decision is made on each of them on how to handle them. Potential outcomes include fixing the problem flagged by the anomaly, deferring it, or rejecting it if it is not valid. Once all the Anomalies are examined, a decision can be taken on how to close the review. The possible outcomes for the review at this stage is that it could be rejected and more reviewing/rework is necessary, it could be accepted as is, or it could be conditionally accepted, provided that the outstanding anomalies are fixed. 

==== Rework Phase  ====

The Rework phase is an optional phase, only used when a review is conditionally accepted, in which valid anomalies are fixed. Once the fixed are included, the anomalies will need to be re-checked to verify that the fixes are acceptable. When all the fixes are verified, the Review can be completed. 

==== Other Considerations  ====

Take note that there is a slight difference between the anomaly states in Informal Reviews and the ones used in Formal Reviews, as it can be seen below: 

[[Image:FormalAnomalyStates.png]] 

A new Anomaly in a Formal Review is set to ''CREATED ''by default. During the decision phase, it could be set to the same values as in Informal Reviews, and it can also be set to ''ACCEPTED'', which means that the anomaly is deemed valid and will be handled and fixed. There is no ''ASSIGNED ''state for Anomalies in Formal Reviews. The rest of the anomaly flow is essentially the same as with Informal Reviews.
<br>

= Advanced Topics  =

== Working with multiple patch set of the same commit in a review  ==
When creating a review, it is possible to add multiple commits. The commit might refer to different patch set or commit versions depending of the version control being used. If someone modified some files and generated a second commit review Item, (generating a patch set based on the initial commit) some files are modified but not necessary all files. <br>

When a reviewer creates a new anomaly on files not impacted yet in the second commit review item, we are referring to the same file version, whether the reviewer is using the file in the first or second commit review item, the anomaly is only associated to the last one. See image below: <br>
 
[[Image:ReviewNavigatorSamefileSameVersion.png]] 
 

If you raised an anomaly on a file having different version in each commit review item, then the anomaly will show on the one having the file version it is referring to. See image below: <br>

[[Image:ReviewNavigatorSamefileDiffVersion.png]] 

