C0 code coverage information
Generated on Wed Aug 01 14:04:28 -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.
1 module YAJD
2
3 module Visitor
4
5 module Javap
6
7 class ClassFileVisitor < Base
8 def accept(visitor)
def accept(visitor)
10 lib/visitor/javap.rb:27 in 'YAJD::Visitor::Javap::JavapVisitor#visit'
9 result = Array.new
10 source = source_file
source = source_file
10 YAJD::Visitor::Javap::ClassFileVisitor#source_file at lib/visitor/javap/class_file.rb:96
11 result << source unless source.nil?
12 result << class_signature
result << class_signature
10 YAJD::Visitor::Javap::ClassFileVisitor#class_signature at lib/visitor/javap/class_file.rb:20
13 result += class_info
result += class_info
10 YAJD::Visitor::Javap::ClassFileVisitor#class_info at lib/visitor/javap/class_file.rb:48
14 result += constant_pool
result += constant_pool
10 YAJD::Visitor::Javap::ClassFileVisitor#constant_pool at lib/visitor/javap/class_file.rb:103
15
16 result
17 end
18
19 protected
20 def class_signature
def class_signature
10 lib/visitor/javap/class_file.rb:12 in 'YAJD::Visitor::Javap::ClassFileVisitor#accept'
21 is_interface = AccessFlags::Klass::interface?(@object.access_flags)
is_interface = AccessFlags::Klass::interface?(@object.access_flags)
10 #<Class:YAJD::AccessFlags::Klass>#interface? at lib/access_flags.rb:98
22
23 result = AccessFlags::Klass::to_java(@object.access_flags)
result = AccessFlags::Klass::to_java(@object.access_flags)
10 #<Class:YAJD::AccessFlags::Klass>#to_java at lib/access_flags.rb:91
24 result += ' ' unless result.empty?
25 result += 'class ' unless is_interface
26 result += @object.pool.at(@object.this_class).name
result += @object.pool.at(@object.this_class).name
10 YAJD::ConstantPool::Pool#at at lib/constant_pool.rb:42
10 YAJD::ConstantPool::CClass#name at lib/constant_pool/cpinfo.rb:98
27
28 unless is_interface or @object.is_root?
unless is_interface or @object.is_root?
10 YAJD::ClassFile#is_root? at lib/class_file.rb:118
29 parent = @object.pool.at(@object.super_class)
parent = @object.pool.at(@object.super_class)
10 YAJD::ConstantPool::Pool#at at lib/constant_pool.rb:42
30 result += ' extends '
31 result += parent.name
result += parent.name
10 YAJD::ConstantPool::CClass#name at lib/constant_pool/cpinfo.rb:98
32 end
33
34 unless @object.interfaces.size == 0
35 if is_interface
36 result += ' extends '
37 else
38 result += ' implements '
39 end
40 result += @object.interfaces.map { |i|
41 @object.pool.at(i).name
@object.pool.at(i).name
5 YAJD::ConstantPool::Pool#at at lib/constant_pool.rb:42
5 YAJD::ConstantPool::CClass#name at lib/constant_pool/cpinfo.rb:98
42 }.join(',')
43 end
44
45 result
46 end
47
48 def class_info
def class_info
10 lib/visitor/javap/class_file.rb:13 in 'YAJD::Visitor::Javap::ClassFileVisitor#accept'
49 result = Array.new
50
51 source = @object.source_file
source = @object.source_file
10 YAJD::ClassFile#source_file at lib/class_file.rb:109
52 unless source.nil?
53 result << " SourceFile: \"#{source}\""
54 end
55
56 if @object.deprecated?
if @object.deprecated?
10 YAJD::ClassFile#deprecated? at lib/class_file.rb:102
57 result << nil
58 #TODO length is allways 0 (I think)
59 result << ' Deprecated: length = 0x'
60 result << nil
61 end
62
63 inner = @object.inner_classes
inner = @object.inner_classes
10 YAJD::ClassFile#inner_classes at lib/class_file.rb:97
64 unless inner.nil?
65 result << ' InnerClass:'
66 inner.classes.each do |c|
67 access = AccessFlags::Klass::to_java(c.inner_class_access_flags)
access = AccessFlags::Klass::to_java(c.inner_class_access_flags)
5 #<Class:YAJD::AccessFlags::Klass>#to_java at lib/access_flags.rb:91
68 access += ' ' unless access.empty?
69 #TODO another kludge
70 access.gsub!(/interface/, 'abstract')
71
72 this_name = @object.pool.at(@object.this_class).full_name
this_name = @object.pool.at(@object.this_class).full_name
5 YAJD::ConstantPool::Pool#at at lib/constant_pool.rb:42
5 YAJD::ConstantPool::CClass#full_name at lib/constant_pool/cpinfo.rb:93
73 unless c.inner_name_index == 0
74 inner_name = c.inner_name.bytes
inner_name = c.inner_name.bytes
4 YAJD::InnerClass#inner_name at (eval):2
75 end
76 if c.inner_name_index == 0
77 result << " #{access}\##{c.inner_class_info_index}; //class #{c.inner_class_info.full_name}"
result << " #{access}\##{c.inner_class_info_index}; //class #{c.inner_class_info.full_name}"
1 YAJD::InnerClass#inner_class_info at (eval):2
1 YAJD::ConstantPool::CClass#full_name at lib/constant_pool/cpinfo.rb:93
78 else
79 aux = " #{access}\##{c.inner_name_index}= \##{c.inner_class_info_index}"
80 unless c.outer_class_info_index == 0
81 aux += " of \##{c.outer_class_info_index}"
82 end
83 aux += "; //#{inner_name}=class #{c.inner_class_info.full_name}"
aux += "; //#{inner_name}=class #{c.inner_class_info.full_name}"
4 YAJD::InnerClass#inner_class_info at (eval):2
4 YAJD::ConstantPool::CClass#full_name at lib/constant_pool/cpinfo.rb:93
84 unless c.outer_class_info_index == 0
85 aux += " of class #{this_name}"
86 end
87 result << aux
88 end
89 end
90 end
91
92 result << " minor version: #{@object.minor_version}"
93 result << " major version: #{@object.major_version}"
94 end
95
96 def source_file
def source_file
10 lib/visitor/javap/class_file.rb:10 in 'YAJD::Visitor::Javap::ClassFileVisitor#accept'
97 source = @object.source_file
source = @object.source_file
10 YAJD::ClassFile#source_file at lib/class_file.rb:109
98 unless source.nil?
99 "Compiled from \"#{source}\""
100 end
101 end
102
103 def constant_pool
def constant_pool
10 lib/visitor/javap/class_file.rb:14 in 'YAJD::Visitor::Javap::ClassFileVisitor#accept'
104 result = [ " Constant pool:" ]
105 @object.pool.each_with_index { |index, entry|
@object.pool.each_with_index { |index, entry|
10 YAJD::ConstantPool::Pool#each_with_index at lib/constant_pool.rb:59
106 result << "const \##{index} = #{constant_entry(entry)}"
result << "const \##{index} = #{constant_entry(entry)}"
2052 YAJD::Visitor::Javap::ClassFileVisitor#constant_entry at lib/visitor/javap/class_file.rb:112
107 }
108
109 result
110 end
111
112 def constant_entry(entry)
def constant_entry(entry)
2052 lib/visitor/javap/class_file.rb:106 in 'YAJD::Visitor::Javap::ClassFileVisitor#constant_pool'
113 #TODO I don't like it
114 if entry.is_a?(ConstantPool::CString)
115 "String\t\##{entry.string_index};\t// #{Util::Java::quote(entry.string.bytes)}"
"String\t\##{entry.string_index};\t// #{Util::Java::quote(entry.string.bytes)}"
47 YAJD::ConstantPool::CString#string at (eval):2
47 #<Class:YAJD::Util::Java>#quote at lib/utils.rb:34
116 elsif entry.is_a?(ConstantPool::CUTF8Info)
117 "Asciz\t#{Util::Java::quote(entry.bytes)};"
"Asciz\t#{Util::Java::quote(entry.bytes)};"
978 #<Class:YAJD::Util::Java>#quote at lib/utils.rb:34
118 elsif entry.is_a?(ConstantPool::CClass)
119 "class\t\##{entry.name_index};\t// #{klass(entry)}"
"class\t\##{entry.name_index};\t// #{klass(entry)}"
82 YAJD::Visitor::Javap::ClassFileVisitor#klass at lib/visitor/javap/class_file.rb:150
120 elsif entry.is_a?(ConstantPool::CNameType)
121 "NameAndType\t\##{entry.name_index}:\##{entry.descriptor_index};// #{name_type(entry)}"
"NameAndType\t\##{entry.name_index}:\##{entry.descriptor_index};// #{name_type(entry)}"
286 YAJD::Visitor::Javap::ClassFileVisitor#name_type at lib/visitor/javap/class_file.rb:143
122 elsif entry.is_a?(ConstantPool::CBaseMethodRef)
123 if entry.is_a?(ConstantPool::CIMethodRef)
124 preffix = 'Interface'
125 end
126 "#{preffix}Method\t\##{entry.class_index}.\##{entry.name_and_type_index};\t// #{klass(entry.klass)}.#{name_type(entry.name_and_type)}"
"#{preffix}Method\t\##{entry.class_index}.\##{entry.name_and_type_index};\t// #{klass(entry.klass)}.#{name_type(entry.name_and_type)}"
367 YAJD::Visitor::Javap::ClassFileVisitor#name_type at lib/visitor/javap/class_file.rb:143
367 YAJD::Visitor::Javap::ClassFileVisitor#klass at lib/visitor/javap/class_file.rb:150
367 YAJD::ConstantPool::CommonAttrs#name_and_type at (eval):2
367 YAJD::ConstantPool::CommonAttrs#klass at (eval):2
127 elsif entry.is_a?(ConstantPool::CFieldRef)
128 "Field\t\##{entry.class_index}.\##{entry.name_and_type_index};\t// #{klass(entry.klass)}.#{name_type(entry.name_and_type)}"
"Field\t\##{entry.class_index}.\##{entry.name_and_type_index};\t// #{klass(entry.klass)}.#{name_type(entry.name_and_type)}"
23 YAJD::Visitor::Javap::ClassFileVisitor#name_type at lib/visitor/javap/class_file.rb:143
23 YAJD::Visitor::Javap::ClassFileVisitor#klass at lib/visitor/javap/class_file.rb:150
23 YAJD::ConstantPool::CommonAttrs#name_and_type at (eval):2
23 YAJD::ConstantPool::CommonAttrs#klass at (eval):2
129 elsif entry.is_a?(ConstantPool::CInteger)
130 "int\t#{entry.value};"
"int\t#{entry.value};"
7 YAJD::ConstantPool::CIntegerFloat#value at lib/constant_pool/numbers.rb:15
131 elsif entry.is_a?(ConstantPool::CLong)
132 "long\t#{entry.value}l;"
"long\t#{entry.value}l;"
258 YAJD::ConstantPool::CLong#value at lib/constant_pool/numbers.rb:46
133 elsif entry.is_a?(ConstantPool::CDouble)
134 "double\t#{entry.value}d;"
"double\t#{entry.value}d;"
2 YAJD::ConstantPool::CDouble#value at lib/constant_pool/numbers.rb:52
135 elsif entry.is_a?(ConstantPool::CFloat)
136 "float\t#{entry.value};"
"float\t#{entry.value};"
2 YAJD::ConstantPool::CFloat#value at lib/constant_pool/numbers.rb:28
137 else
138 "#{entry.class} #{entry}"
139 end
140 end
141
142 protected
143 def name_type(entry)
def name_type(entry)
367 lib/visitor/javap/class_file.rb:126 in 'YAJD::Visitor::Javap::ClassFileVisitor#constant_entry'
286 lib/visitor/javap/class_file.rb:121 in 'YAJD::Visitor::Javap::ClassFileVisitor#constant_entry'
23 lib/visitor/javap/class_file.rb:128 in 'YAJD::Visitor::Javap::ClassFileVisitor#constant_entry'
144 name = entry.name.bytes
name = entry.name.bytes
676 YAJD::ConstantPool::CNameType#name at (eval):2
145 name = "\"#{name}\"" if Util::Java::is_init?(name)
name = "\"#{name}\"" if Util::Java::is_init?(name)
676 #<Class:YAJD::Util::Java>#is_init? at lib/utils.rb:50
146
147 "#{name}:#{entry.descriptor.bytes}"
"#{name}:#{entry.descriptor.bytes}"
676 YAJD::ConstantPool::CNameType#descriptor at (eval):2
148 end
149
150 def klass(entry)
def klass(entry)
367 lib/visitor/javap/class_file.rb:126 in 'YAJD::Visitor::Javap::ClassFileVisitor#constant_entry'
82 lib/visitor/javap/class_file.rb:119 in 'YAJD::Visitor::Javap::ClassFileVisitor#constant_entry'
23 lib/visitor/javap/class_file.rb:128 in 'YAJD::Visitor::Javap::ClassFileVisitor#constant_entry'
151 name = entry.full_name
name = entry.full_name
472 YAJD::ConstantPool::CClass#full_name at lib/constant_pool/cpinfo.rb:93
152 name = "\"#{name}\"" if Util::Java::is_array?(name)
name = "\"#{name}\"" if Util::Java::is_array?(name)
472 #<Class:YAJD::Util::Java>#is_array? at lib/utils.rb:55
153
154 name
155 end
156 end
157
158 end
159
160 end
161
162 end
Generated using the rcov code coverage analysis tool for Ruby version 0.8.0.