Java 分析代码以创建UML的最佳方法是什么?

Java 分析代码以创建UML的最佳方法是什么?,java,parsing,antlr,lexical-analysis,javacc,Java,Parsing,Antlr,Lexical Analysis,Javacc,我试着做我的工作,那就是“Java应用程序中的源代码分析”,在这里我分析未编译的.Java或.txt文件。我创建了主题,在这里我发现我走错了方向。据我所知,我认为使用ANTLR或JavaCC是最好的处理方法,但我不知道它是如何工作的以及如何使用它(JavaCC我无法插手)。我想找到一些可以在我使用的Netbeans中编程“经典”的东西。是否可以使用java.lang.reflect(在我的主题中,有人写道它只能在编译代码中使用)?有没有一种方法可以让我不用任何“补充”或只使用Java库来编写所有

我试着做我的工作,那就是“Java应用程序中的源代码分析”,在这里我分析未编译的.Java或.txt文件。

我创建了主题,在这里我发现我走错了方向。据我所知,我认为使用ANTLR或JavaCC是最好的处理方法,但我不知道它是如何工作的以及如何使用它(JavaCC我无法插手)。我想找到一些可以在我使用的Netbeans中编程“经典”的东西。

是否可以使用java.lang.reflect(在我的主题中,有人写道它只能在编译代码中使用)?有没有一种方法可以让我不用任何“补充”或只使用Java库来编写所有这些内容?

感谢您提供的宝贵建议。我很困惑,不知道如何开始。

以下是我的工作描述:
1。选择主机语言分析器,
2。构建一个扫描器(词法分析器),
3。构建解析器(语法分析器),
4。以XML的形式保存获取的信息,
5。所分析项目的UML图形表示。
主要目标是创建UML,XML是一个补充。

广义而言,您有两个选择

若您想使用源代码,您必须构建一些能够解释这些文件的东西,并在其中形成编程结构的模型。这是非常重要的—您基本上是在构建编译器的一个重要子集,并且您必须处理大量的日常工作—加载文件、计算.jar文件的引用等,以及处理代码可能无法实际编译的事实。如果你选择这条路线,你最好的选择是ANTLR;去读维基和书,然后陷入困境


另一种方法是使用编译过的文件——JAR等——您可以使用反射工具来解释代码。这简化了事情——至少您知道代码是编译的,而且其他人已经做了很多内务管理工作。这仍然不是一件小事。

从广义上讲,你有两个选择

若您想使用源代码,您必须构建一些能够解释这些文件的东西,并在其中形成编程结构的模型。这是非常重要的—您基本上是在构建编译器的一个重要子集,并且您必须处理大量的日常工作—加载文件、计算.jar文件的引用等,以及处理代码可能无法实际编译的事实。如果你选择这条路线,你最好的选择是ANTLR;去读维基和书,然后陷入困境


另一种方法是使用编译过的文件——JAR等——您可以使用反射工具来解释代码。这简化了事情——至少您知道代码是编译的,而且其他人已经做了很多内务管理工作。这仍然不是小事。

一个更简单的解决方案是获得一个支持导入Java源代码并为您生成图表的UML工具


你的道路充满了困难。您被困在输入端,但您甚至还没有考虑图形端。绘制图表并不容易,即使您成功地找到了如何创建抽象语法树。

一个更简单的解决方案是获得一个支持导入Java源代码并为您生成图表的UML工具

你的道路充满了困难。您被困在输入端,但您甚至还没有考虑图形端。绘制图表并不容易,即使您成功地找到了创建抽象语法树的方法。

可能对您有用, HTH

可能对您有用,
HTH

通过分析,你是指绘制一个UML(如本主题所建议的)?我允许加载“n”个文件并根据它们之间的链接(如有)绘制UML类图。通过分析,你是指绘制一个UML(如本主题所建议的)?我允许加载“n”个文件并根据它们之间的链接(如有)绘制UML类图。好的,我理解。你认为哪种方法更简单?如果我决定使用反射工具,那么在分析之前编译加载的文件(并准备)是困难的吗?谢谢你的帮助。好的,我明白了。你认为哪种方法更简单?如果我决定使用反射工具,那么在分析之前编译加载的文件(并准备)是困难的吗?谢谢你的帮助。你不是取悦我:)必须有一些“体面”的解决办法来做到这一点:(它是“唯一的”学士学位论文…你需要多少时间来完成它?它是2012学年末的论文,是吗?是的,这是真的。不幸的是,我走错了路,我的导师没有帮助我,所以我在论坛上寻找解决方案和建议。我不知道怎么做。我不喜欢你:)必须有一些“体面的”解决方案来做到这一点:(它是“唯一的”学士学位论文…你需要多少时间来完成它?它是2012学年末的论文,是吗?是的,这是真的。不幸的是,我走错了路,我的导师没有帮助我,所以我在论坛上寻找解决方案和建议。我不知道怎么做,这样的时间不会打扰我。也许我读错了,但Topcased Generation是否从UML图中删除代码?我需要从代码中创建UML图。@avalagne:可以:Topcased能够进行反向工程(不是很漂亮,它是开源的,但很有用)。不是为了庞大的API,而是一个包一个包都可以。我这里没有,但在Eclipse的projet中的differents菜单中搜索,并记录如何调整最大显示可能我读错了,但是Topcased从UML图生成的代码。或者没有?我需要从代码创建UML图。@avalagne:是的,你可以:Topcased能够进行反向工程(不是很漂亮,它是开源的,但很有用)。不适用于大型API,但可以一个包一个包地使用。我在这里没有看到它,但在Eclipse的projet中的differents菜单中搜索,并记录如何调整可以显示的最大值