#ctags #analysis #language #different #regex #results #java

bin+lib 建模

建模是一个通过Ctags分析不同语言的工具

16 个版本 (5 个重大更新)

0.6.2 2022年3月15日
0.6.1 2022年2月2日
0.6.0 2022年1月17日
0.5.0 2022年1月15日
0.1.7 2021年5月7日

文本处理 中排名 #1224

每月下载量 45

MIT 许可证

115KB
3K SLoC

Rust 2.5K SLoC // 0.0% comments JavaScript 434 SLoC // 0.0% comments C++ 85 SLoC // 0.1% comments Java 38 SLoC // 0.4% comments Go 25 SLoC // 0.4% comments TypeScript 25 SLoC

建模

crates.io docs.rs license

建模是一个通过Ctags分析不同语言的工具

处理

  1. 分析 ctags
  • 生成到opt
  • 使用opt调用 ctags
  • 使用正则表达式分析 ctags 日志
  1. 生成结果
  2. 使用 visualing 可视化结果(可选)

语言支持

  • Java
  • C#
  • C++
  • TypeScript
  • Golang
  • Rust
  • ... 其他通过ctags

用法

  • 建模,从源代码生成模型。
  • 概念化,从源代码生成概念。
  • 可视化,UML的可视化。
Modeling 0.6.1

USAGE:
    modeling [FLAGS] [OPTIONS]

FLAGS:
    -b, --by-modules             multiple modules
    -d, --debug                  output debug information
    -f, --field-only             only load field in methods
    -h, --help                   Prints help information
        --inline-id-suffix       if class's prop end with Id and class in list, will replace `int` type to `xxClass`
    -m, --merge                  merge for same method name
    -V, --version                Prints version information
        --without-impl-suffix    if class's prop start with `IRepository` will become `Repository`
        --without-parent         without class inheritance

OPTIONS:
    -g, --grep <grep>                  by grep regex rules: for example: `.*Service` [default: ]
    -i, --input <input>                input dir [default: .]
    -o, --output-type <output-type>    support: puml, mermaid, graphviz with json [default: puml]
    -p, --packages <packages>...       filter by packages, like: `com.phodal.modeling`
    -s, --suffixes <suffixes>...       filter by suffixes, like: `java` for .java file

示例:puml到图片

转换为图片:plantuml modeling.puml modeling.svg -tsvg

示例:使用MVC的grep

modeling --input=/youpath/ --field-only --without-parent --grep ".*Service|.*Controller|.*Repository"

示例:与Graphviz和可视化一起使用

使用 --output-type=graphviz

modeling --input=/youpath  --field-only -o graphviz --without-impl-suffix

cargo install modeling
modeling .

use modeling::{by_dir};
use modeling::render::PlantUmlRender;

let classes = by_dir("src/");
let puml = PlantUmlRender::render(&classes);

输出示例

@startuml

class Animal {
  + string name
  + string constructor()
  +move()
}

class Horse extends Animal {
  +move()
}

class Snake extends Animal {
  +move()
}

@enduml

许可证

基于 https://github.com/dalance/ptags 的 ctags 分析,使用 MIT 许可,见 src

从 Golang 的 https://github.com/ruben2020/tags2uml 重新编写 ctags 解析器,使用 Apache 许可证。

@ 2020~2021 本代码根据 MIT 许可证分发。请参阅此目录中的 LICENSE

依赖项

~40–56MB
~1M SLoC