如何创建加载Java代码的UML图?(How to create UML diagram from

2019-09-16 15:19发布

我有我的程序问题。 我的程序应该是能够创建Java代码UML图,但我不知道,怎么设计方法,这将检索(负载)的Java关键字,对象等。注意:我不能使用自动程序来创建UML图。 这是我的论文。

我的想法是创建一个Java的关键字,这是出现在UML图,并检查所有加载的代码与此枚举枚举类。 但也有一些问题,对此我没有能够解决,特别是空格。 接下来的问题是以下几点:

比如我有代码:

[space][space]public[space]class[space][space][space]SomeClass[space]{
[empty line]
private int something;
public BufferedReader br;
private ArrayList<File> al;
}

此代码评论:

  • [空间]表示在代码经典间隙。
  • 我强调故意的空白,因为它是语法正确。
  • 我不知道我怎么加载所有的Java类的BufferedReader,ArrayList中,等或其他物体。

谢谢你的任何答复。 我想有一个更好的办法来解决这个问题。

Answer 1:

你应该考虑使用该方法解析Java代码对你的库。 当然,我不能告诉你一个,尝试谷歌的一个。

下面是我采取的办法。 首先阅读这篇文章对Eclipse的抽象语法树 。 使用Eclipse AST将意味着您设计工具作为Eclipse插件。 如果你不希望这样做的文章会给你如何解析还是一个源代码树的一些提示。



Answer 2:

如果你可以使用编译的代码,这将是很好的。 在java中,你可以加载一个类没有初始化,并与java.lang.reflect中检查其结构。 当然,参数名称将丢失的实例。

有关详细信息有喜欢的ASM另外一类解析库。



Answer 3:

添加到前两个答案和你的意见,特别是重。 “纯Java代码”。

假设我理解你的问题吧,你要做的第一件事就是改变Java源代码(即文本文件)到一些数据结构。 从那里,你可以生成数据结构的UML图。

假设所以这是一个很常见的模式。 通常有2种方法为将文本转换为数据结构:

  • 解析文本(如@ user714965建议)
  • 使用反射(由@Joop埃根所建议的)

手工编写解析器不是一件简单的事情。 你如何创建一个枚举类等意见建议,是你在想什么。 然而一个手工编码的解析器将只在极少数情况下推荐的解决方案。 还有专门为解析算法和技术理论和实践的整个身体。 我真的不知道你想在能为您的项目。

大多数人会使用一个解析器生成器(例如ANTLR )生成从语法定义解析器。 给定的Java的普及,有至少一个用于ANTLR现有的Java语法。 我不太清楚“纯Java代码”约束的意思。 ANTLR生成的是一个纯Java代码分析器,以便将是确定的。 如果你的意思是你需要然后使用一个解析器生成会出从头编写所有的代码。 但是,这似乎是一个很奇怪的限制...

无论如何。 您的其他选择是使用反射。 这实际上使用在JVM解析器并为您提供API访问查询和导航代码本身。 java.lang.reflect中也(明显)的纯Java - 让你的代码中调用那就太。

在Eclipse / Netbeans的API将提供另一种可能的途径。 实际上他们只是另一个“分析器”,它提供了一组代表Java代码的数据结构。

我强烈推荐这三个方法,而不是通过手工编写自己的解析器之一。

我不知道有没有什么帮助。 也许你能解释一下“纯java代码”约束多一点。



Answer 4:

只需选择一个解析器生成像JavaCC的(你的任务1)。 使用Java的成品语法(或者建一个自己的一个)。 生成词法分析器(2),写自己的解析器的东西到语法(3)。 从您的解析器保存树和/或第一次修改,以获得一个XML / XMI表示。 5)你应该选择一个现有的工具,编写自己一个人可以是一个完整的额外的论文...



文章来源: How to create UML diagram from loaded Java code?
标签: java parsing uml