C0 code coverage information

Generated on Wed Aug 01 14:04:26 -0300 2007 with rcov 0.8.0


Code reported as executed by Ruby looks like this...
and this: this line is also marked as covered.
Lines considered as run by rcov, but not reported by Ruby, look like this,
and this: these lines were inferred by rcov (using simple heuristics).
Finally, here's a line marked as not executed.
Name Total lines Lines of code Total coverage Code coverage
lib/constant_pool/cpinfo.rb 194 143
91.8% 
88.8% 
  1 require 'utils'
  2 require 'pool_helper'
  3 
  4 module YAJD
  5 
  6 module ConstantPool
  7 
  8 class CPInfo
  9 
 10 protected
 11     def initialize(pool, tag)
    def initialize(pool, tag)
    978   lib/constant_pool/strings.rb:35 in 'YAJD::ConstantPool::CUTF8Info#initialize'
    390   lib/constant_pool/cpinfo.rb:147 in 'YAJD::ConstantPool::CommonAttrs#initialize'
    286   lib/constant_pool/cpinfo.rb:130 in 'YAJD::ConstantPool::CNameType#initialize'
    260   lib/constant_pool/numbers.rb:36 in 'YAJD::ConstantPool::CLongDouble#initialize'
     82   lib/constant_pool/cpinfo.rb:78 in 'YAJD::ConstantPool::CClass#initialize'
     47   lib/constant_pool/strings.rb:14 in 'YAJD::ConstantPool::CString#initialize'
      9   lib/constant_pool/numbers.rb:7 in 'YAJD::ConstantPool::CIntegerFloat#initialize'

 12         @tag = tag
 13         @pool = pool
 14     end
 15 
 16     CLASS = 7
 17     FIELD_REF = 9
 18     METHOD_REF = 10
 19     I_METHOD_REF = 11
 20     STRING = 8
 21     INTEGER = 3
 22     FLOAT = 4
 23     LONG = 5
 24     DOUBLE = 6
 25     NAME_AND_TYPE = 12
 26     UTF8 = 1
 27 
 28     #TODO make it work using the class name (e.g.: CLASS => CClass)
 29     Classes = {
 30         CLASS => 'CClass',
 31         FIELD_REF => 'CFieldRef',
 32         METHOD_REF => 'CMethodRef',
 33         I_METHOD_REF => 'CIMethodRef',
 34         STRING => 'CString',
 35         INTEGER => 'CInteger',
 36         FLOAT => 'CFloat',
 37         LONG => 'CLong',
 38         DOUBLE => 'CDouble',
 39         NAME_AND_TYPE => 'CNameType',
 40         UTF8 => 'CUTF8Info'
 41     }
 42 
 43     def check_ref_utf(constant_pool, idx)
    def check_ref_utf(constant_pool, idx)
    264   lib/constant_pool/cpinfo.rb:138 in 'YAJD::ConstantPool::CNameType#validate'
     53   lib/constant_pool/cpinfo.rb:85 in 'YAJD::ConstantPool::CClass#validate'
     39   lib/constant_pool/strings.rb:23 in 'YAJD::ConstantPool::CString#validate'

 44         check_reference(constant_pool, idx, CPInfo::UTF8)
        check_reference(constant_pool, idx, CPInfo::UTF8)
    356   YAJD::ConstantPool::CPInfo#check_reference at lib/constant_pool/cpinfo.rb:49

 45     end
 46     def check_ref_class(constant_pool, idx)
    def check_ref_class(constant_pool, idx)
    368   lib/constant_pool/cpinfo.rb:155 in 'YAJD::ConstantPool::CommonAttrs#validate'

 47         check_reference(constant_pool, idx, CPInfo::CLASS)
        check_reference(constant_pool, idx, CPInfo::CLASS)
    368   YAJD::ConstantPool::CPInfo#check_reference at lib/constant_pool/cpinfo.rb:49

 48     end
 49     def check_reference(constant_pool, idx, expected_tag)
    def check_reference(constant_pool, idx, expected_tag)
    368   lib/constant_pool/cpinfo.rb:47 in 'YAJD::ConstantPool::CPInfo#check_ref_class'
    356   lib/constant_pool/cpinfo.rb:44 in 'YAJD::ConstantPool::CPInfo#check_ref_utf'
    200   lib/constant_pool/cpinfo.rb:169 in 'YAJD::ConstantPool::CMethodRef#validate'
    155   lib/constant_pool/cpinfo.rb:187 in 'YAJD::ConstantPool::CIMethodRef#validate'
     13   lib/constant_pool/cpinfo.rb:178 in 'YAJD::ConstantPool::CFieldRef#validate'

 50         obj = constant_pool.at(idx)
        obj = constant_pool.at(idx)
   1092   YAJD::ConstantPool::Pool#at at lib/constant_pool.rb:42

 51         if obj.nil?
 52             raise(ValidationError, "invalid constant pool index #{idx}")
 53         end
 54         if obj.tag != expected_tag
 55             raise(ValidationError, "invalid structure at #{idx} (needed #{expected_tag}, was #{obj.tag})")
 56         end
 57     end
 58 
 59 public
 60     attr_reader :tag
 61 
 62     def self.create_instance(pool, f)
    def self.create_instance(pool, f)
   2052   lib/constant_pool.rb:21 in 'YAJD::ConstantPool::Pool#initialize'

 63         tag = f.read_u1
        tag = f.read_u1
   2052   File#read_u1 at lib/ext/file.rb:6

 64         klass = Classes[tag]
 65         raise "unknown tag (#{tag})" if klass.nil?
 66         result = eval(klass).new(pool, tag, f)
        result = eval(klass).new(pool, tag, f)
    978   YAJD::ConstantPool::CUTF8Info#initialize at lib/constant_pool/strings.rb:34
    390   YAJD::ConstantPool::CommonAttrs#initialize at lib/constant_pool/cpinfo.rb:146
    286   YAJD::ConstantPool::CNameType#initialize at lib/constant_pool/cpinfo.rb:129
    260   YAJD::ConstantPool::CLongDouble#initialize at lib/constant_pool/numbers.rb:35
     82   YAJD::ConstantPool::CClass#initialize at lib/constant_pool/cpinfo.rb:77
     47   YAJD::ConstantPool::CString#initialize at lib/constant_pool/strings.rb:13
      7   YAJD::ConstantPool::CInteger#initialize at lib/constant_pool/numbers.rb:21
      2   YAJD::ConstantPool::CIntegerFloat#initialize at lib/constant_pool/numbers.rb:6

 67 
 68         result
 69     end
 70 
 71     def validate(constant_pool)
 72         raise(ValidationError, "non implemented validation for #{self.class}")
 73     end
 74 end
 75 
 76 class CClass < CPInfo
 77     def initialize(pool, tag, f)
    def initialize(pool, tag, f)
     82   lib/constant_pool/cpinfo.rb:66 in '#<Class:YAJD::ConstantPool::CPInfo>#create_instance'

 78         super(pool, tag)
        super(pool, tag)
     82   YAJD::ConstantPool::CPInfo#initialize at lib/constant_pool/cpinfo.rb:11

 79         @name_index = f.read_u2
        @name_index = f.read_u2
     82   File#read_u2 at lib/ext/file.rb:10

 80     end
 81 
 82     attr_reader :name_index
 83 
 84     def validate(constant_pool)
    def validate(constant_pool)
     53   lib/constant_pool.rb:35 in 'YAJD::ConstantPool::Pool#validate'

 85         check_ref_utf(constant_pool, name_index)
        check_ref_utf(constant_pool, name_index)
     53   YAJD::ConstantPool::CPInfo#check_ref_utf at lib/constant_pool/cpinfo.rb:43

 86         #TODO check name is valid class name or interface name in internal form
 87     end
 88 
 89     def to_s
 90         "#{self.class}: #{@name_index}"
 91     end
 92 
 93     def full_name
    def full_name
    491   lib/constant_pool/cpinfo.rb:99 in 'YAJD::ConstantPool::CClass#name'
    472   lib/visitor/javap/class_file.rb:151 in 'YAJD::Visitor::Javap::ClassFileVisitor#klass'
    376   lib/visitor/javap/code_info.rb:96 in 'YAJD::Visitor::Javap::CodeInfoVisitor#refactor_me'
    184   lib/visitor/javap/code_info.rb:81 in 'YAJD::Visitor::Javap::CodeInfoVisitor#refactor_me'
     87   lib/visitor/javap/code_info.rb:105 in 'YAJD::Visitor::Javap::CodeInfoVisitor#refactor_me'
     36   lib/visitor/javap/code_info.rb:148 in 'YAJD::Visitor::Javap::CodeInfoVisitor#refactor_me'
     31   lib/visitor/javap/code_info.rb:313 in 'YAJD::Visitor::Javap::CodeInfoVisitor#dump_exception_table'
     22   lib/visitor/javap/code_info.rb:157 in 'YAJD::Visitor::Javap::CodeInfoVisitor#refactor_me'
      8   test/tc_bytecodes.rb:39 in 'TestBytecodes#test_bytecodes'
      5   lib/visitor/javap/class_file.rb:72 in 'YAJD::Visitor::Javap::ClassFileVisitor#class_info'
      4   lib/visitor/javap/class_file.rb:83 in 'YAJD::Visitor::Javap::ClassFileVisitor#class_info'
      1   lib/visitor/javap/class_file.rb:77 in 'YAJD::Visitor::Javap::ClassFileVisitor#class_info'

 94         @pool.at(@name_index).bytes
        @pool.at(@name_index).bytes
   1717   YAJD::ConstantPool::Pool#at at lib/constant_pool.rb:42

 95     end
 96 
 97     # Return the name of the class. It assumes this instance passed the validations.
 98     def name
    def name
    226   lib/visitor/javap/method_info.rb:38 in 'YAJD::Visitor::Javap::MethodInfoVisitor#dump_exceptions'
    226   lib/visitor/javap/method_info.rb:69 in 'YAJD::Visitor::Javap::MethodInfoVisitor#dump_attributes'
     14   lib/visitor/javap/method_info.rb:19 in 'YAJD::Visitor::Javap::MethodInfoVisitor#header'
     10   lib/visitor/javap/class_file.rb:31 in 'YAJD::Visitor::Javap::ClassFileVisitor#class_signature'
     10   lib/visitor/javap/class_file.rb:26 in 'YAJD::Visitor::Javap::ClassFileVisitor#class_signature'
      5   lib/visitor/javap/class_file.rb:41 in 'YAJD::Visitor::Javap::ClassFileVisitor#class_signature'

 99         Util::Java::FQF::to_java(full_name)
        Util::Java::FQF::to_java(full_name)
    491   YAJD::ConstantPool::CClass#full_name at lib/constant_pool/cpinfo.rb:93
    491   #<Class:YAJD::Util::Java::FQF>#to_java at lib/utils.rb:67

100     end
101     # Returns only the clas name. It assumes this instance passed the validations.
102     def simple_name
103         name.gsub(/^.+\./, '')
104     end
105 
106     # Returns only the package where this class resides. It assumes this instance passed the validations.
107     def package
108         name.gsub(/\.[^.]+$/, '')
109     end
110 
111     # if this class is the root of the class hierarchy (i.e.: java.lang.Object). It assumes this instance passed the validations.
112     def is_root?
113         @pool.at(@name_index).bytes == 'java/lang/Object'
114     end
115 
116     #TODO should I override == ?
117     def eql?(obj)
    def eql?(obj)
    345   lib/visitor/javap/code_info.rb:156 in 'YAJD::Visitor::Javap::CodeInfoVisitor#refactor_me'

118         obj.is_a?(CClass) && obj.name_index == name_index
119     end
120 end
121 
122 class CNameType < CPInfo
123     include PoolHelper
    include PoolHelper
      1   #<Class:YAJD::PoolHelper>#included at lib/pool_helper.rb:5

124 
125     pool_getter :name
    pool_getter :name
      1   #<Class:YAJD::ConstantPool::CNameType>#pool_getter at lib/pool_helper.rb:8

126     pool_getter :descriptor
    pool_getter :descriptor
      1   #<Class:YAJD::ConstantPool::CNameType>#pool_getter at lib/pool_helper.rb:8

127 
128 
129     def initialize(pool, tag, f)
    def initialize(pool, tag, f)
    286   lib/constant_pool/cpinfo.rb:66 in '#<Class:YAJD::ConstantPool::CPInfo>#create_instance'

130         super(pool, tag)
        super(pool, tag)
    286   YAJD::ConstantPool::CPInfo#initialize at lib/constant_pool/cpinfo.rb:11

131         @name_index = f.read_u2
        @name_index = f.read_u2
    286   File#read_u2 at lib/ext/file.rb:10

132         @descriptor_index = f.read_u2
        @descriptor_index = f.read_u2
    286   File#read_u2 at lib/ext/file.rb:10

133     end
134 
135     attr_reader :name_index, :descriptor_index
136 
137     def validate(constant_pool)
    def validate(constant_pool)
    264   lib/constant_pool.rb:35 in 'YAJD::ConstantPool::Pool#validate'

138         check_ref_utf(constant_pool, name_index)
        check_ref_utf(constant_pool, name_index)
    264   YAJD::ConstantPool::CPInfo#check_ref_utf at lib/constant_pool/cpinfo.rb:43

139     end
140 end
141 
142 #TODO find a good name
143 class CommonAttrs < CPInfo
144     include PoolHelper
    include PoolHelper
      1   #<Class:YAJD::PoolHelper>#included at lib/pool_helper.rb:5

145 
146     def initialize(pool, tag, f)
    def initialize(pool, tag, f)
    390   lib/constant_pool/cpinfo.rb:66 in '#<Class:YAJD::ConstantPool::CPInfo>#create_instance'

147         super(pool, tag)
        super(pool, tag)
    390   YAJD::ConstantPool::CPInfo#initialize at lib/constant_pool/cpinfo.rb:11

148         @class_index = f.read_u2
        @class_index = f.read_u2
    390   File#read_u2 at lib/ext/file.rb:10

149         @name_and_type_index = f.read_u2
        @name_and_type_index = f.read_u2
    390   File#read_u2 at lib/ext/file.rb:10

150     end
151 
152     attr_reader :class_index, :name_and_type_index
153 
154     def validate(constant_pool)
    def validate(constant_pool)
    200   lib/constant_pool/cpinfo.rb:167 in 'YAJD::ConstantPool::CMethodRef#validate'
    155   lib/constant_pool/cpinfo.rb:185 in 'YAJD::ConstantPool::CIMethodRef#validate'
     13   lib/constant_pool/cpinfo.rb:177 in 'YAJD::ConstantPool::CFieldRef#validate'

155         check_ref_class(constant_pool, class_index)
        check_ref_class(constant_pool, class_index)
    368   YAJD::ConstantPool::CPInfo#check_ref_class at lib/constant_pool/cpinfo.rb:46

156     end
157 
158     pool_getter :klass, :class_index
    pool_getter :klass, :class_index
      1   #<Class:YAJD::ConstantPool::CommonAttrs>#pool_getter at lib/pool_helper.rb:8

159     pool_getter :name_and_type
    pool_getter :name_and_type
      1   #<Class:YAJD::ConstantPool::CommonAttrs>#pool_getter at lib/pool_helper.rb:8

160 end
161 
162 class CBaseMethodRef < CommonAttrs
163 end
164 
165 class CMethodRef < CBaseMethodRef
166     def validate(constant_pool)
    def validate(constant_pool)
    200   lib/constant_pool.rb:35 in 'YAJD::ConstantPool::Pool#validate'

167         super(constant_pool)
        super(constant_pool)
    200   YAJD::ConstantPool::CommonAttrs#validate at lib/constant_pool/cpinfo.rb:154

168         #TODO the class is not an interface
169         check_reference(constant_pool, name_and_type_index, CPInfo::NAME_AND_TYPE)
        check_reference(constant_pool, name_and_type_index, CPInfo::NAME_AND_TYPE)
    200   YAJD::ConstantPool::CPInfo#check_reference at lib/constant_pool/cpinfo.rb:49

170         #TODO check if name begins with '<' then the name must be '<init>' and return void
171         #TODO check it's a method descriptor
172     end
173 end
174 
175 class CFieldRef < CommonAttrs
176     def validate(constant_pool)
    def validate(constant_pool)
     13   lib/constant_pool.rb:35 in 'YAJD::ConstantPool::Pool#validate'

177         super(constant_pool)
        super(constant_pool)
     13   YAJD::ConstantPool::CommonAttrs#validate at lib/constant_pool/cpinfo.rb:154

178         check_reference(constant_pool, name_and_type_index, CPInfo::NAME_AND_TYPE)
        check_reference(constant_pool, name_and_type_index, CPInfo::NAME_AND_TYPE)
     13   YAJD::ConstantPool::CPInfo#check_reference at lib/constant_pool/cpinfo.rb:49

179         #TODO check it's a field descriptor
180     end
181 end
182 
183 class CIMethodRef < CBaseMethodRef
184     def validate(constant_pool)
    def validate(constant_pool)
    155   lib/constant_pool.rb:35 in 'YAJD::ConstantPool::Pool#validate'

185         super(constant_pool)
        super(constant_pool)
    155   YAJD::ConstantPool::CommonAttrs#validate at lib/constant_pool/cpinfo.rb:154

186         #TODO the class is an interface
187         check_reference(constant_pool, name_and_type_index, CPInfo::NAME_AND_TYPE)
        check_reference(constant_pool, name_and_type_index, CPInfo::NAME_AND_TYPE)
    155   YAJD::ConstantPool::CPInfo#check_reference at lib/constant_pool/cpinfo.rb:49

188         #TODO check it's a field descriptor
189     end
190 end
191 
192 end
193 
194 end

Generated using the rcov code coverage analysis tool for Ruby version 0.8.0.

Valid XHTML 1.0! Valid CSS!