美文网首页
JavaParser实践记录

JavaParser实践记录

作者: 波波2 | 来源:发表于2021-04-17 16:36 被阅读0次

需求

由于项目需要,需要添加对JAVA源码分析的支持。源码分析由团队自己开发,但如何保障开发的分析器结果的正确性,是本项目任务的最大困难。

方案构想

通过一个相对完善的JVAV分析器,生成中间输出,基于此输出信息与我们开发的分析器进行比较。两者在输出上有可能存在较大区别,如何在存在区别的文件上计算相似度,将是另一个问题,本文也就不去描述相似度计算这个问题。
目前JAVA分析库或工具有不少,有一些Python包可用,也有通用解析器可用,例如Antlr。但就Java解析来说,JavaParser是好评度最高的,相比Python的Java解析包也更加复杂一些。本文主要记录我(Java小白)的JavaParser实践使用过程。

第一条记录

时间: 2021.04.17 9:44am
地点: 家中
预期任务: 构建Java开发环境,完成基于JavaParser库的语法树解析程序。
实现构想:

  1. 安装Ubuntu虚拟机,选择Ubuntu主要是觉得这个环境下会更方便;
  2. 安装Java开发环境;
  3. 了解学习Maven的使用,搭建相关环境;
  4. 安装IDE环境;
  5. 按官方教程,构建示例;
  6. 完成语法树解析生成程序,输入为java源码文件,输出为该文件对应的语法树描述;

安装Ubuntu虚拟机

安装Ubuntu版本 20.04.

安装Java开发环境

JDK是Java开发的基础,需要搜索Ubuntu环境下JDK的安装方式。

sudo apt install default-jdk

默认JDK为11.0版本,当前maven要求版本是1.7版本,所以版本可以匹配。安装成功后,通过命令java --version进行检查。
注意:需要构建一个JAVA_HOME的环境变量,这个在JDK安装过程中并没有自动构建。我指定的目录为/usr/lib/default-java,不同系统下可能会不同。

学习Maven

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.

简单来说,Maven是一个基于POM概念的项目管理工具,将项目涉及的多个方面都添加到一个文件中描述。例如以前项目描述中,并没有如何来生成对应文档的信息,随着技术进步,管理变化,后来出现了生成文档的需要,如果分为多个工具来描述(不同工具的项目配置文件),对于项目管理来说是一个灾难。针对这样的场景,就可以基于Maven进行插件扩展,添加对应的项目信息描述,使用者还是只维护一个项目文件信息。
POM,我们可以简单理解就是一个XML文件。只是更加具体的规定了XML节点的名称、属性等信息。

对于Maven的学习,可以参考官方网站的介绍,包含了下载、安装、运行、配置等过程。对于最简单例子来说,只需要10分钟就可以走一遍。

安装IDE环境

Java有几个可选的IDE环境,在安装具体的IDE环境之前,我建议直接通过原始的命令行与文本编辑器进行示例学习,通过这种原始的方法,可以更好的理解Maven的使用过程,更好的理解IDE配置项的含义。
为了简单化,可以直接安装一个专门的JAVA开发IDE,例如IntelliJ IDEA,直接使用VS Code可能在代码提示方面会需要一些配置,需要额外的学习时间。

构建示例

根据Maven的教程,构建了第一个基于Maven的项目。在学习了解JavaParser项目时,发现文档中都是很简单的示例说明,对于小白来说,还需要更多细节信息。例如,例子中,没有导入包,直接使用相关的类,而对于不熟悉的人来说,这些包在哪里,如何定位,都是需要熟悉的。
后来,在JavaParser项目的github仓库中,看到有更具体的例子代码给出,参照该例子代码进行POM的编写,以及Java代码的实现。

完成语法树解析生成程序

JavaParser提供了初级的AST树生成程序,支持Yaml与XML,以及其他形式的输出,在本任务中,直接使用了XML的输出方式。后期,根据相似度对比的需要,再对输出信息进行更完整的定制。

相关代码

https://gitee.com/imlaji/java-ast

记录回顾

时间: 除去吃饭时间,总共花费5小时。
地点: 家中
任务完成情况: 实现了基本的Java语法树解析。
反思:

  1. 需要进一步对Maven的使用进行深入了解,在使用过程中,只是参照例子选择了合适的插件,有哪些插件?如何选择?都需要进一步了解;
  2. VS Code的代码提示如何设置?针对不同语言有不同的扩展,如何学习VS Code扩展的设置方法;
  3. 在不熟悉,不了解的事情上,时间还是会可能超出预期,发生不可控的问题。

相关文章

  • JavaParser实践记录

    需求 由于项目需要,需要添加对JAVA源码分析的支持。源码分析由团队自己开发,但如何保障开发的分析器结果的正确性,...

  • JavaParser:Java代码生成

    在本文中,我将向您展示如何使用...生成Java代码JavaParser。我在javaparser.org或手册中...

  • AS Could not download javaparser

    setting-Build,Execution,Deployment-Gradle把Offline work 前的勾去掉

  • 【精时力管理】时间记录02

    崔律的《时间记录》第2讲的课后实践。 〈实践事项Do〉 调整我的类别: 〈实践日志(记录)〉 1.我的实践: ①在...

  • 前端代码覆盖率增量计算

    关于后台的代码增量的逻辑已经有比较成熟的方案了。 根据javaparser解析前后的文件的方法列表,判断是否有新增...

  • 求职每日说——岗前实践24

    岗前实践同样需要记录,大学生求职者在进行完岗前实践后,建议向实践单位索取实践证明,这样既是对实践经历的记录也是对自...

  • 时间记录系列DAY8

    时间记录课程第六讲课后实践 我的实践 继续记录时间 实践的亮点 暂无,今天实践的不太好 我的收获 需要重新认真听一...

  • 实践记录

    ##早上吃过早饭后,二舅爷爷划着船,带着爸爸妈妈、奶奶、姑姑和我,一起去捕鱼。出发了,我们路过了鸬鹚们的休息地点,...

  • 实践记录

    刚开始接触这门课的时候,完全不知所措(虽然现在也差不多),但是源源不断的有许多新奇的知识让我们学习,在以前,我能接...

  • 实践记录

    1. 2019 07 RN + mobx 08 fastify + jest 09 mysql packag...

网友评论

      本文标题:JavaParser实践记录

      本文链接:https://www.haomeiwen.com/subject/gcdulltx.html