Replies: 7 comments 6 replies
-
基于cargo tree的组件依赖关系小工具在命令行参数传入arceos的modules或crate的名称,可以生成其依赖关系
输出结果:
渲染结果: graph TD;
axtask-->axconfig
axtask-->axhal
axhal-->axconfig
axhal-->axlog
axlog-->crate_interface
axlog-->spinlock
spinlock-->kernel_guard
kernel_guard-->crate_interface
axhal-->crate_interface
axhal-->handler_table
axhal-->kernel_guard
axhal-->lazy_init
axhal-->memory_addr
axhal-->percpu
percpu-->percpu_macros
axhal-->spinlock
axtask-->crate_interface
axtask-->kernel_guard
axtask-->lazy_init
axtask-->memory_addr
axtask-->percpu
axtask-->scheduler
scheduler-->linked_list
axtask-->spinlock
axtask-->timer_list
|
Beta Was this translation helpful? Give feedback.
-
大家可以看看还有哪些可以改进的,一起分工来逐步扩展这个工具的功能。 |
Beta Was this translation helpful? Give feedback.
-
@Tim-C1 站在arceos开发者的角度,有一个需求:参考 make A=apps/memtest SMP=4 LOG=info run 是可以把memtest运行起来,如果执行 make A=apps/memtest SMP=4 LOG=info dependency 则可以生成一个 graph,包含了这个应用所依赖的各种crate/module。这里需要注意 Cargo.toml中, 会有各种信息,如 crate_interface = { path = "../../../crates/crate_interface", optional = true }, libax = { path = "../../../ulib/libax", features = ["fs"] } ,包括了 optional, features等,这会影响graph的生成。 |
Beta Was this translation helpful? Give feedback.
-
我在自己fork的仓库链接中进行了一些改动,通过从Cargo.toml中读取数据来进行依赖关系的分析,并支持通过 在 |
Beta Was this translation helpful? Give feedback.
-
这周写了改进了下代码,基于cargo tree的方案支持 no-default-features,指定特定features,支持apps的依赖分析,加入d2格式支持。 |
Beta Was this translation helpful? Give feedback.
-
Rust组件间关系自动生成工具
分析一个比较大型的Rust软件中用到的各种crate的关系,并形成基于D2文字转图形语言和mermaid文字转图形语言的crate关系描述文本。这样就可以通过D2工具和mermaid工具(github网址直接支持在线渲染成图)把crate关系描述文本转换为图形。
更进一步,还可给组件间的关系加上各种属性,比如相互调用的方法数量等信息,都可以进一步扩展。形成一种功能丰富和强大的Rust组件关系分析与生成工具。
相关链接:
如有兴趣一起来探索,请联系我 yuchen AT tsinghua.edu.cn OR 微信 id chyyuu
Beta Was this translation helpful? Give feedback.
All reactions