Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

生成代码依赖图: rust golang

位制烈张巴
524 0 0
先从上层观察是阅读代码的第一步,下面分别介绍使用rust语言编写的grin,和以golang编写的lnd的代码依赖图(dependecy graph)的生成方法。- L7 a6 B* }2 M8 L. p  w4 R
rust
& w$ r: V1 A5 b/ M8 a0 Z使用工具cargo-deps生成 grin 依赖图。
, R+ I& ]3 }, t& I0 H3 |2 d+ e, C! W需要安装:! k6 B3 \- M: q  D1 j7 u
cargo-deps用于将代码依赖关系使用dot语言表现graphviz用于将dot语言转成svg/png格式,我倾向于使用svg,因为有些大型项目依赖关系复杂,png格式会很大,打开会很慢,svg格式则好很多,不过一般系统一般不自带svg浏览器,需要另外安装' L- |5 u. v& A! c( @- M% a- j
4 L/ j3 M5 A4 g& b. N1 N+ T7 @4 q9 O5 N
cargo deps --subgraph grin grin_api grin_config grin_core grin_keychain grin_p2p grin_servers grin_util grin_wallet --filter grin grin_api grin_config grin_core grin_keychain grin_p2p grin_servers grin_util grin_wallet blake2-rfc chrono clap rpassword ctrlc humansize serde serde_json log term linefeed failure failure_derive | dot -Tsvg > 1.svg
7 ^1 x4 Q7 X2 g. e8 _4 t& Y其中:
2 \2 w( Y! w/ ~# g, z--subgraph 表示将后面的一串package放在一个方框内--fiter表示只显示后续的一串package,如果不设置,遇到大型项目,生成的图会很大,线条缠绕在一起,很难屡清楚关系。! Z" A" c+ J& j; S) H( U. o3 I
) G# j8 |: A9 R
$ g% e7 d; v% d" S6 r! X* `
golang
' D7 r) o( n+ [使用工具 go-callvis 查看lnd的依赖图:
0 j: c" P1 l* w4 wgo get -u github.com/TrueFurby/go-callvis. V' \* a7 r1 O
go get github.com/lightningnetwork/lnd$ o% {6 M7 X/ B0 F0 q8 b3 a
go-callvis github.com/lightningnetwork/lnd/cmd/lncli
, D" C8 I2 u. ~/ y8 }* Y会自动在浏览器打开链接:
+ O8 W' A/ N) E* B' K
: V$ f9 L. R' n6 v7 B9 E上述的只是最简单的用法,详细的参数使用方法可以参见我写的wiki https://github.com/TrueFurby/go-callvis/wiki/Use-flags+ _' |% T  ~# [& l' z
可惜的是运行go-callvis github.com/lightningnetwork/lnd会出错,bug来源于golang本身,1年前的issue至今未解决,golang现在有4000多个Open issues,可见golang的不成熟带来的麻烦,新潮语言的弊端。
# W7 g- E9 P* D: N6 ]5 Vhttps://github.com/TrueFurby/go-callvis/issues/24https://github.com/golang/go/issues/25090
8 l0 D4 [# V2 l& p0 L0 W
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

位制烈张巴 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    1