01: /*
02: * @(#)BytecodeCountMeasure.java
03: *
04: * Copyright (C) 2003 Matt Albrecht
05: * groboclown@users.sourceforge.net
06: * http://groboutils.sourceforge.net
07: *
08: * Permission is hereby granted, free of charge, to any person obtaining a
09: * copy of this software and associated documentation files (the "Software"),
10: * to deal in the Software without restriction, including without limitation
11: * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12: * and/or sell copies of the Software, and to permit persons to whom the
13: * Software is furnished to do so, subject to the following conditions:
14: *
15: * The above copyright notice and this permission notice shall be included in
16: * all copies or substantial portions of the Software.
17: *
18: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24: * DEALINGS IN THE SOFTWARE.
25: */
26:
27: package net.sourceforge.groboutils.codecoverage.v2.module;
28:
29: import net.sourceforge.groboutils.codecoverage.v2.IAnalysisMetaData;
30: import net.sourceforge.groboutils.codecoverage.v2.IAnalysisModule;
31: import net.sourceforge.groboutils.codecoverage.v2.IMethodCode;
32:
33: /**
34: * Processes methods for instruction-count coverage analysis. Currently, this
35: * does not support localization.
36: *
37: * @author Matt Albrecht <a href="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
38: * @version $Date: 2004/04/15 05:48:26 $
39: * @since January 26, 2003
40: * @see IAnalysisMetaData
41: */
42: public class BytecodeCountMeasure implements IAnalysisModule {
43: /**
44: * Returns the human-readable name of the measure.
45: */
46: public String getMeasureName() {
47: return "BytecodeCount";
48: }
49:
50: /**
51: * Returns the unit name for this particular coverage measure.
52: */
53: public String getMeasureUnit() {
54: return "instructions";
55: }
56:
57: /**
58: * Returns the text format used in meta-data formatted text. This should
59: * be the mime encoding type, such as "text/plain" or "text/html".
60: */
61: public String getMimeEncoding() {
62: return "text/plain";
63: }
64:
65: /**
66: * Perform the analysis on the method.
67: */
68: public void analyze(IMethodCode method) {
69: int instructionCount = method.getInstructionCount();
70:
71: for (int i = 0; i < instructionCount; ++i) {
72: IAnalysisMetaData amd = createAnalysisMetaData(i);
73: method.markInstruction(i, amd);
74: }
75: }
76:
77: private IAnalysisMetaData createAnalysisMetaData(int bytecodeIndex) {
78: return new DefaultAnalysisMetaData("Instruction "
79: + bytecodeIndex, "Didn't cover instruction "
80: + bytecodeIndex, (byte) 0);
81: }
82: }
|