Create one or more Java tools which:
- Generate code coverage information for an execution of one or
more Java classes. Code Coverage refers to a collection of data
based on source files, class files, and step tracing of the execution:
A class is classified as "under consideration" if the user specifies that
the class is to be included in the code coverage statistics results.
- which unique source lines and/or bytecode instructions that were
visited within the execution process for each class under
- source lines and/or bytecode instructions that exist within
the classes under consideration.
- The two types of data above must be stored
external to the tools. This allows for greater performance, and
easier bug checking. It also leads to a more UN*X like tool chain.
- Generate statistics based on the the collected code coverage data:
- ratio between the number of unique lines that were visited in the
execution process to the number of lines in the classes under
consideration, grouped by methods.
- ratio between the number of bytecode instructions that were
visited in the execution process to the number of bytecode
instructions in the classes under consideration, grouped by
- Additional statistics derived from the above data. This
includes per package, per class, and per method breakdown of the
statistics. Also included is ratios of covered lines to total
- The tools must be aware of the ClassLoader considerations:
different classes with the same name may be loaded by separate
ClassLoaders. Thus, the tools must have a method to discover differences
between classes other than class name alone.
- The tools must generate a final human-readable document, preferably
- There is no restriction in the requirements as to the earliest model
of a JVM. This is left as an implementation detail.