trace_viz 0.0.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +40 -37
- data/Steepfile +34 -0
- data/examples/eu_central_bank.rb +69 -0
- data/examples/example.cast +189 -285
- data/lib/trace_viz/adapters/base_adapter.rb +24 -1
- data/lib/trace_viz/adapters/trace_point_adapter.rb +3 -10
- data/lib/trace_viz/collectors/base_collector.rb +42 -35
- data/lib/trace_viz/collectors/filters/base_class_filter.rb +29 -0
- data/lib/trace_viz/collectors/filters/base_exclude_filter.rb +16 -0
- data/lib/trace_viz/collectors/filters/base_filter.rb +2 -8
- data/lib/trace_viz/collectors/filters/base_include_filter.rb +16 -0
- data/lib/trace_viz/collectors/filters/exclude_classes_filter.rb +4 -17
- data/lib/trace_viz/collectors/filters/exclude_default_classes_filter.rb +22 -26
- data/lib/trace_viz/collectors/filters/include_classes_filter.rb +4 -17
- data/lib/trace_viz/collectors/hierarchy_linker.rb +30 -0
- data/lib/trace_viz/collectors/matchers/base_matcher.rb +13 -0
- data/lib/trace_viz/collectors/matchers/trace_point_action_matcher.rb +12 -10
- data/lib/trace_viz/collectors/matchers/within_depth_matcher.rb +6 -5
- data/lib/trace_viz/collectors/steps/assign_depth_for_call_step.rb +30 -0
- data/lib/trace_viz/collectors/steps/assign_depth_for_return_step.rb +39 -0
- data/lib/trace_viz/collectors/steps/base_step.rb +27 -0
- data/lib/trace_viz/collectors/steps/build_hierarchy_step.rb +32 -0
- data/lib/trace_viz/collectors/{evaluators/hidden_evaluator.rb → steps/hidden_step.rb} +9 -5
- data/lib/trace_viz/collectors/steps/linking_step.rb +36 -0
- data/lib/trace_viz/collectors/{evaluators/filter_evaluator.rb → steps/validation_step.rb} +9 -6
- data/lib/trace_viz/collectors/steps.rb +10 -0
- data/lib/trace_viz/collectors/trace_pipeline.rb +26 -0
- data/lib/trace_viz/collectors/trace_pipeline_builder.rb +29 -0
- data/lib/trace_viz/collectors/trace_point_collector.rb +1 -11
- data/lib/trace_viz/config/validator.rb +6 -5
- data/lib/trace_viz/configuration.rb +3 -3
- data/lib/trace_viz/context/tracking_context.rb +4 -0
- data/lib/trace_viz/core/tracer.rb +2 -0
- data/lib/trace_viz/defaults/actions.rb +84 -0
- data/lib/trace_viz/defaults/colors.rb +61 -0
- data/lib/trace_viz/defaults/config.rb +89 -0
- data/lib/trace_viz/defaults/themes.rb +66 -0
- data/lib/trace_viz/defaults.rb +10 -129
- data/lib/trace_viz/exporters/base_exporter.rb +8 -11
- data/lib/trace_viz/exporters/export_manager.rb +33 -0
- data/lib/trace_viz/exporters/registry.rb +25 -0
- data/lib/trace_viz/exporters/text_exporter.rb +22 -0
- data/lib/trace_viz/formatters/base_formatter.rb +3 -30
- data/lib/trace_viz/formatters/export/base_formatter.rb +12 -0
- data/lib/trace_viz/formatters/export/formatter_factory.rb +27 -0
- data/lib/trace_viz/formatters/export/method_call_formatter.rb +21 -0
- data/lib/trace_viz/formatters/export/method_return_formatter.rb +22 -0
- data/lib/trace_viz/formatters/export/summary_group_formatter.rb +35 -0
- data/lib/trace_viz/formatters/helpers/depth_helper.rb +2 -8
- data/lib/trace_viz/formatters/helpers/indent_helper.rb +1 -1
- data/lib/trace_viz/formatters/helpers/log/color_helper.rb +23 -0
- data/lib/trace_viz/formatters/helpers/log/depth_helper.rb +22 -0
- data/lib/trace_viz/formatters/helpers/log/method_name_helper.rb +29 -0
- data/lib/trace_viz/formatters/helpers/log/params_helper.rb +51 -0
- data/lib/trace_viz/formatters/helpers/log/result_helper.rb +27 -0
- data/lib/trace_viz/formatters/helpers/log/summary/params_helper.rb +53 -0
- data/lib/trace_viz/formatters/helpers/method_details_helper.rb +1 -1
- data/lib/trace_viz/formatters/helpers/params_helper.rb +26 -9
- data/lib/trace_viz/formatters/helpers/result_helper.rb +1 -1
- data/lib/trace_viz/formatters/helpers/source_helper.rb +2 -1
- data/lib/trace_viz/formatters/helpers/summary/params_helper.rb +41 -0
- data/lib/trace_viz/formatters/helpers/summary/source_helper.rb +24 -0
- data/lib/trace_viz/formatters/helpers/time_helper.rb +2 -2
- data/lib/trace_viz/formatters/helpers.rb +10 -0
- data/lib/trace_viz/formatters/log/base_formatter.rb +13 -0
- data/lib/trace_viz/formatters/log/formatter_factory.rb +27 -0
- data/lib/trace_viz/formatters/log/method_call_formatter.rb +34 -0
- data/lib/trace_viz/formatters/log/method_return_formatter.rb +24 -0
- data/lib/trace_viz/formatters/log/summary_group_formatter.rb +40 -0
- data/lib/trace_viz/formatters/log/verbose_formatter.rb +14 -0
- data/lib/trace_viz/formatters/trace_data_formatter.rb +24 -0
- data/lib/trace_viz/helpers/config_helper.rb +13 -0
- data/lib/trace_viz/helpers/trace_point/param_helper.rb +98 -0
- data/lib/trace_viz/helpers/tracking_helper.rb +26 -0
- data/lib/trace_viz/helpers.rb +9 -0
- data/lib/trace_viz/logger.rb +9 -20
- data/lib/trace_viz/loggers/base_logger.rb +29 -0
- data/lib/trace_viz/loggers/log_level_resolver.rb +18 -0
- data/lib/trace_viz/loggers/logging_manager.rb +46 -0
- data/lib/trace_viz/loggers/post_collection_logger.rb +39 -0
- data/lib/trace_viz/loggers/trace_logger.rb +17 -18
- data/lib/trace_viz/loggers/trace_stats_logger.rb +28 -14
- data/lib/trace_viz/renderers/base_renderer.rb +24 -0
- data/lib/trace_viz/renderers/render_context.rb +18 -0
- data/lib/trace_viz/renderers/renderer_factory.rb +41 -0
- data/lib/trace_viz/renderers/summary/node_processor.rb +82 -0
- data/lib/trace_viz/renderers/summary_renderer.rb +22 -0
- data/lib/trace_viz/renderers/verbose_renderer.rb +29 -0
- data/lib/trace_viz/shared/renderer_helper.rb +46 -0
- data/lib/trace_viz/shared.rb +8 -0
- data/lib/trace_viz/trace_data/base.rb +16 -23
- data/lib/trace_viz/trace_data/node.rb +33 -0
- data/lib/trace_viz/trace_data/root_node.rb +20 -0
- data/lib/trace_viz/trace_data/summary_node.rb +49 -0
- data/lib/trace_viz/trace_data/trace_point/base.rb +22 -31
- data/lib/trace_viz/trace_data/trace_point/method_call.rb +22 -17
- data/lib/trace_viz/trace_data/trace_point/method_return.rb +21 -1
- data/lib/trace_viz/traits/depth_trackable.rb +13 -0
- data/lib/trace_viz/traits/identifiable.rb +25 -0
- data/lib/trace_viz/traits/time_trackable.rb +13 -0
- data/lib/trace_viz/traits.rb +10 -0
- data/lib/trace_viz/utils/colorize.rb +6 -6
- data/lib/trace_viz/utils/format_utils/key_value_formatter.rb +37 -0
- data/lib/trace_viz/utils/format_utils/value_truncator.rb +74 -0
- data/lib/trace_viz/utils/format_utils.rb +10 -53
- data/lib/trace_viz/utils/id_generator.rb +35 -0
- data/lib/trace_viz/version.rb +1 -1
- data/sig/adapters/base_adapter.rbs +11 -0
- data/sig/adapters/trace_point_adapter.rbs +13 -0
- data/sig/collectors/filters/registry.rbs +13 -0
- data/sig/collectors/trace_point_collector.rbs +17 -0
- data/sig/config/copier.rbs +15 -0
- data/sig/config/validator.rbs +18 -0
- data/sig/configuration.rbs +22 -0
- data/sig/context/base_context.rbs +9 -0
- data/sig/context/config_context.rbs +13 -0
- data/sig/context/manager.rbs +10 -0
- data/sig/context/map.rbs +13 -0
- data/sig/context.rbs +5 -0
- data/sig/core/tracer.rbs +7 -0
- data/sig/core.rbs +4 -0
- data/sig/defaults.rbs +17 -0
- data/sig/errors.rbs +13 -0
- data/sig/logger.rbs +33 -0
- data/sig/trace_viz.rbs +1 -2
- data/sig/utils/colorize.rbs +8 -0
- data/sig/utils/format_utils/key_value_formatter.rbs +16 -0
- data/sig/utils/format_utils/value_truncator.rbs +19 -0
- data/sig/utils/format_utils.rbs +8 -0
- data/sig/version.rbs +3 -0
- metadata +97 -18
- data/lib/trace_viz/collectors/depth_manager.rb +0 -37
- data/lib/trace_viz/collectors/evaluators/base_evaluator.rb +0 -23
- data/lib/trace_viz/exporters/formatters/base_formatter.rb +0 -12
- data/lib/trace_viz/exporters/formatters/method_call_formatter.rb +0 -21
- data/lib/trace_viz/exporters/formatters/method_return_formatter.rb +0 -22
- data/lib/trace_viz/exporters/transformers/base_transformer.rb +0 -25
- data/lib/trace_viz/exporters/transformers/text_transformer.rb +0 -28
- data/lib/trace_viz/loggers/trace_builder.rb +0 -30
- data/lib/trace_viz/loggers/trace_formatters/base_formatter.rb +0 -32
- data/lib/trace_viz/loggers/trace_formatters/method_call_formatter.rb +0 -21
- data/lib/trace_viz/loggers/trace_formatters/method_return_formatter.rb +0 -22
data/lib/trace_viz/defaults.rb
CHANGED
@@ -1,138 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
bold: "\e[1m",
|
8
|
-
dim: "\e[2m",
|
9
|
-
underline: "\e[4m",
|
10
|
-
reverse: "\e[7m",
|
11
|
-
black: "\e[30m",
|
12
|
-
red: "\e[31m",
|
13
|
-
green: "\e[32m",
|
14
|
-
yellow: "\e[33m",
|
15
|
-
blue: "\e[34m",
|
16
|
-
magenta: "\e[35m",
|
17
|
-
cyan: "\e[36m",
|
18
|
-
light_gray: "\e[37m",
|
19
|
-
dark_gray: "\e[90m",
|
20
|
-
light_red: "\e[91m",
|
21
|
-
light_green: "\e[92m",
|
22
|
-
light_yellow: "\e[93m",
|
23
|
-
light_blue: "\e[94m",
|
24
|
-
light_magenta: "\e[95m",
|
25
|
-
light_cyan: "\e[96m",
|
26
|
-
white: "\e[97m",
|
27
|
-
dim_light_gray: "\e[2;37m",
|
28
|
-
}.freeze
|
29
|
-
|
30
|
-
ACTION_EMOJIS = {
|
31
|
-
default: "",
|
32
|
-
info: "ℹ️",
|
33
|
-
success: "✅",
|
34
|
-
error: "❌",
|
35
|
-
warn: "⚠️",
|
36
|
-
start: "🚀",
|
37
|
-
processing: "🔄",
|
38
|
-
finish: "🏁",
|
39
|
-
exported: "📤",
|
40
|
-
skipped: "⏩",
|
41
|
-
stats: "📊",
|
42
|
-
}.freeze
|
43
|
-
|
44
|
-
ACTION_COLORS = {
|
45
|
-
default: :reset,
|
46
|
-
info: :cyan,
|
47
|
-
success: :green,
|
48
|
-
error: :light_red,
|
49
|
-
warn: :yellow,
|
50
|
-
start: :light_cyan,
|
51
|
-
processing: :dim_light_gray,
|
52
|
-
finish: :light_magenta,
|
53
|
-
exported: :light_green,
|
54
|
-
skipped: :dark_gray,
|
55
|
-
stats: :underline,
|
56
|
-
}.freeze
|
57
|
-
|
58
|
-
CONFIG = {
|
59
|
-
general: {
|
60
|
-
tab_size: 2,
|
61
|
-
show_indent: true,
|
62
|
-
show_depth: true,
|
63
|
-
max_display_depth: 3,
|
64
|
-
show_method_name: true,
|
65
|
-
},
|
66
|
-
source_location: {
|
67
|
-
show: false,
|
68
|
-
truncate_length: 100,
|
69
|
-
},
|
70
|
-
params: {
|
71
|
-
show: true,
|
72
|
-
mode: :name_and_value,
|
73
|
-
truncate_values: 50,
|
74
|
-
},
|
75
|
-
result: {
|
76
|
-
show: true,
|
77
|
-
truncate_length: 50,
|
78
|
-
},
|
79
|
-
execution: {
|
80
|
-
show_time: true,
|
81
|
-
show_trace_events: [:call, :return],
|
82
|
-
},
|
83
|
-
filters: [
|
84
|
-
:exclude_internal_call,
|
85
|
-
# :exclude_default_classes,
|
86
|
-
# :exclude_rails_framework,
|
87
|
-
# include_classes: {
|
88
|
-
# classes: [],
|
89
|
-
# },
|
90
|
-
# exclude_classes: {
|
91
|
-
# classes: [],
|
92
|
-
# },
|
93
|
-
# include_gems: {
|
94
|
-
# app_running: true,
|
95
|
-
# app_path: Dir.pwd,
|
96
|
-
# gems: [],
|
97
|
-
# },
|
98
|
-
# exclude_gems: {
|
99
|
-
# gems: [],
|
100
|
-
# },
|
101
|
-
],
|
102
|
-
export: {
|
103
|
-
enabled: true,
|
104
|
-
path: "tmp",
|
105
|
-
format: :txt,
|
106
|
-
overwrite: false,
|
107
|
-
},
|
108
|
-
}.freeze
|
3
|
+
require_relative "defaults/config"
|
4
|
+
require_relative "defaults/colors"
|
5
|
+
require_relative "defaults/themes"
|
6
|
+
require_relative "defaults/actions"
|
109
7
|
|
110
|
-
|
111
|
-
|
8
|
+
module TraceViz
|
9
|
+
module Defaults
|
10
|
+
@action_colors = Actions::COLORS.dup
|
112
11
|
|
113
12
|
class << self
|
114
|
-
|
115
|
-
COLORS
|
116
|
-
end
|
117
|
-
|
118
|
-
def action_colors
|
119
|
-
ACTION_COLORS
|
120
|
-
end
|
121
|
-
|
122
|
-
def action_emojis
|
123
|
-
ACTION_EMOJIS
|
124
|
-
end
|
125
|
-
|
126
|
-
def fetch_defaults
|
127
|
-
CONFIG.dup
|
128
|
-
end
|
129
|
-
|
130
|
-
def valid_param_modes
|
131
|
-
VALID_PARAM_MODES
|
132
|
-
end
|
13
|
+
attr_reader :action_colors
|
133
14
|
|
134
|
-
def
|
135
|
-
|
15
|
+
def action_colors=(new_colors)
|
16
|
+
@action_colors.merge!(new_colors)
|
136
17
|
end
|
137
18
|
end
|
138
19
|
end
|
@@ -1,18 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "fileutils"
|
4
|
-
|
5
|
-
require "trace_viz/
|
6
|
-
require_relative "transformers/text_transformer"
|
4
|
+
require "trace_viz/helpers"
|
5
|
+
require "trace_viz/shared"
|
7
6
|
|
8
7
|
module TraceViz
|
9
8
|
module Exporters
|
10
9
|
class BaseExporter
|
10
|
+
include Helpers::ConfigHelper
|
11
|
+
include Shared::RendererHelper
|
12
|
+
|
11
13
|
def initialize(collector)
|
12
|
-
@config = Context.for(:config).configuration
|
13
14
|
@export_config = config.export
|
14
15
|
@logger = config.logger
|
15
|
-
|
16
|
+
|
17
|
+
@collector = collector
|
16
18
|
end
|
17
19
|
|
18
20
|
def export
|
@@ -32,12 +34,7 @@ module TraceViz
|
|
32
34
|
|
33
35
|
private
|
34
36
|
|
35
|
-
attr_reader :
|
36
|
-
|
37
|
-
def transform_collector_data(collector)
|
38
|
-
transformer = Transformers::TextTransformer.new(collector)
|
39
|
-
transformer.transform
|
40
|
-
end
|
37
|
+
attr_reader :export_config, :logger, :collector
|
41
38
|
|
42
39
|
def content
|
43
40
|
raise NotImplementedError
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "trace_viz/helpers"
|
4
|
+
require_relative "registry"
|
5
|
+
|
6
|
+
module TraceViz
|
7
|
+
module Exporters
|
8
|
+
class ExportManager
|
9
|
+
include Helpers::ConfigHelper
|
10
|
+
|
11
|
+
def export(collector)
|
12
|
+
return unless export_enabled?
|
13
|
+
|
14
|
+
exporter = build_exporter(collector)
|
15
|
+
exporter.export
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def build_exporter(collector)
|
21
|
+
Registry.build(export_format, collector)
|
22
|
+
end
|
23
|
+
|
24
|
+
def export_format
|
25
|
+
config.export[:format]
|
26
|
+
end
|
27
|
+
|
28
|
+
def export_enabled?
|
29
|
+
config.export[:enabled]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "text_exporter"
|
4
|
+
|
5
|
+
module TraceViz
|
6
|
+
module Exporters
|
7
|
+
class Registry
|
8
|
+
EXPORTS = {
|
9
|
+
txt: TextExporter,
|
10
|
+
}
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def build(format, *options)
|
14
|
+
raise ArgumentError unless supported_formats.include?(format)
|
15
|
+
|
16
|
+
EXPORTS[format].new(*options)
|
17
|
+
end
|
18
|
+
|
19
|
+
def supported_formats
|
20
|
+
EXPORTS.keys
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,15 +1,37 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "base_exporter"
|
4
|
+
require "trace_viz/renderers/renderer_factory"
|
5
|
+
require "trace_viz/renderers/render_context"
|
6
|
+
require "trace_viz/formatters/export/formatter_factory"
|
4
7
|
|
5
8
|
module TraceViz
|
6
9
|
module Exporters
|
7
10
|
class TextExporter < BaseExporter
|
11
|
+
def initialize(collector)
|
12
|
+
super(collector)
|
13
|
+
|
14
|
+
@renderer = build_renderer(collector, Formatters::Export::FormatterFactory)
|
15
|
+
end
|
16
|
+
|
8
17
|
private
|
9
18
|
|
19
|
+
attr_reader :renderer
|
20
|
+
|
10
21
|
def content
|
11
22
|
data.join("\n")
|
12
23
|
end
|
24
|
+
|
25
|
+
def data
|
26
|
+
process_lines(renderer.to_lines) { |line| process_line(line) }
|
27
|
+
end
|
28
|
+
|
29
|
+
def process_line(line)
|
30
|
+
[
|
31
|
+
line[:line],
|
32
|
+
*process_lines(line[:nested_lines]) { |nested| process_line(nested) },
|
33
|
+
].compact
|
34
|
+
end
|
13
35
|
end
|
14
36
|
end
|
15
37
|
end
|
@@ -1,42 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
require_relative "helpers/depth_helper"
|
5
|
-
require_relative "helpers/time_helper"
|
6
|
-
require_relative "helpers/params_helper"
|
7
|
-
require_relative "helpers/source_helper"
|
8
|
-
require_relative "helpers/result_helper"
|
9
|
-
require_relative "helpers/method_details_helper"
|
3
|
+
require "trace_viz/helpers"
|
10
4
|
|
11
5
|
module TraceViz
|
12
6
|
module Formatters
|
13
7
|
class BaseFormatter
|
14
|
-
|
15
|
-
# General formatting methods for TraceData::Base
|
16
|
-
# These methods are used to format the output of the trace data
|
17
|
-
# based on the configuration settings.
|
18
|
-
#
|
8
|
+
include Helpers::ConfigHelper
|
19
9
|
|
20
|
-
|
21
|
-
include Helpers::DepthHelper
|
22
|
-
include Helpers::TimeHelper
|
23
|
-
include Helpers::ParamsHelper
|
24
|
-
include Helpers::SourceHelper
|
25
|
-
include Helpers::ResultHelper
|
26
|
-
include Helpers::MethodDetailsHelper
|
27
|
-
|
28
|
-
def initialize(trace_data)
|
29
|
-
@trace_data = trace_data
|
30
|
-
@config = @trace_data.config
|
31
|
-
end
|
32
|
-
|
33
|
-
def format
|
10
|
+
def call
|
34
11
|
raise NotImplementedError
|
35
12
|
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
attr_reader :trace_data, :config
|
40
13
|
end
|
41
14
|
end
|
42
15
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "method_call_formatter"
|
4
|
+
require_relative "method_return_formatter"
|
5
|
+
require_relative "summary_group_formatter"
|
6
|
+
|
7
|
+
module TraceViz
|
8
|
+
module Formatters
|
9
|
+
module Export
|
10
|
+
class FormatterFactory
|
11
|
+
FORMATTERS = {
|
12
|
+
call: MethodCallFormatter.new,
|
13
|
+
return: MethodReturnFormatter.new,
|
14
|
+
summary_group: SummaryGroupFormatter.new,
|
15
|
+
}.freeze
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def fetch_formatter(key)
|
19
|
+
FORMATTERS.fetch(key) do
|
20
|
+
raise ArgumentError, "Unsupported factory key: #{key}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base_formatter"
|
4
|
+
|
5
|
+
module TraceViz
|
6
|
+
module Formatters
|
7
|
+
module Export
|
8
|
+
class MethodCallFormatter < BaseFormatter
|
9
|
+
def call(trace_data)
|
10
|
+
[
|
11
|
+
indent_representation(trace_data),
|
12
|
+
depth_representation(trace_data),
|
13
|
+
method_name_representation(trace_data),
|
14
|
+
source_location_representation(trace_data),
|
15
|
+
params_representation(trace_data),
|
16
|
+
].compact.join(" ")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base_formatter"
|
4
|
+
|
5
|
+
module TraceViz
|
6
|
+
module Formatters
|
7
|
+
module Export
|
8
|
+
class MethodReturnFormatter < BaseFormatter
|
9
|
+
def call(trace_data)
|
10
|
+
[
|
11
|
+
indent_representation(trace_data),
|
12
|
+
depth_representation(trace_data),
|
13
|
+
method_name_representation(trace_data),
|
14
|
+
result_representation(trace_data),
|
15
|
+
source_location_representation(trace_data),
|
16
|
+
execution_time_representation(trace_data),
|
17
|
+
].compact.join(" ")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base_formatter"
|
4
|
+
|
5
|
+
module TraceViz
|
6
|
+
module Formatters
|
7
|
+
module Export
|
8
|
+
class SummaryGroupFormatter < BaseFormatter
|
9
|
+
include Helpers::Summary::ParamsHelper
|
10
|
+
include Helpers::Summary::SourceHelper
|
11
|
+
|
12
|
+
def call(trace_data)
|
13
|
+
[
|
14
|
+
indent_representation(trace_data),
|
15
|
+
depth_representation(trace_data),
|
16
|
+
Defaults::Actions.emoji_for(:processing),
|
17
|
+
method_name_representation(trace_data),
|
18
|
+
source_location_representation(trace_data),
|
19
|
+
format_params_template(trace_data, config),
|
20
|
+
summary_info(trace_data),
|
21
|
+
].compact.join(" ")
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def summary_info(trace_data)
|
27
|
+
"[Summary: #{trace_data.count} calls | Avg Time: #{format(
|
28
|
+
"in %.6fms",
|
29
|
+
trace_data.average_duration,
|
30
|
+
)}]"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -4,16 +4,10 @@ module TraceViz
|
|
4
4
|
module Formatters
|
5
5
|
module Helpers
|
6
6
|
module DepthHelper
|
7
|
-
def depth_representation
|
7
|
+
def depth_representation(trace_data)
|
8
8
|
return unless config.general[:show_depth]
|
9
9
|
|
10
|
-
|
11
|
-
"depth[0]"
|
12
|
-
elsif trace_data.event == :call
|
13
|
-
"depth[#{trace_data.depth}]"
|
14
|
-
elsif trace_data.event == :return
|
15
|
-
"depth[#{trace_data.depth}]"
|
16
|
-
end
|
10
|
+
"depth[#{trace_data.depth}]"
|
17
11
|
end
|
18
12
|
end
|
19
13
|
end
|
@@ -4,7 +4,7 @@ module TraceViz
|
|
4
4
|
module Formatters
|
5
5
|
module Helpers
|
6
6
|
module IndentHelper
|
7
|
-
def indent_representation
|
7
|
+
def indent_representation(trace_data)
|
8
8
|
return unless config.general[:show_indent] && config.general[:show_depth]
|
9
9
|
|
10
10
|
" " * (config.general[:tab_size] * trace_data.depth)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "trace_viz/utils/colorize"
|
4
|
+
|
5
|
+
module TraceViz
|
6
|
+
module Formatters
|
7
|
+
module Helpers
|
8
|
+
module Log
|
9
|
+
module ColorHelper
|
10
|
+
def colorize_for(text, action)
|
11
|
+
colors = Defaults::Actions.colors_for(action)
|
12
|
+
|
13
|
+
colorize(text, *colors)
|
14
|
+
end
|
15
|
+
|
16
|
+
def colorize(text, *colors)
|
17
|
+
Utils::Colorize.colorize(text, *colors)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TraceViz
|
4
|
+
module Formatters
|
5
|
+
module Helpers
|
6
|
+
module Log
|
7
|
+
module DepthHelper
|
8
|
+
def format_depth(trace_data, config)
|
9
|
+
return unless config.general[:show_depth]
|
10
|
+
|
11
|
+
prefix = colorize_for("depth", :trace_depth_prefix)
|
12
|
+
open_block = colorize_for("[", :trace_depth_open)
|
13
|
+
number = colorize_for(trace_data.depth, :trace_depth_value)
|
14
|
+
close_block = colorize_for("]", :trace_depth_close)
|
15
|
+
|
16
|
+
[prefix, open_block, number, close_block].join
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TraceViz
|
4
|
+
module Formatters
|
5
|
+
module Helpers
|
6
|
+
module Log
|
7
|
+
module MethodNameHelper
|
8
|
+
def format_method_name(trace_data, config)
|
9
|
+
return unless config.general[:show_method_name]
|
10
|
+
|
11
|
+
"#{format_class_name(trace_data)}#{format_action_name(trace_data)}"
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def format_class_name(trace_data)
|
17
|
+
klass = colorize_for(trace_data.klass, :trace_method_class)
|
18
|
+
method_sign = colorize_for("#", :trace_method_sign)
|
19
|
+
[klass, method_sign].join
|
20
|
+
end
|
21
|
+
|
22
|
+
def format_action_name(trace_data)
|
23
|
+
colorize_for(trace_data.action, :trace_method_action)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "trace_viz/utils/format_utils"
|
4
|
+
|
5
|
+
module TraceViz
|
6
|
+
module Formatters
|
7
|
+
module Helpers
|
8
|
+
module Log
|
9
|
+
module ParamsHelper
|
10
|
+
def format_params(trace_data, config)
|
11
|
+
return unless config.params[:show]
|
12
|
+
|
13
|
+
params = prepare_params(trace_data.params, config)
|
14
|
+
wrap_params(params, config)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def prepare_params(params, config)
|
20
|
+
params
|
21
|
+
.then { |p| truncate_values(p, config.params[:truncate_values]) }
|
22
|
+
.then { |p| colorize_keys_and_values(p) }
|
23
|
+
.then { |p| format_as_string(p, config.params[:mode]) }
|
24
|
+
end
|
25
|
+
|
26
|
+
def truncate_values(params, length)
|
27
|
+
return params unless length
|
28
|
+
|
29
|
+
params.transform_values { |value| Utils::FormatUtils.truncate_value(value, length) }
|
30
|
+
end
|
31
|
+
|
32
|
+
def colorize_keys_and_values(params)
|
33
|
+
params.transform_keys { |key| colorize_for(key.to_s, :trace_params_key) }
|
34
|
+
.transform_values { |value| colorize_for(value.to_s, :trace_params_value) }
|
35
|
+
end
|
36
|
+
|
37
|
+
def format_as_string(params, mode)
|
38
|
+
Utils::FormatUtils.format_key_value_pairs(params, mode)
|
39
|
+
end
|
40
|
+
|
41
|
+
def wrap_params(params_string, config)
|
42
|
+
return unless params_string
|
43
|
+
|
44
|
+
truncated = Utils::FormatUtils.truncate_value(params_string, config.params[:truncate_length])
|
45
|
+
"(#{truncated})"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "trace_viz/utils/format_utils"
|
4
|
+
|
5
|
+
module TraceViz
|
6
|
+
module Formatters
|
7
|
+
module Helpers
|
8
|
+
module Log
|
9
|
+
module ResultHelper
|
10
|
+
def format_result(trace_data, config)
|
11
|
+
return unless config.result[:show]
|
12
|
+
|
13
|
+
truncated_result = Utils::FormatUtils.truncate_value(
|
14
|
+
trace_data.result.inspect,
|
15
|
+
config.result[:truncate_length],
|
16
|
+
)
|
17
|
+
|
18
|
+
prefix = colorize_for("#=>", :trace_result_prefix)
|
19
|
+
result = colorize_for(truncated_result, :trace_result_value)
|
20
|
+
|
21
|
+
[prefix, result].join(" ")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|