首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >解析Java源代码

解析Java源代码
EN

Stack Overflow用户
提问于 2011-03-31 00:39:52
回答 9查看 6.7K关注 0票数 9

我被要求开发一个软件,它应该能够创建输入Java源代码的流程图/控制流。因此,我开始研究它,并得出了以下解决方案:

要创建流程图/控制流,我必须识别给定源代码中的控制语句和函数调用,现在我有两种识别方法:

  1. 通过编写我自己的语法来解析源代码(我认为这是一个复杂的解决方案)。我想用Antlr来做这件事。
  2. 将输入的源代码文件作为文本读取并搜索特定的模式(可能会变得效率低下)

我就在这儿吗?还是我错过了一些非常基本和简单的东西?哪种方法会花费更少的时间并有效地完成工作?这方面的任何其他建议也将受到欢迎。任何其他有效的方法都会有所帮助,因为输入源代码可能跨越多个文件,而且可能相当复杂。

我擅长.NET语言,但这是我在Java中的第一个大型项目。我有编译设计的基本知识,所以写语法对我来说不是不可能的。

抱歉,如果我不清楚。请作出任何澄清。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-03-31 00:46:58

票数 7
EN

Stack Overflow用户

发布于 2011-03-31 02:09:12

所有处理Java代码的工具通常首先决定是否要处理Java或Java字节代码文件。这是一个战略决策,取决于您的用例。我可以为流程图的生成而把两者都想象出来。当你决定这个问题的时候。已经有几个框架或库,可以在这方面对您有所帮助。对于字节码工程,有:ASMJavaAssist煤烟BCEL,它们似乎已经死了。对于Java语言的解析和分析,有:多角化、eclipse编译器和javac。所有这些都包括一个完整的Java编译器前端,并且都是开源的。

我会尽量避免为Java编写自己的解析器。我做过一次。Java有一个相当复杂的语法,但它可以在其他地方找到。真正的工作从名称和类型解析开始。如果您想要生成涵盖多个方法体的图,则两者都需要。

票数 4
EN

Stack Overflow用户

发布于 2012-04-02 18:46:38

Eclipse有一个库,用于解析源代码并从源代码中创建抽象语法树,这将使您可以提取所需的内容。

有关教程http://www.vogella.de/articles/EclipseJDT/article.html,请参阅此处

有关api 描述,请参阅此处

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5497210

复制
相关文章
java集合框架源码解析_java源代码怎么用
我们知道,java 中容器分为 Map 集合和 Collection 集合,其中 Collection 中的又分为 Queue,List,Set 三大子接口。
全栈程序员站长
2022/09/23
1.4K0
java集合框架源码解析_java源代码怎么用
java课程设计(简易计算器)源代码 JAVA 源代码有解析 免费分享[通俗易懂]
这是我挺久以前课程设计java写的计算器,只能实现基本的功能,我现在分享出来希望能帮助到别人。写得其实挺一般的,见谅见谅。有课程设计任务的学弟学妹也是写计算器的可以看看参考参考。源代码里我写有挺多解析的,能帮助理解。
全栈程序员站长
2022/07/23
3.2K1
java课程设计(简易计算器)源代码 JAVA 源代码有解析 免费分享[通俗易懂]
SIFT matlab源代码解析[通俗易懂]
sift是目前常用的local feature的描述子。sift特征匹配算法可以处理两幅图像之间发生一些平移、旋转、仿射等匹配问题。因为早前自己要做一个图像拼接的问题,所以用到了sift。写这篇blog,是因为自己准备向CV进军,开始着手写blog来积累知识,这也是我第一篇blog,虽然这篇blog很简陋,纯属向sift致敬,但也方便一些初学者使用吧。以后也会不定期对自己的一些在CV的见解进行发表,希望能通过这个和大家相互讨论。如果您想对其原理有个透彻的理解,可以参考下面这篇blog,博主写的非常详尽 —— [ sift算法详解 ]
全栈程序员站长
2022/07/04
4600
SIFT matlab源代码解析[通俗易懂]
java helloworld源代码_Java Hello World源代码剖析
public static void main(String[] args) {
全栈程序员站长
2022/09/01
2.7K0
java helloworld源代码_Java Hello World源代码notepad++版
1、 在E:\CodeDemo\Java文件夹下(你也可以选择自己的文件夹)新建一个txt文本文件。
全栈程序员站长
2022/09/01
1.1K0
dubbo源代码解析之-集群容错
Failover Cluster:失败自动切换,当出现失败,重试其它服务器,通常用于读操作(推荐使用)
yiduwangkai
2019/09/17
4600
dubbo源代码解析之-集群容错
typecho源代码解析4 - 业务逻辑
由路由表中的正则表达式我们能看出首页的URL为https://blog.phpgao.com/或http://www.phpgao.com,并且不接受任何参数。
老高的技术博客
2022/12/28
2610
typecho源代码解析4 - 业务逻辑
java语言helloworld源代码[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140211.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
1.4K0
java获取网页源代码
public static String getHtmlContent(URL url, String encode) { StringBuffer contentBuffer = new StringBuffer(); int responseCode = -1; HttpURLConnection con = null; try { con = (HttpURLConnection) url.openConnection(); con.setRequestPro
似水的流年
2018/01/18
2K0
java获取网页源代码
public static String getHtmlContent(URL url, String encode) {    StringBuffer contentBuffer = new StringBuffer();    int responseCode = -1;    HttpURLConnection con = null;    try {     con = (HttpURLConnection) url.openConnection();     con.setR
似水的流年
2018/01/18
2K0
java获取网页源代码
public static String getHtmlContent(URL url, String encode) { StringBuffer contentBuffer = new StringBuffer(); int responseCode = -1; HttpURLConnection con = null; try { con = (HttpURLConnection) url.openConnection(); con.setRequestPro
似水的流年
2019/12/10
1.9K0
java获取网页源代码
public static String getHtmlContent(URL url, String encode) {    StringBuffer contentBuffer = new StringBuffer();
似水的流年
2019/12/11
2.2K0
java获取网页源代码
public static String getHtmlContent(URL url, String encode) {    StringBuffer contentBuffer = new StringBuffer();
似水的流年
2018/01/12
1.7K0
开源Registry项目Harbor源代码结构解析
容器应用的开发和运行离不开可靠的镜像管理。从安全和效率等方面考虑,在企业私有环境内部署的Registry服务是非常必要的。Harbor(https://github.com/vmware/harbor)是由VMware中国研发团队为企业用户设计的Registry Server开源项目,包括了权限管理(RBAC)、图形管理界面、LDAP/AD集成、审计、自我注册、HA等企业必需的功能,同时针对中国用户的特点,原生支持中文,并计划实现镜像复制(roadmap)等功能。
Henry Zhang
2019/04/12
1.3K0
开源Registry项目Harbor源代码结构解析
长安链ChainMaker TBFT共识源代码解析
长安链ChainMaker(以下简称“ChainMaker”)目前实现了很多种共识算法,比如SOLO、RAFT、TBFT、HOTSTUFF等,TBFT共识算法是ChainMaker实际应用中常见的共识算法。TBFT共识算法是一种拜占庭容错算法,可以在拜占庭节点数小于总数1/3的情况下,保证系统的安全运行,本文主要对ChainMaker TBFT共识源代码进行解析。
bengbengsu
2022/04/26
9500
长安链ChainMaker TBFT共识源代码解析
Java 源代码和 C 源代码的运行区别 原
Java 源代码需要进行编译成字节码后在 Java 虚拟机上运行,这样 Java 程序能够保持独立性和跨平台功特性。
HoneyMoose
2019/01/30
1.7K0
Java 源代码和 C 源代码的运行区别
                                                                            原
【程序源代码】java 开发框架
Java ava EE(J2EE)快速开发框架,基于主流技术(Springboot、Spring MVC、MyBatis、Bootstrap、ACE),是XJJ框架的springboot版本。系统的代码生动生成、极简权限框架、通用service和dao设计、后台页面设计及封装的xjj_bootstrap-tab框架。
程序源代码
2020/04/01
1.1K0
【程序源代码】ChatGPT Java Api
注意:一个Chatbot实例为一个Session,会持有对话上下文,可以回复:继续 让机器人接着说。如果需要对话互相隔离,new 多个Chatbot实例即可。
程序源代码
2023/07/15
4110
深度学习之 TensorFlow(三):TensorFlow 源代码解析
分析一下 TensorFlow 的文件结构。这里的源代码版本是 TensorFlow1.7.0 。 目录结构如下: 其中的核心目录是 tensorflow 目录,最重要的源代码保存在这里,目录结构如下
希希里之海
2018/05/16
9600
【程序源代码】部标JT808协议解析
程序源代码
2023/07/19
7620
【程序源代码】部标JT808协议解析

相似问题

Java源代码解析

11

Java :解析java源代码,提取方法

70

如何解析Java源代码?

10

Java源代码解析器

45

用Scala解析Java源代码

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档