Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

生成代码依赖图: rust golang

位制烈张巴
388 0 0
先从上层观察是阅读代码的第一步,下面分别介绍使用rust语言编写的grin,和以golang编写的lnd的代码依赖图(dependecy graph)的生成方法。
# q) n6 x% P) L, D( Crust0 l/ e) w3 r: }( t
使用工具cargo-deps生成 grin 依赖图。" n' U$ r/ r& P+ E  \6 T# U
需要安装:
% H- f4 t7 R" Y) g& S* m! icargo-deps用于将代码依赖关系使用dot语言表现graphviz用于将dot语言转成svg/png格式,我倾向于使用svg,因为有些大型项目依赖关系复杂,png格式会很大,打开会很慢,svg格式则好很多,不过一般系统一般不自带svg浏览器,需要另外安装) L1 G) t  ?* I" E; q
8 ?! b. F" l5 F( e8 U" O
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& b/ Y& V4 p' u+ M3 H* F; K2 h; ?
其中:3 v0 t5 q. _' V) y  a3 R8 q& f
--subgraph 表示将后面的一串package放在一个方框内--fiter表示只显示后续的一串package,如果不设置,遇到大型项目,生成的图会很大,线条缠绕在一起,很难屡清楚关系。5 [! C8 E/ z) D& A  t6 `) A6 M: E

3 i$ h4 g* m0 k4 X4 L8 t1 V# p, [0 ]& X+ F5 C* ^* b+ {5 R
golang
6 n1 i8 d0 O" e5 ^' v: |& `  U使用工具 go-callvis 查看lnd的依赖图:+ H; k2 b9 S$ i* |/ f# L; @; M
go get -u github.com/TrueFurby/go-callvis" T# v1 I# `* f+ I& }) Y5 j
go get github.com/lightningnetwork/lnd
& U- i# {5 ~) O* v4 k+ lgo-callvis github.com/lightningnetwork/lnd/cmd/lncli
8 J. B2 u0 F; V+ H: W9 a- e会自动在浏览器打开链接:' u6 _/ k/ m6 N  n
4 e# A2 t+ }% n, v# s8 ~
上述的只是最简单的用法,详细的参数使用方法可以参见我写的wiki https://github.com/TrueFurby/go-callvis/wiki/Use-flags
5 n7 k& e/ X5 R0 h) U+ n/ I9 i可惜的是运行go-callvis github.com/lightningnetwork/lnd会出错,bug来源于golang本身,1年前的issue至今未解决,golang现在有4000多个Open issues,可见golang的不成熟带来的麻烦,新潮语言的弊端。
- }& A$ L2 W* j$ v2 S- whttps://github.com/TrueFurby/go-callvis/issues/24https://github.com/golang/go/issues/250909 F/ U- W2 H9 e3 j0 x
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

位制烈张巴 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    1