Class: GunDog::TraceReport
- Inherits:
-
Object
- Object
- GunDog::TraceReport
- Defined in:
- lib/gun_dog/trace_report.rb
Instance Attribute Summary collapse
-
#klass ⇒ Object
readonly
Returns the value of attribute klass.
-
#suppression_set ⇒ Object
readonly
Returns the value of attribute suppression_set.
Class Method Summary collapse
Instance Method Summary collapse
- #all_calls ⇒ Object
- #as_json ⇒ Object
- #call_records ⇒ Object
- #collaborating_classes ⇒ Object
- #explore ⇒ Object
- #finalize_report ⇒ Object
- #finalized? ⇒ Boolean
-
#initialize(klass, suppression_set: []) ⇒ TraceReport
constructor
A new instance of TraceReport.
- #method_list ⇒ Object
- #save(filename) ⇒ Object
- #stack ⇒ Object
- #to_json ⇒ Object
Constructor Details
#initialize(klass, suppression_set: []) ⇒ TraceReport
36 37 38 39 |
# File 'lib/gun_dog/trace_report.rb', line 36 def initialize(klass, suppression_set: []) @klass = klass @suppression_set = suppression_set end |
Instance Attribute Details
#klass ⇒ Object (readonly)
Returns the value of attribute klass.
5 6 7 |
# File 'lib/gun_dog/trace_report.rb', line 5 def klass @klass end |
#suppression_set ⇒ Object (readonly)
Returns the value of attribute suppression_set.
5 6 7 |
# File 'lib/gun_dog/trace_report.rb', line 5 def suppression_set @suppression_set end |
Class Method Details
.from_json(json) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/gun_dog/trace_report.rb', line 12 def self.from_json(json) tr = new(nil) tr.instance_eval do @klass = Kernel.const_get(json['klass']) @stack = TraceStack.from_json(json.slice('klass','collaborating_classes')) @call_records = json['call_records'].map { |cr| CallRecord.from_json(cr) } end tr end |
.load(filename) ⇒ Object
7 8 9 10 |
# File 'lib/gun_dog/trace_report.rb', line 7 def self.load(filename) json = MultiJson.load(File.open(filename, 'r') { |f| f.read }) from_json(json) end |
Instance Method Details
#all_calls ⇒ Object
24 25 26 |
# File 'lib/gun_dog/trace_report.rb', line 24 def all_calls @all_calls ||= [] end |
#as_json ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'lib/gun_dog/trace_report.rb', line 64 def as_json { "klass" => klass.to_s, "collaborating_classes" => .map { |k| k.json_encoded }, "call_records" => call_records.map(&:as_json) } end |
#call_records ⇒ Object
32 33 34 |
# File 'lib/gun_dog/trace_report.rb', line 32 def call_records @call_records ||= [] end |
#collaborating_classes ⇒ Object
41 42 43 |
# File 'lib/gun_dog/trace_report.rb', line 41 def stack. - [GunDog, klass] end |
#explore ⇒ Object
28 29 30 |
# File 'lib/gun_dog/trace_report.rb', line 28 def explore GunDog::TraceExplorer.new(self) end |
#finalize_report ⇒ Object
49 50 51 52 53 |
# File 'lib/gun_dog/trace_report.rb', line 49 def finalize_report @call_records.freeze @stack.clear.freeze @finalized = true end |
#finalized? ⇒ Boolean
55 56 57 |
# File 'lib/gun_dog/trace_report.rb', line 55 def finalized? !!@finalized end |
#method_list ⇒ Object
78 79 80 |
# File 'lib/gun_dog/trace_report.rb', line 78 def method_list @call_records.map(&:method_location) end |
#save(filename) ⇒ Object
59 60 61 |
# File 'lib/gun_dog/trace_report.rb', line 59 def save(filename) File.open(filename, 'w') { |f| f.puts(to_json) } end |
#stack ⇒ Object
45 46 47 |
# File 'lib/gun_dog/trace_report.rb', line 45 def stack @stack ||= TraceStack.new(klass) end |
#to_json ⇒ Object
74 75 76 |
# File 'lib/gun_dog/trace_report.rb', line 74 def to_json MultiJson.dump(as_json) end |