我被要求开发一个软件,它应该能够创建输入Java源代码的流程图/控制流。因此,我开始研究它,并得出了以下解决方案:
要创建流程图/控制流,我必须识别给定源代码中的控制语句和函数调用,现在我有两种识别方法:
我就在这儿吗?还是我错过了一些非常基本和简单的东西?哪种方法会花费更少的时间并有效地完成工作?这方面的任何其他建议也将受到欢迎。任何其他有效的方法都会有所帮助,因为输入源代码可能跨越多个文件,而且可能相当复杂。
我擅长.NET语言,但这是我在Java中的第一个大型项目。我有编译设计的基本知识,所以写语法对我来说不是不可能的。
抱歉,如果我不清楚。请作出任何澄清。
发布于 2011-03-31 00:46:58
发布于 2011-03-31 02:09:12
所有处理Java代码的工具通常首先决定是否要处理Java或Java字节代码文件。这是一个战略决策,取决于您的用例。我可以为流程图的生成而把两者都想象出来。当你决定这个问题的时候。已经有几个框架或库,可以在这方面对您有所帮助。对于字节码工程,有:ASM、JavaAssist、煤烟和BCEL,它们似乎已经死了。对于Java语言的解析和分析,有:多角化、eclipse编译器和javac。所有这些都包括一个完整的Java编译器前端,并且都是开源的。
我会尽量避免为Java编写自己的解析器。我做过一次。Java有一个相当复杂的语法,但它可以在其他地方找到。真正的工作从名称和类型解析开始。如果您想要生成涵盖多个方法体的图,则两者都需要。
发布于 2012-04-02 18:46:38
Eclipse有一个库,用于解析源代码并从源代码中创建抽象语法树,这将使您可以提取所需的内容。
有关教程http://www.vogella.de/articles/EclipseJDT/article.html,请参阅此处
有关api 描述,请参阅此处
https://stackoverflow.com/questions/5497210
复制