Files

MethodAnalyzer

Public Class Methods

at_exit__output_marshal() click to toggle source
    # File lib/method_analyzer.rb, line 58
58:   def self.at_exit__output_marshal
59:     at_exit do
60:       set_trace_func nil
61:       dbfile = "method_analysis"
62:       old = Marshal.load(File.read(dbfile)) rescue {}
63:       open(dbfile, "wb") do |io|
64:         # Because Marshal.dump cannot handle hashes with default_proc
65:         @@methods.default = nil
66:         @@methods.each_value{ |v| v.default=nil; v.each_value{ |vv| vv.uniq! } }
67:         Marshal.dump(@@methods.merge(old), io)
68:       end
69:     end
70:   end
at_exit__output_text() click to toggle source
    # File lib/method_analyzer.rb, line 73
73:   def self.at_exit__output_text
74:     at_exit do
75:       set_trace_func nil
76:       puts "method fullnames"
77:       @@methods.sort.each do |file, lines|
78:         lines.sort.each do |line, methods|
79:           printf "%s:%s:%s\n", file, line, methods.uniq.join(" ")
80:         end
81:       end
82: 
83:       puts
84:       puts "method definitions"
85:       @@whereis.sort.uniq.each do |file, line, fullname |
86:         printf "%s:%s:%s\n", file, line, fullname
87:       end
88: 
89:     end
90:   end
set_at_exit() click to toggle source
    # File lib/method_analyzer.rb, line 92
92:   def self.set_at_exit
93:     case ENV['METHOD_ANALYZER_FORMAT']
94:     when 'marshal'
95:       at_exit__output_marshal
96:     else
97:       at_exit__output_text
98:     end
99:   end
trace_func(event, file, line, id, binding, klass, *rest) click to toggle source
    # File lib/method_analyzer.rb, line 32
32:   def self.trace_func(event, file, line, id, binding, klass, *rest)
33:     return if file == __FILE__
34:     return if (event != 'call' and event != 'c-call')
35:     return if klass == Class and id == :inherited
36:     return if klass == Module and id == :method_added
37:     return if klass == Kernel and id == :singleton_method_added
38:     saved_crit = Thread.critical
39:     Thread.critical = true
40:     
41:     the_self = eval("self",binding)
42:     flag = Class === the_self ? "." : "#"
43:     #klass = klass == Kernel ? Object : klass
44:     fullname = "#{klass}#{flag}#{id}"
45:     file.replace @@expand_path[file]
46:     if event == 'call'
47:       @@whereis << [file, line, fullname] if file !~ /\(eval\)$/
48:       file, line, rest = caller(4)[0].split(/:/)
49:       file.replace @@expand_path[file] # DRY
50:       p caller(0) if $DEBUG
51:       line = line.to_i
52:     end
53:     @@methods[file][line] << fullname  if event =~ /call/
54: 
55:     Thread.critical = saved_crit
56:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.