在做java源码的静态代码审计时,最基础的就是对java文件进行解析,从而获取到此java文件的相关信息;

在java文件中所存在的东西很多,很复杂,难以用相关的正则表达式去一一匹配。但是,eclipse 的一个插件

jdt是一个已经封装好了的,对java文件进行解析的jar包。

所需要的包:

org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar

org.eclipse.core.jobs_3.5.0.v20100515.jar

org.eclipse.core.resources_3.6.0.v20100526-0737.jar

org.eclipse.core.runtime_3.6.0.v20100505.jar

org.eclipse.equinox.common_3.6.0.v20100503.jar

org.eclipse.equinox.preferences_3.3.0.v20100503.jar

org.eclipse.jdt.core_3.6.0.v_A58.jar

org.eclipse.osgi_3.6.0.v20100517.jar

maven中:

org.eclipse

jdt

3.3.0-v20070607-1300

org.eclipse

org.eclipse.osgi

3.8.0.v20120529-1548

org.eclipse.jdt

core

3.1.1

调用方法:

public class JdtAst {

private ASTParser astParser = ASTParser.newParser(AST.JLS3); // 非常慢

/**

* 获得java源文件的结构CompilationUnit

*/

public CompilationUnit getCompilationUnit(String filePath)

throws Exception {

BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(filePath));//读取java文件

byte[] input = new byte[bufferedInputStream.available()];

bufferedInputStream.read(input);

bufferedInputStream.close();

this.astParser.setSource(new String(input).toCharArray());

/**/

CompilationUnit result = (CompilationUnit) (this.astParser

.createAST(null)); // 很慢

result.getImports();//通过result去获取java文件的属性,如getImports是获取java文件中import的文件的。

return result;

}

}

解析java源文件_使用JDT.AST解析java源码相关推荐

  1. java 缘起_小豹子带你看源码:Java 线程池(一)缘起 计划

    1 缘起 怎么想起来看线程池的代码? 很简单,因为我不会用. 原先遇到用线程池一直是 Executors 直接构造一个出来.啊,newFixedThreadPool 就是创建定容线程池,线程数是固定的 ...

  2. 控制台五子棋java源代码_两套 五子棋小游戏源码(控制台+JavaSWing)

    [实例简介] [实例截图] [核心代码] 五子棋 ├── 图形 │   ├── java五子棋小程序.doc │   ├── 五子棋 │   │   ├── bin │   │   │   └── c ...

  3. Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例

    转载自  Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 第1部分 ArrayList介绍 ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组.与 ...

  4. 什么是php的ast结构,什么是AST?Vue源码中AST语法树的解析

    这篇文章给大家介绍的内容是关于什么是AST?Vue源码中AST语法树的解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 什么是AST AST是指抽象语法树(abstract syn ...

  5. cmd中加载java源文件_如何在cmd中编译和运行java源文件

    如何在cmd中编译和运行java源文件 首先写一个名为HelloWorld.java的java源文件,存储在如C:/java/src的地址,我们再假设待会要存储的位置是C:/java/bin,则我们做 ...

  6. Spring源码深度解析(郝佳)-学习-Spring消息-整合RabbitMQ及源码解析

      我们经常在Spring项目中或者Spring Boot项目中使用RabbitMQ,一般使用的时候,己经由前人将配置配置好了,我们只需要写一个注解或者调用一个消息发送或者接收消息的监听器即可,但是底 ...

  7. 有控制雷电武器的java游戏_雷电飞机射击游戏 JAVA

    一.程序概述 1.开发环境 开发程序的工具Eclipse是著名的跨平台的自由集成开发环境.一个开放源代码的.基于Java的课扩展开发平台.就其本身而言,它只是一个框架和一组服务,用与通过插件组件构建开 ...

  8. 2018年排名Top 100的Java类库——在分析了277,975份源码之后得出的结论

    最近,OveOps公布了The Top 100 Java Libraries in 2018 - Based on 277,975 Source Files,Hollis查看了这份榜单,做了翻译和补充 ...

  9. JAVA文件上传详解(附源码)

    文章目录 JAVA文件上传详解(附源码) 1.准备工作 2.使用类介绍 FileItem类 ServletFileUpload类 3.代码编写 JAVA文件上传详解(附源码) 在web应用中,文件上传 ...

最新文章

  1. python gui选择_Python之GUI的最终选择(Tkinter)
  2. JS-鼠标跟随块(一个小圆点跟着鼠标跑)
  3. 王茂霖:数据挖掘提分三板斧!(附PPT下载)
  4. Ubuntu10.04系统调试TQ2440开发板之一《Ubuntu下搭建TQ2440的程序下载环境》
  5. 爬取异步请求(XHR/JS)数据方法
  6. python读txt转array_python将txt文件读入为np.array的方法
  7. jQuery 的一个自动向上翻页的效果
  8. LeetCode刷题(37)--Edit Distance
  9. C语言之typedef定义函数指针(十三)
  10. sap此项目以开票无关_大型公司财务共享中心RPA项目实例2则
  11. RNAcentral:非编码RNA数据库
  12. Java开发工程简历模板
  13. SwiftUI教程第1章第13节:Divider
  14. ftp服务器和文件夹共享文件夹,ftp服务器和文件夹共享文件夹
  15. 计算机看不了pdf,电脑打不开pdf格式文件怎么回事
  16. SVC的主要作用及应用范围
  17. 使用spark-md5获取文件md5值
  18. 基于微信小程序云开(统计学生信息并导出excel)2.0版
  19. 直播行业的梦幻泡影:主播们的数据人生
  20. H2教程系列(二) 创建数据库

热门文章

  1. 解决VS Code 运行 “conda : The term ‘conda‘ is not recognized as the name of a cmdlet, function, script “
  2. Calibre发邮件至Kindle
  3. 移动端应用视频小程序加密播放(存档)
  4. 武汉java软谋教育坑吗_软谋在线教育诚招php,java,.net,设计师讲师(可兼职)...
  5. Opcode指令解析
  6. IDEA中文切换回英文
  7. 组织机构树数据库表设计
  8. Spring Boot使用Spring Callable和WebAsyncTask实现长轮询,战斗力杠杠的,这一节知识点满满的 - 第415篇
  9. CCF中有关计算机网络的顶级会议和推荐期刊(2019年版本)
  10. Exp6 信息搜集与漏洞扫描 20164323段钊阳