Top Level Namespace
Defined Under Namespace
Modules: JavaClass
Classes: String
Constant Summary
collapse
- JDK_PACKAGES =
%w| java javax.accessibility javax.activity javax.crypto javax.imageio javax.jnlp javax.management
javax.naming javax.net javax.print javax.rmi javax.script javax.security.auth javax.security.cert
javax.security.sasl javax.sound.midi javax.sound.sampled javax.sql javax.swing javax.transaction
javax.xml org.ietf.jgss org.w3c.dom org.xml.sax|.collect { |pkg| /^#{pkg}\./ }
Instance Method Summary
collapse
Methods included from JavaClass
classpath, disassemble, environment_classpath, full_classpath, load_cp, load_fs, parse
Instance Method Details
#imported_types(classes) ⇒ Object
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/javaclass/metric/class_usage.rb', line 18
def imported_types(classes)
own_classes = classes.names.collect { |name| name.gsub('/', '.').sub(/\.class$/, '')}.sort
imported = classes.names.collect do |name|
clazz = JavaClassHeader.new(classes.load_binary(name))
clazz.references.used_classes.collect { |c| c.to_s.gsub('/', '.') }
end.flatten.uniq.sort
imported.reject { |name| in_jdk?(name) } - own_classes
end
|
#in_jdk?(name) ⇒ Boolean
14
15
16
|
# File 'lib/javaclass/metric/class_usage.rb', line 14
def in_jdk?(name)
JDK_PACKAGES.find { |regex| name =~ regex } != nil
end
|
#process_class(name, already = [], intend = 0) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/javaclass/metric/ccd.rb', line 9
def process_class(name, already=[], intend=0)
file_name = 'C:\JavaDev\classes\\' + name.gsub(/\./,'\\') + '.class'
return if !FileTest.exist? file_name
clazz = JavaClass.parse(file_name)
puts " "*intend + clazz.this_class
imported = clazz.references.used_classes.collect { |c| c.to_s }.sort
new_used = imported - already
already << new_used
already.flatten!
new_used.find_all { |c| c =~ /at\/spardat\// }.each do |c|
process_class(c, already, intend+1)
end
end
|
#process_package(folder, already = [], intend = 0) ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/javaclass/metric/ccd.rb', line 26
def process_package(folder, already=[], intend=0)
file_name = 'C:\JavaDev\classes\\' + folder.gsub(/\./,'\\')
cwd = Dir.getwd
Dir.chdir file_name
files = Dir['*']
files.each do |c|
if c =~ /\.class$/
process_class(folder + '.' + c[/^[^.]+/], already, intend)
elsif FileTest.directory? c
puts " "*intend+ '-----'
process_package(folder + '.' + c, already, intend)
end
end
Dir.chdir cwd
end
|