1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<document>
<head>
<name>Requirements</name>
<doc-version>$Date: 2003/05/04 06:40:10 $</doc-version>
<author>Matt Albrecht</author>
</head>
<body>
Create one or more Java tools which:
<OL>
<LI>Generate <i>code coverage</i> 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:
<OL>
<LI>which unique source lines and/or bytecode instructions that were
visited within the execution process for each class under
consideration.</LI>
<LI>source lines and/or bytecode instructions that exist within
the classes under consideration.</LI>
</OL>
A class is classified as "under consideration" if the user specifies that
the class is to be included in the code coverage statistics results.
<!--
<P>
<I>(Note: source lines may not be available for collection in all
circumstances. Thus, bytecode instruction data must be gathered
under all circumstances. This allows for a "apples to apples"
comparison, regardless of the source line availability.)</I>
</P>
-->
</LI>
<LI>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.</LI>
<LI>Generate statistics based on the the collected code coverage data:
<OL>
<LI>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.</LI>
<LI>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
methods.</LI>
<LI>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
lines.</LI>
</OL>
</LI>
<LI>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.</LI>
<LI>The tools must generate a final human-readable document, preferably
HTML.</LI>
<LI>There is no restriction in the requirements as to the earliest model
of a JVM. This is left as an implementation detail.</LI>
</OL>
</body>
</document>
|