2个版本
0.0.2 | 2023年12月12日 |
---|---|
0.0.1 | 2023年12月12日 |
#238 in 可视化
92KB
2K SLoC
ML -建模语言-
一个库(和cli工具),可以将Rust项目生成UML语言到graphiz/dot文件。
快速入门
获取mml
$ git clone https://github.com/silence-coding/ml.git
$ cd ml
安装依赖
graphviz包中的dot
二进制文件必须存在于您的路径中。
$ apt install graphviz
(或为您所在的操作系统执行等效操作)
需要nightly rustc。请在ml crate内部运行此命令。
$ rustup install rustc llvm-tools-preview
构建和运行mml
$ cargo run --example ml
注意:ml在./src目录下查找文件,因此您在运行之前应该始终切换到crate根目录。
查看生成的图表
$ firefox target/doc/ml.svg
inkscape
也很好地用作svg查看器。
用法
$ ./target/debug/examples/ml --help Usage: ml [OPTIONS]
Parses rust source code and generates UML diagram
Arguments:
--include_fields [bool] include fields/variants in diagram
--include_implems [bool] include trait implementation methods in diagram
--include_methods [bool] include methods in diagram
--struct_header_bgcolor [str] header background color for structs
--struct_fields_bgcolor [str] fields background color for structs
--struct_method_bgcolor [str] methods background color for structs
--struct_implem_bgcolor [str] implems background color for structs
--enum_header_bgcolor [str] header background color for enums
--enum_fields_bgcolor [str] fields background color for enums
--enum_method_bgcolor [str] methods background color for enums
--enum_implem_bgcolor [str] implems background color for enums
--trait_header_bgcolor [str] header background color for traits
--trait_method_bgcolor [str] methods background color for traits
--font [str] Font name
输出始终位于target/doc/mml/下
您可以将ml
二进制文件添加到您的路径中,然后您应该能够为任何rust crate运行它。
--------------------------- 过时,可能已过时 -----------------
用法
- 调整您的
Cargo.toml
以包含。
build = "build.rs"
[build-dependencies.rust2uml]
version = "0.0.1"
- 并且您的
build.rs
以生成您的uml graph/viz和结构化矢量图形在target/dot/$CARGO_PKG_NAME.}
。
extern crate mml;
fn main() {
let dest: String = concat!("target/doc/", env!("CARGO_PKG_NAME")).to_string();
let mut config = rust2uml::Config::default();
rust2uml::Config::set_global(config);
let _ = rust2uml::src2both("src", dest.replace("-", "_").as_str());
}
- (可选)从您的入口点库文件中,您可以添加生成的向量图。
//! ![uml](ml.svg)
- (可选)使用travis-cargo的说明,您可以准备您的graphviz依赖项,如下例所示。
addons:
apt:
packages:
- graphviz
before_script:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install graphviz ; fi
...
script:
- |
travis-cargo build &&
...
特性
将此功能列表视为unstandard-uml。
- implem -- 添加一列以显示实现中的函数。
- fn-emilgardis -- 函数字段以fn关键字开头(由Emilgardis提出)。
知识
这是一份与Ml相关的材料阅读清单。它包括曾经影响Ml设计的先前研究,以及有关Ml的出版物。
许可证
ml
主要在以下两个许可证的条款下分发:[MIT 许可证](https://opensource.org/licenses/MIT) 和 [Apache 许可证(版本 2.0)](https://apache.ac.cn/licenses/LICENSE-2.0),部分内容受各种类似 BSD 许可证的覆盖。
详情请见 LICENSE-APACHE 和 LICENSE-MIT。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交用于包含在作品中的任何贡献,将按照上述方式双重许可,不附加任何额外条款或条件。
依赖
~1MB
~15K SLoC