首页 > 其他分享 >Swift自动生成UML类图

Swift自动生成UML类图

时间:2022-12-28 16:22:51浏览次数:60  
标签:kind github layout Swift 类图 生成 UML syntax swift

swift-syntax

github - https://github.com/apple/swift-syntax

这是苹果官方的工具,Xcode工具包里有,可以扫描Swift源文件,生成AST树(抽象语法树)
用法也很简单,命令行输入

xcrun swiftc -frontend -emit-syntax ./a.swift | python3 -m json.tool

a.swift是创建的测试文件

class Demo {
    
    var a;
    
    func foo() {
        
    }
}

生成如下

{
    "kind": "SourceFile",
    "layout": [
        {
            "kind": "CodeBlockItemList",
            "layout": [
                {
                    "kind": "CodeBlockItem",
                    "layout": [
                        {
                            "kind": "ClassDecl",
                            "layout": [
                                null,
                                null,
                                {
                                    "tokenKind": {
                                        "kind": "kw_class"
                                    },
                                    "leadingTrivia": "",
                                    "trailingTrivia": " ",
                                    "presence": "Present"
                                },
                                {
                                    "tokenKind": {
                                        "kind": "identifier",
                                        "text": "Demo"
                                    },
                                    "leadingTrivia": "",
                                    "trailingTrivia": " ",
                                    "presence": "Present"
                                }, // 下面省略几百行

可以看到,AST树的嵌套层级非常深,即使代码非常简单,结果也很复杂。因为它是官方工具,要非常完备地分析文件,但是对于UML类图来说并不需要。

swift-ast-explorer

github - https://github.com/SwiftFiddle/swift-ast-explorer
测试地址 - https://swift-ast-explorer.com/

这是把swift代码生成AST树的网页,也是用swift-syntax生成的

swift-auto-diagram

github - https://github.com/yoshimkd/swift-auto-diagram

它可以把目录下的swift文件生成UML类图,自动生成一个网页,可以缩放拖动。只需要输入一句命令行(YourSwiftDir代表包含swift文件的目录)

ruby generateEntityDiagram.rb ~/YourSwiftDir                     


它没有用AST,而是直接用正则表达式扫描分析文件中的类、对象和方法,优点是速度快,缺点是生成结果摆放非常乱,类型关系不准确。

标签:kind,github,layout,Swift,类图,生成,UML,syntax,swift
From: https://www.cnblogs.com/rome753/p/17010387.html

相关文章

  • 一篇文章带你了解设计模式原理——UML图和软件设计原则
    一篇文章带你了解设计模式原理——UML图和软件设计原则我们在学习过程中可能并不会关心设计模式,但一旦牵扯到项目和面试,设计模式就成了我们的短板这篇文章并不会讲到二十......
  • 统一建模语言 (UML)
    什么是统一建模语言UML?​​UML的起源​​​​UML的历史​​​​为什么选择UML​​​​UML-概述​​UML是统一建模语言的缩写,是一种标准化建模语言,由一组集成图组成,旨......
  • 初识 Swift编程语言(中文版)
    前言今天Apple发布了新的编程语言Swift,也提供了一本将近400页的 The Swift Programming Language(Swift编程语言)。虽然我没有开发者账号,没法实际上机练习Swift代码,但......
  • UML——类图
    目录​​类​​​​类图是什么?​​​​什么时候产生类图?​​​​为什么用例图之后是画类图,这样做的目的是什么?​​​​类图的关系​​​​如何画类图呢?​​​​第一次机房中......
  • UML——用例图(Use case diagrams)
    目录​​什么是用例图?​​​​用例图帮我们做什么?​​​​用例图的基本元素有哪些?​​​​第一次机房收费系统用例图​​​​总结​​       一、什么是用例图......
  • UML——概述(什么是UML?UML有什么作用?面向对象技术)
    目录​​什么是UML?​​​​UML能帮我们做什么?​​​​什么是建模?​​​​为什么要建模?​​​​为什么要可视化建模?​​​​建模的原理(原则)​​​​UML的基本构造块​​​​U......
  • UML——面向对象技术
    目录 ​​UML中为什么要使用面向对象技术?​​​​面向对象的基本原则有哪些?​​​​面向对象有哪些基本内容?​​​​类和对象的之间的关系是怎样的?​​​​究竟继承的是什......
  • UML——包图
               为什么会产生包?对复杂系统进行建模时,经常需要处理大量的类、接口、组件、节点和图,这时就有必要将这些元素进行分组,把那些语义相近并倾向于......
  • UML——行为图(活动图、状态图)
    状态图是做什么的?描述了一个具体对象的可能状态以及它们之间的转换。展现一个对象拥有的状态,还可以说明时间(如消息的接收、错误、条件变更等)如何随着时间的推移来影响这些状......
  • UML——顺序图、协作图
     一、顺序图是做什么的?描述按照时间的先后顺序对象之间交互动作过程 顺序图的构成对象消息:是对象之间的通信,可以是信号或者操作调用生命线(激活):表示在某段时间内对象是存在......