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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8fffeaf37d8c9d9854f95159dba5ab2c8d9657a4ad63828e04164a79911ba4a3
|
4
|
+
data.tar.gz: 8c868e5bd2e954611c280fcb23a68cbf059f8314a98f7aaba2d3da909197e203
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25fa2eb78c78ad670bc3dd5e2819880154e4119c7260ab4127d35d7f75bcf56a23e237a0eb4cbbd893e2d3f6547a57496b432a214a2145770bdb252385d7dd94
|
7
|
+
data.tar.gz: f267c37003eaa0a4a4427e6faedac0e83827e3e5c6433bc22aee68a32b5b14a07abc51cf6d71bbfaf9aff3bfb0448cd381d1e168bb34e345d95c138478623635
|
data/README.md
CHANGED
@@ -2,8 +2,9 @@
|
|
2
2
|
|
3
3
|
[](https://rubygems.org/gems/trace_viz)
|
4
4
|
[](https://rubygems.org/gems/trace_viz)
|
5
|
-
[](https://github.com/patrick204nqh/trace_viz/actions)
|
6
6
|
[](https://codeclimate.com/github/patrick204nqh/trace_viz/maintainability)
|
7
|
+
[](https://codeclimate.com/github/patrick204nqh/trace_viz/test_coverage)
|
7
8
|

|
8
9
|
|
9
10
|
TraceViz is a Ruby library designed to trace and visualize events executed in a block of code. It is useful for logging, debugging, and generating diagrams to understand code execution and flow.
|
@@ -14,7 +15,7 @@ The gem allows you to customize how much detail you want to see, such as method
|
|
14
15
|
|
15
16
|
## Demo
|
16
17
|
|
17
|
-
[](https://asciinema.org/a/lKXPPgx0muZuQbtvMu8GyHaOV)
|
18
19
|
|
19
20
|
## Installation
|
20
21
|
|
@@ -160,7 +161,7 @@ end
|
|
160
161
|
|
161
162
|
**Output**
|
162
163
|
|
163
|
-
<details>
|
164
|
+
<details open>
|
164
165
|
<summary>Sample Output</summary>
|
165
166
|
|
166
167
|
```bash
|
@@ -181,44 +182,46 @@ Final result: 24
|
|
181
182
|
|
182
183
|
TraceViz provides extensive configuration options to customize tracing behavior.
|
183
184
|
|
184
|
-
| Group | Option | Type | Default Value
|
185
|
-
| ----------------- | -------------------------- | ---------------- |
|
186
|
-
| `general` | `tab_size` | Integer | 2
|
187
|
-
| | `
|
188
|
-
| | `
|
189
|
-
| | `
|
190
|
-
| | `
|
191
|
-
|
|
192
|
-
| | `
|
193
|
-
| `
|
194
|
-
| | `
|
195
|
-
|
|
196
|
-
|
|
197
|
-
| | `
|
198
|
-
| `
|
199
|
-
| | `
|
200
|
-
| `
|
201
|
-
| |
|
202
|
-
|
|
203
|
-
| | `
|
204
|
-
| |
|
205
|
-
| | `
|
206
|
-
| | - `classes` | Array | []
|
207
|
-
| | `
|
208
|
-
| | - `
|
209
|
-
| |
|
210
|
-
| | - `
|
211
|
-
| | `
|
212
|
-
| | - `gems` | Array | []
|
213
|
-
|
|
214
|
-
| | `
|
215
|
-
|
|
216
|
-
| | `
|
185
|
+
| Group | Option | Type | Default Value | Description |
|
186
|
+
| ----------------- | -------------------------- | ---------------- | --------------------------- | -------------------------------------------------------------------------- |
|
187
|
+
| `general` | `tab_size` | Integer | 2 | Number of spaces for indentation. |
|
188
|
+
| | `mode` | Symbol | `:summary` | Display mode (`:summary` or `:verbose`). |
|
189
|
+
| | `group_keys` | Array of Symbols | `[:event, :klass, :action]` | Keys to group similar outputs. |
|
190
|
+
| | `show_indent` | Boolean | true | Enables visual indentation for nested calls. |
|
191
|
+
| | `show_depth` | Boolean | true | Displays the depth level of the method call. |
|
192
|
+
| | `max_display_depth` | Integer | 3 | Maximum depth of calls to display. |
|
193
|
+
| | `show_method_name` | Boolean | true | Logs the name of the method being executed. |
|
194
|
+
| `source_location` | `show` | Boolean | false | Logs the source file and line number for methods. |
|
195
|
+
| | `truncate_length` | Integer | 100 | Maximum length of displayed source location information. |
|
196
|
+
| `params` | `show` | Boolean | true | Logs method parameters. |
|
197
|
+
| | `mode` | Symbol | `:name_and_value` | Parameter display mode (`:name`, `:value`, or `:name_and_value`). |
|
198
|
+
| | `truncate_values` | Integer | 50 | Maximum length of parameter values to display. |
|
199
|
+
| `result` | `show` | Boolean | true | Logs method return values. |
|
200
|
+
| | `truncate_length` | Integer | 50 | Maximum length of return value logs. |
|
201
|
+
| `execution` | `show_time` | Boolean | true | Logs execution time for methods. |
|
202
|
+
| | `show_trace_events` | Array of Symbols | `[:call, :return]` | Specifies the trace events to log (e.g., `:call`, `:return`). |
|
203
|
+
| `filters` | `:exclude_internal_call` | Symbol | N/A | Exclude internal Ruby calls. |
|
204
|
+
| | `:exclude_default_classes` | Symbol | N/A | Skip logging standard library classes. |
|
205
|
+
| | `:exclude_rails_framework` | Symbol | N/A | Ignore Rails framework classes and methods. |
|
206
|
+
| | `include_classes` | Hash | N/A | Specify classes to include in tracing. |
|
207
|
+
| | - `classes` | Array | [] | List of class names to include (e.g., `["ClassName"]`). |
|
208
|
+
| | `exclude_classes` | Hash | N/A | Specify classes to exclude from tracing. |
|
209
|
+
| | - `classes` | Array | [] | List of class names to exclude (e.g., `["ClassName"]`). |
|
210
|
+
| | `include_gems` | Hash | N/A | Include specific gems or runtime application gems. |
|
211
|
+
| | - `app_running` | Boolean | true | Include the code of the application. |
|
212
|
+
| | - `app_path` | String | `Dir.pwd` | Path to the application (e.g., `Dir.pwd`). |
|
213
|
+
| | - `gems` | Array | [] | List of gems to include (e.g., `["gem1", "gem2"]`). |
|
214
|
+
| | `exclude_gems` | Hash | N/A | Exclude specified gems. |
|
215
|
+
| | - `gems` | Array | [] | List of gems to exclude (e.g., `["excluded_gem"]`). |
|
216
|
+
| `export` | `enabled` | Boolean | true | Enables or disables exporting of trace logs. |
|
217
|
+
| | `path` | String | `"tmp"` | Directory for exported trace logs. |
|
218
|
+
| | `format` | Symbol | `:txt` | Format for trace logs (`:txt`). `.json` and `.yaml` are under development. |
|
219
|
+
| | `overwrite` | Boolean | false | Prevents overwriting of existing exported files. |
|
217
220
|
|
218
221
|
### Notes
|
219
222
|
|
220
223
|
- **Default Skipped Classes**: The following standard library classes are excluded by default when `:exclude_default_classes` is enabled:
|
221
|
-
- `Object`, `String`, `Array`, `Hash`, `Numeric`, `Integer`, `Float`, `Symbol`, `Kernel`, `Module`, `Class`, `Range`, `Regexp`.
|
224
|
+
- `Object`, `String`, `Array`, `Hash`, `Numeric`, `Integer`, `Float`, `Symbol`, `Kernel`, `Module`, `Class`, `Range`, `Regexp`, `Set`, `Gem`.
|
222
225
|
|
223
226
|
## Development
|
224
227
|
|
data/Steepfile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
D = Steep::Diagnostic
|
4
|
+
|
5
|
+
target :lib do
|
6
|
+
signature "sig"
|
7
|
+
# ignore_signature "sig/test"
|
8
|
+
|
9
|
+
check "lib" # Directory name
|
10
|
+
# check "path/to/source.rb" # File name
|
11
|
+
# check "app/models/**/*.rb" # Glob
|
12
|
+
# ignore "lib/templates/*.rb"
|
13
|
+
|
14
|
+
# library "pathname" # Standard libraries
|
15
|
+
# library "strong_json" # Gems
|
16
|
+
|
17
|
+
# configure_code_diagnostics(D::Ruby.default) # `default` diagnostics setting (applies by default)
|
18
|
+
# configure_code_diagnostics(D::Ruby.strict) # `strict` diagnostics setting
|
19
|
+
# configure_code_diagnostics(D::Ruby.lenient) # `lenient` diagnostics setting
|
20
|
+
# configure_code_diagnostics(D::Ruby.silent) # `silent` diagnostics setting
|
21
|
+
# configure_code_diagnostics do |hash| # You can setup everything yourself
|
22
|
+
# hash[D::Ruby::NoMethod] = :information
|
23
|
+
# end
|
24
|
+
end
|
25
|
+
|
26
|
+
target :test do
|
27
|
+
unreferenced! # Skip type checking the `lib` code when types in `test` target is changed
|
28
|
+
# signature "sig/test" # Put RBS files for tests under `sig/test`
|
29
|
+
check "test" # Type check Ruby scripts under `test`
|
30
|
+
|
31
|
+
configure_code_diagnostics(D::Ruby.lenient) # Weak type checking for test code
|
32
|
+
|
33
|
+
# library "pathname" # Standard libraries
|
34
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
|
2
|
+
require 'eu_central_bank'
|
3
|
+
require 'i18n'
|
4
|
+
require 'trace_viz'
|
5
|
+
|
6
|
+
# Fix the locale issue
|
7
|
+
I18n.config.available_locales = [:en]
|
8
|
+
I18n.locale = :en
|
9
|
+
|
10
|
+
TraceViz.trace(
|
11
|
+
general: {
|
12
|
+
tab_size: 1,
|
13
|
+
mode: :summary,
|
14
|
+
show_indent: true,
|
15
|
+
show_depth: true,
|
16
|
+
max_display_depth: 5,
|
17
|
+
show_method_name: true,
|
18
|
+
},
|
19
|
+
params: {
|
20
|
+
show: true,
|
21
|
+
mode: :name_only,
|
22
|
+
# truncate_length: 10
|
23
|
+
},
|
24
|
+
result: {
|
25
|
+
show: true,
|
26
|
+
truncate_length: 15,
|
27
|
+
},
|
28
|
+
source_location: {
|
29
|
+
show: true,
|
30
|
+
truncate_length: 50,
|
31
|
+
},
|
32
|
+
execution: {
|
33
|
+
show_time: true,
|
34
|
+
show_trace_events: [:call, :return],
|
35
|
+
},
|
36
|
+
log: {
|
37
|
+
runtime: false,
|
38
|
+
post_collection: true,
|
39
|
+
stats: true
|
40
|
+
},
|
41
|
+
filters: [
|
42
|
+
:exclude_internal_call,
|
43
|
+
:exclude_default_classes,
|
44
|
+
# include_classes: {
|
45
|
+
# classes: [EuCentralBank],
|
46
|
+
# },
|
47
|
+
# exclude_classes: {
|
48
|
+
# classes: ['Gem']
|
49
|
+
# },
|
50
|
+
exclude_gems: {
|
51
|
+
gems: ['nokogiri', 'money', 'i18n']
|
52
|
+
}
|
53
|
+
],
|
54
|
+
export: {
|
55
|
+
enabled: true,
|
56
|
+
format: :txt,
|
57
|
+
overwrite: true,
|
58
|
+
}
|
59
|
+
) do
|
60
|
+
# Create a new instance of the EuCentralBank
|
61
|
+
bank = EuCentralBank.new
|
62
|
+
|
63
|
+
# Trace the update of exchange rates
|
64
|
+
bank.update_rates
|
65
|
+
|
66
|
+
# Trace conversion of currency
|
67
|
+
result = bank.exchange(50, 'USD', 'EUR')
|
68
|
+
puts "Converted amount: #{result}"
|
69
|
+
end
|