#结构 #架构 #依赖 #cargo子命令

app cargo-structure

一个用于分析cargo项目结构的简单工具

6 个版本 (3 个重大更新)

0.4.1 2022年12月28日
0.4.0 2022年10月1日
0.3.0 2022年10月1日
0.2.0 2022年4月23日
0.1.1 2022年4月22日

#314Cargo插件

每月24次下载

MIT 许可证

17KB
306 代码行

Cargo Structure

Crates.io GitHub

Cargo structure 会搜索项目中所有的 Cargo.toml 文件,输出一个可以输入到如 graphviz 这样的渲染器的依赖关系点图。

示例

ExampleDotGraph

安装

cargo install cargo-structure

用法

将 cargo structure 作为 cargo 插件运行。不需要指定根包,默认为 .,即当前目录。

Cargo Structure 将遍历所有定义在相应 Cargo.toml 中的具有 path = ... 属性的本地子仓。这在绘制一般架构图时非常有用,实际上显示了所有本地子仓之间的相互依赖关系。

cargo structure <ROOT PACKAGE PATH>

您还可以仅显示本地子仓的图,这在您想忽略外部依赖杂项并关注本地项目结构时很有用。

cargo structure --local

您还可以使用 --ignore 选项忽略特定的依赖。

cargo structure --ignore clap toml

您还可以遍历整个树来生成所有子仓中所有依赖的图,即使它们不在同一个仓中。这可以通过 --monolithic 标志来完成。

cargo structure --monolithic

如果您在您的仓中有子仓,可以通过对它们的相对文件路径进行模糊搜索来过滤掉它们。这仅适用于单一搜索。

cargo structure --ignore-paths my_local_subcrate

输出最适用于通过管道传递到如 dot 这样的 graphviz 命令。如果您已安装 graphviz,可以通过运行以下命令生成 dot 图。

cargo structure | dot -Tsvg > structure.svg

通常,您会想忽略某些目录,因为默认情况下,该工具会对根路径下所有包的整个子树生成单个单一输出。

cargo structure . --ignore-paths target | dot -Tsvg > structure.svg

路线图

  • 使用特定根 toml 转换而不是递归单一子树搜索。
  • 默认为根 toml 转换。
  • 仅本地路径依赖。
  • 根据依赖类型对边进行独特样式化。

贡献

欢迎贡献!只需分支仓库并提交拉取请求。

依赖

~3–11MB
~113K SLoC