class Uncool::Trace
Attributes
log[R]
targets[R]
Public Class Methods
new(targets, options={})
click to toggle source
# File lib/uncool/trace.rb, line 19 def initialize(targets, options={}) @targets = [targets].compact.flatten @options = options @log = [] end
Public Instance Methods
activate()
click to toggle source
# File lib/uncool/trace.rb, line 53 def activate setup TracePoint.activate end
deactivate()
click to toggle source
# File lib/uncool/trace.rb, line 59 def deactivate TracePoint.deactivate end
setup()
click to toggle source
# File lib/uncool/trace.rb, line 26 def setup tracker = self TracePoint.trace do |tp| #puts "#{tp.self.class}\t#{tp.callee}\t#{tp.event}\t#{tp.return?}" if tp.event == 'call' or tp.event == 'c-call' if tracker.target?(tp.self.class) tracker.log << [tp.self, tp.callee] end end end end
target?(mod)
click to toggle source
# File lib/uncool/trace.rb, line 39 def target?(mod) return true if targets.empty? targets.find do |target| begin target_class = eval(target, TOPLEVEL_BINDING) #Object.const_get(target) rescue nil else target_class == mod end end end
to_analysis()
click to toggle source
# File lib/uncool/trace.rb, line 64 def to_analysis Analysis.new(self, @options) end