# Jef-code-analysis **Repository Path**: ghlggc/jef-code-analysis ## Basic Information - **Project Name**: Jef-code-analysis - **Description**: java代码解析工具,后续逐渐完善功能,目前支持从工程中筛选关键字,输出关键字所在的类路径以及方法名。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-02-29 - **Last Updated**: 2024-02-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Jef-code-analysis ### 介绍 Jef-code-analysis是一个针对代码工程解析输出类全名和方法的工具 ### 背景 笔者最近接到一个需求,要将公司核心项目工程中的所有涉及原生sql的类和方法梳理出来,以备后续改造。笔者首先想到的解决方案便是利用idea的全局搜索和select、update、insert into、delete等关键字来进行查找,然而查找后由于内容太多,超过一定的行数后就不再展示,通过idea插件将结果导出后也是一团糟,效率慢,而且很多内容依然需要人工去整理,费时费力。 ### Jef-code-analysisd的处理方式 1、通过迭代扫描获取所有的java文件,并逐个遍历
2、利用语法分析器来分析单个java文件,从中解析出类名、方法名、以及方法体。
3、识别方法体中是否包含关键字
4、将结果输出到指定文件。
### 使用方式: 1、下载代码到本地,执行maven install后(依赖包全部基于笔者仓库,如有需要下载打包即可),target中的jef-analysis-export-1.0-SNAPSHOT-start.jar即为启动jar.
2、配置jef.properties,内容如下:
```properties # 关键字 jef.analysis.keywords=select ;insert into;update ;delete ; # 目前暂时只支持excel、txt(普通文本文件) jef.analysis.save.type=txt # 结果保存文件全路径 jef.analysis.save.path=C:\\Users\\cz\\Desktop\\hot\\report.txt # 需要扫描的工程路径 jef.analysis.scan.path=D:\\Java\\JavaSource\\Jef-orm ``` 3、启动脚本: ```shell script nohup java -Xmx4048m -Djef.properties=file://./jef.properties -jar ./jef-analysis-export-1.0-SNAPSHOT-start.jar >analysis.log 2>&1 & ``` 为什么启动脚本中指定了这么大的jvm内存呢?
因为语法分析器需要将文件全部加载到内存中去处理,如果内存指定太小会有内存溢出的风险!后续适配语法解析的流式解析,那时将不需要指定很大的内存。 4、停止脚本: ```shell script stop=`jps -v | grep 'jef-analysis-export-1.0-SNAPSHOT-start.jar' | awk -F ' *' '{print$1}'` echo $stop kill -9 $stop echo 'stop success' ``` ### 效果: 1、txt模式
![输入图片说明](imagetxt.png) 2、excel模式
![输入图片说明](imageimage.png)