class PrivatePlease::Tracking::TracePointProcessor
Public Class Methods
new(config)
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 11 def initialize(config) @config = config @latest_tracepoints = Utils::TwoLevelStack.new @encountered_method_calls = Storage::CalledMethodsMemoryStore.new end
Public Instance Methods
process(tp)
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 18 def process(tp) return if untracked_code?(tp.path) remember_trace_point tp store_method_call_details if tp.event == :call end
result()
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 24 def result Result.new(@encountered_method_calls) end
Private Instance Methods
already_private?()
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 74 def already_private? tp_curr._self.private_methods.include?(tp_curr.method_id) end
private_call?()
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 66 def private_call? return unless tp_prev # fails sometime (ex: rspec-core) # UNTESTED curr_event, prev_event = tp_curr.event, tp_prev.event (curr_event == :call) && [:line, :return, :c_return].include?(prev_event) && tp_curr.same_object?(tp_prev) end
remember_trace_point(tp)
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 31 def remember_trace_point(tp) tpd = TracePointDetails.from(tp) @latest_tracepoints.push tpd Debug.log_to_trace_file tpd end
store_method_call_details()
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 57 def store_method_call_details key = tp_curr.method_full_name if private_call? @encountered_method_calls.add_private_call(key) unless already_private? else @encountered_method_calls.add_public_call(key) end end
tp_curr()
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 54 def tp_curr; @latest_tracepoints.curr end
tp_prev()
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 55 def tp_prev; @latest_tracepoints.prev end
untracked_code?(path)
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 42 def untracked_code?(path) path.start_with?(*untracked_source_dirs) end
untracked_source_dirs()
click to toggle source
# File lib/private_please/tracking/trace_point_processor.rb, line 46 def untracked_source_dirs @_untracked_source_dirs ||= begin Utils::RubyUtils.gems_paths + Array(Utils::RubyUtils.std_lib_home) + @config.additional_excluded_dirs end end