【问题标题】:UML class diagrams for Xcode (swift programming)Xcode 的 UML 类图(快速编程)
【发布时间】:2015-03-21 18:03:43
【问题描述】:

我创建了一个 iOS 移动应用程序。我想知道是否有办法为 swift 编程语言生成 UML 类图? 我尝试过 Omni Graff,但它一直说该项目不包含 Objective-C 接口。而 Omni Graff 仅针对 Objective-c 执行此操作。请帮忙。

提前致谢。

【问题讨论】:

    标签: ios swift xcode6 uml


    【解决方案1】:

    我记得不久前看过这个问题,对没有这样的工具感到失望,所以我在同事的帮助下自己创建了一个。它是免费的,它是开源的,它正在寻找贡献者......

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

    这里有一个关于如何使用它的教程(不用担心它很简单): https://martinmitrevski.com/2016/10/12/swift-class-diagrams-and-more/

    快乐的图表:)

    【讨论】:

    • 谢谢@jovan,它也适用于 swift 5。 (我被 2016 年的博文愚弄了,并认为它不会起作用,由于 swift 的性质)
    • @jovan 我对此进行了测试,默认情况下它会在 Safari 上打开。但我只能看到左下角的绿色导航箭头,以及右下角的其他控件。我没有看到任何类图。有没有办法解决这个问题?我在 Chrome 中打开了文件,但得到了相同的结果。
    • @timman 我们知道,在很多情况下,由于各种原因,图表可能无法正确呈现。该项目最近很少维护,因此我能想到的最佳建议是您可以尝试绘制项目的较小部分,以避免可能导致渲染失败的部分代码。
    【解决方案2】:

    不幸的是,答案是:你做不到。至少不是自动的。 Swift 作为编译器本身就有足够的缺陷。不用管一些工具将能够吞下任何 Swift 代码。您唯一的选择是旧的手动方式。

    我知道 Enterprise Architect 可以定义基于 BNF 的语言语法。但是 Swift (再次不幸地)不是上下文无关的。 (事实上​​,它对上下文非常敏感,以至于它经常吞下自己的后部。)所以这也行不通。

    P.S.:既然 Swift 是开源的,那么有人可能会借此机会利用编译器的输出来获取类接口。我想这应该不会太难,但仍然需要做很多工作。

    【讨论】:

    • @Cfr 是的,当然,许多 PL 使用上下文“某处”,但大多数只是在很少使用的边缘中使用。您只需遵循 EBNF 语法即可实现编译器。不是那么迅速。即使对于最简单的构造,您也需要大量的上下文信息。看看一个简单的赋值,Swift 试图猜测 RHS 的类型——即使是简单的情况也失败了。只是人们习惯了那种噩梦,直觉地避免了这种结构。相信我,我知道很多 PL,对我来说,Swift 绝对是“要避免”的一方。
    【解决方案3】:

    swift-auto-diagram 和类似的开源工具的启发,我开始研究此类实用程序,目标是用 Swift 编写它(使 Swift 开发人员更容易做出贡献)并将其集成到 Xcode 和 Swift 生态系统中。

    Xcode 扩展:https://github.com/MarcoEidinger/SwiftPlantUML-Xcode-Extension

    您可以从选定的代码行或 Xcode 中显示的整个文件生成类图。然后将在您的浏览器中打开类图。在那里您可以使用 PlantUML 符号修改图表

    要从多个源文件生成类图,您可以使用底层 CLI 工具和 Swift 包:https://github.com/MarcoEidinger/SwiftPlantUML

    可见图表内容有大小限制(但您可以在浏览器中使用 PlantUML 表示法删除内容)

    【讨论】:

      猜你喜欢
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 2015-06-21
      相关资源
      最近更新 更多