CheckDep User Manual
Version 1.0.0
Introduction
The objective of CheckDep is to provide feedback on the consequences of
code changes
in terms of dependencies. A software developer can use CheckDep to
inspect introduced
and removed dependencies before committing new versions, and other
developers receive
summaries of the changed dependencies via e-mail. CheckDep's
visualization enables the
tool to help navigating large dependency graphs, and allows the user to
explore a
"meaningful" layout in which related artifacts are displayed closely
together.
Installation Instructions
- Install Java 1.6 SDK or higher.
http://java.sun.com/
- Install Eclipse 3.3 or higher.
http://www.eclipse.org/
- Download the relevant CheckDep plugin (jar) file according to
your
operating system
and copy the downloaded jar file into the "plugins"
folder of your Eclipse copy.
- Run the Eclipse application, and find the "Show View" item
within the
"Window" menu in the main menu bar.
- Select "Other..." option from the "Show View" menu choices.
- Select "CheckDep View" under "CheckDep Category" and press ok.
- The "CheckDep" view appears in the IDE. Maximize the view to make
all of
its features visible.
Using CheckDep
The CheckDep view consists of three
tab folders dividing the view to three different
sections: Input Tab,
Display Tab and the Log Tab
Input Tab
This tab folder is responsible
for collecting information from the user. It is divided into
four different sections, namely
First Revision, Second Revision, General Settings and
Dependency Log.
First Revision and Second
Revision sections contain the first project and second project
information entries
respectively. They could denote two different revisions of the same
project, or two unrelated
ones. The first section is meant to point to an old version of a
java project and the second
section reflects the newer version of the same project, but
this is simply a convention
assumed by the software in general, not a strict rule.
Workspace.
The software can access local projects or those hosted by a
Subversion repository. Either way, user
should provide a local address in the "workspace"
field, where the local copy
resides or the project files are to be checked out. By leaving
the workspace field blank,
CheckDep can be used as a regular fact extractor and only
extracts the dependency structure
of the other project section without performing a
dependency comparison (because only one
project is provided by the user).
SVN
URL. By checking/unchecking the checkbox in front of this field,
the user
specifies that the project files
are accessible locally/remotely (through Subversion
check-out).
Password.
Use this field to enter the password required to authenticate the
provided Subversion URL.
Explore
Button. Use this button to get a list of the available revisions
and the relative
information such as the
revisions' authors, commited dates and etc. for a given Subversion
URL. The list can be explored
using the combo box located in front of the "Target Revision"
label.
The explore button also fetches
the revision number of a local working copy specified by
the workspace field and shows it
on the field located in front of the "Current Revision" label.
If the working copy is not a
valid Subversion folder, the term "exported" will be shown
instead.
Update
Button. Press this button to check out the target revision
indicated by the
related combo box from the given URL in
the specified workspace. If the address specified
by the workspace is a valid Subversion
working copy then an "svn update" takes place to
update the working copy to the selected
target revision.
Compile
Button. CheckDep uses a fact extractor that is based on
Dependency Finder to
retrieve relations between methods and fields. Dependency Finder
operates on compiled java files, and
thus CheckDep also requires compiled classes as
input. Because in most cases compiled
classes are not kept in the repository, CheckDep
attempts to compile the checked-out
source files by itself. The "Compile Button" can be used
to compile the source files in the
workspace, and to generate a complete set of compile result
messages reported on the "Log Tab". The
compiler uses the relative source path specified in
the text box in front of the "Source
Folder" label to confine its search for the java source files
to the path which is a combination of
the workspace and the relative source path.
Classpath.
If a project requires certain libraries to be compiled, then the user
can specify the
local paths where those library files
exist in the "Classpath" field. If there are multiple
classpaths, the user must separate them
with a semicolon (';') within the Classpath field.
Force
Compile Checkbox. If the compile folder where the auto-generated
compiled files
reside already exists, then CheckDep
does not re-compile the project source files unless this
checkbox is checked, in which case the
compile folder and all of its contents will be
overwritten and the compilation will be
done from scratch.
Same
Checkbox. This check box exists only in the "Second Revision"
section. When it is
checked, it signals to the application
that the repository information (the URL, password, etc.
should be imported from the "First
Revision" section, meaning that both section use the same
repository.
GENERAL SETTINGS
Dependency
Type. User can specify the type of the dependency graph and the
level at which
the result will be displayed by
choosing one of the available options in this section. If the user
chooses "All", then a
comprehensive graph containing all kind of dependencies will be
generated.
Exclude
"java.*" Checkbox. Check this box to ignore the java classes and
methods
contained in java standard
libraries when evaluating the dependencies. All those elements whose
fully qualified name start with
the prefix "java." ―such as "java.lang.Object", "java.util.List" and
"java.util.List.add(Object o)"―
will be excluded from the result.
Extract
Button. By pressing this button the application attempts to
compile the existing source
files in both workspaces (without
reporting the compilation results to the "Log Tab"), and then
extract software dependencies of
both projects. After the extraction and possibly comparison
jobs are finished, statistical
information will be displayed in the "Dependency Log" section. If the
user decides to change the
dependency graph type, he/she can do so without pressing the
extract button again. Then by
pressing
the "Get Status" button in the "Dependency Log" section
located at the bottom of the
"General
Settings", the dependency log will be updated to show the
result for
the new settings.
Visualize
Button. Pressing this button causes the application to switch to
the "Display Tab",
where it present the result
generated by pressing the "extract button" visually. A dialog box will
pop up, allowing the control of
the visual layout preferences. The user can change the the
dependency graph type without
pressing
the extract button again. If the "visualize button" is
pressed more
than once without pressing the
"extract button" in between, its label changes into
"Re-visualize"
stressing the fact that the extracted dependencies
are untouched, and probably
only the dependency settings have
changed.
Name
Includes Textbox. This text field is used to filter the software
artifacts and dependecies
which are to be reflected in the
grahpical and textual results. If this textbox is left blank, no filter
will be applied. The user can
enter multiple strings separated by semicolons (';'), each
representing the "complete" name
of a package, class or method which is to be included in the
result. In order for a dependency
(edge) to be included in the result, it is required that at least
one of its incident vertices
(i.e. software artifacts) be a method or belong to a class or a package
whose name is specified in the
filter text.
RSF
Output Folder. Specifies the physical address at which the
textual result (RSF file) should
be saved.
Display Tab
This tab contains the display
window, where the graphicall result is shown. The vertices are
drawn as circles that could be
different in radius size, representing software artifacts (classes,
methods, etc.). Edges are drawn as the
directed lines connecting the circles and represent the
dependencies. The label of each
vertex denotes the name of the software artifact represnted by
the vertex, and the label of an
edge indicates the type of the dependency[ies] that edge
represents.
Grey colored vertices and black
edges respectively represent the artifacts and the dependencies
that are common in both projects
(untouched). Red vertices and edges respectively stand for
those artifacts and dependencies
that are present in the second project, but do not exist in the
first one. The blue vertices and
edges respectively represent those artifacts and dependencies that
exist in the first project, but
not the
second one. So if the first project is an early revision of a
project and the second one is an
older
revision of the same project, red color means "added" and
blue means "removed" and the grey (or
black) stands for "common" or "untouched".