做一个可视化追踪调用的 gem ,比较粗糙,分享下。
项目地址: https://github.com/Mark24Code/vistual_call
VistualCall is a gem to help you trace your code and export beautiful vistual call graph.
You need to install Graphviz by yourself.
Go to install graphviz.
gem install vistual_call
require 'vistual_call'
def call_c
end
def call_b
call_c
end
def call_a
call_b
end
VistualCall.trace do
call_a # enter call
end
The method after each node is call order number. This will help your understand the order of the function call.
# you can pass options
VistualCall.trace(options) do
# run your code here...
end
Options:
name | type | required | explain | example |
---|---|---|---|---|
label | String | true | 标题 | Hello |
labelloc | Symbol | false | 标题位置: :top :bottom :center | :top |
labeljust | Symbol | false | 标题对齐位置 :left, :center, :right | :center |
direction | Symbol | false | 绘制方向,依次是 :TB(从上到下),:LR(从左到右,默认方式),:BT(从下到上),:RL(从右到左) | :LR |
format | String | false | 输出图片格式,查看 graphviz 支持输出格式 'png'、'svg' | 默认 'png' |
output | String | false | 导出图片绝对路径 | 默认家目录下 vistual_call_result.png |
theme | Symbol | false | 配色主题 :sky, :lemon | 默认 :sky |
show_dot | boolean | false | 展示 dot 内容 | 默认 false |
show_order_number | boolean | false | 输出调用序号 | 默认 true |
jump_list | Array(String) | false | 跳过节点,默认 ["Kernel#class", "Kernel#frozen?"] | - |
heightlight_match | Regex | false | 默认高亮匹配 label , 默认 /method_missing/ | /method_missing/ |
The gem is available as open source under the terms of the MIT License.
1
Mark24 OP 用 vistual_call 分析 vistual_call 自己
```ruby require_relative "vistual_call" def call_a end VistualCall.trace(title: "Outer", show_dot: true) do VistualCall.trace(title: "Inner", show_dot: true) do call_a # whatever end end ``` ![]( https://l.ruby-china.com/photo/Mark24/8456f872-039b-49bf-87a5-b3e43e874e27.jpg!large) |