#uml #dot #graph #generator #modeling-language

nightly rust2uml

一个将Rust项目生成UML语言到graphiz/dot文件的库

2个版本

0.0.2 2023年12月12日
0.0.1 2023年12月12日

#238 in 可视化

MIT/Apache

92KB
2K SLoC

Rust 1.5K SLoC // 0.0% comments PHP 234 SLoC // 0.0% comments

ML -建模语言-

Crate travis-badge appveyor-badge dependencyci-badge

一个库(和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包构建脚本提供。

  1. 调整您的Cargo.toml以包含。
build = "build.rs"

[build-dependencies.rust2uml]
version = "0.0.1"
  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());
}
  1. (可选)从您的入口点库文件中,您可以添加生成的向量图。
//! ![uml](ml.svg)
  1. (可选)使用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-APACHELICENSE-MIT

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交用于包含在作品中的任何贡献,将按照上述方式双重许可,不附加任何额外条款或条件。

依赖

~1MB
~15K SLoC