# 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模式

2、excel模式
