# analyze **Repository Path**: tght1211/analyze ## Basic Information - **Project Name**: analyze - **Description**: codeMap: ----| 方法分析+SQL库表和表机构差异对比,输出markdown文档 ----| java依赖注入关系图显示 https://gitee.com/tght1211/CodeMap - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-02-01 - **Last Updated**: 2025-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AnalyzeCode ## 1、功能介绍 ### 1.1、迭代开发自动项目归档 > 在开发中会有多个迭代,每个迭代开发完成之后,需要将代码进行归档,方便项目发布和以后查看。 > 归档的代码一般需要包含以下信息: ①api (发布到maven仓库) ②service (可执行程序) ③web (可执行程序) > 背景:然而每次归档总是繁琐的,而且随着开发节奏的加快,改动范围过多,涉及的项目过多,每次归档都需要花费大量的时间。而且,开发完成后,还需要手动将代码归档,部分重复内容重复便携,繁琐。 现在可以定义每个迭代就用一个分支,每次迭代完成之后,输入分支,启动自动归档,复制/粘贴即可完成,结束手动归档时代!!! > 原理:基于本地.git仓库实现 ### 1.2、数据库结构差异进行对比并自动归档 > 在开发中,经常需要对比两个环境的数据库结构,比如:分销环境和行业环境。也可以采用navicat对比,但是这个工具支持输出文档,更方便宣导传播 ### 1.3、分析java代码生成代码地图 > 开发中... ## 2、项目结构 └─src └─main └─java └─com └─source ├─auto (根据分支对项目改动进行自动迭代归档)⭐新功能 2025/01/17 ├─code (初版java代码分析dev...中) ├─codemap (重构版java代码分析dev...中) ├─sql (数据库表机构sql差异对比并且自动生成markdown文档) └─test (测试各种功能区域) ## 3、功能详细说明 ### 3.1、数据库结构差异进行对比并自动归档 #### 3.1、前期准备 > 导出需要对比的俩个环境的同一个库的sql文件,记住俩个sql文件的地址,后面需要用到 > > 比如:分销环境的hive库,导出成 md_hive.sql 文件 > > 行业环境的hive库,导出成 hy_hive.sql 文件 #### 3.2、启动程序 com.source .sql SQLComparator类启动即可 #### 3.3、输入程序需要的信息 > 根据程序提示一步步输入信息 > > 下面是举例:每次输入完回车即可,如果输入异常,请重新启动程序 1.请输入需要对比的数据库名字: hive 2.请输分销环境 hive 库的sql文件地址(全路径比如:D:\data\javaLearn\hive_test_hy.sql) D:\data\javaLearn\analyze\src\main\java\com\source\sql\static\hive_test_md.sql 3.请输行业环境 hive 库的sql文件地址(全路径比如:D:\data\javaLearn\hive_test_hy.sql) D:\data\javaLearn\analyze\src\main\java\com\source\sql\static\hive_test_hy.sql 4.请输入markdown文件生成的地址(全路径比如:D:\data\javaLearn) D:\data\javaLearn\analyze\src\main\java\com\source\sql\static #### 3.4、生成的文件效果如下 sql分销和行业差异信息-hive库 > 数据对比如下 > > 一:分销相对行业的差异(重视) > > 二:行业相对分销的差异(结合业务要求判定重要程度) | 序号 | 子模块编号 | 来源表(分销魔蓝) | 目标表(行业) | 同步逻辑 | 备注 | |----|-------|-----------|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----| | 1 | 002 | hive_a | hive_a | 表结构相同,数据库直接迁移 | | | 2 | 002 | hive_b | hive_b | 表结构相同,数据库直接迁移 | | | 3 | 002 | hive_c | hive_c | 表结构相同,数据库直接迁移 | | | 4 | 002 | qrtz_a | 行业中无此表 | 表缺失 | | | 5 | 002 | hm_c | 行业中无此表 | 表缺失 | | | 6 | 002 | hive_p | hive_p | 一、分销相对行业的差异(重视){
};
二、行业相对分销的差异(结合业务要求判定重要程度){
分销中无该字段 ma_status tinyint(4);
} | | | 7 | 002 | hive_me | hive_me | 一、分销相对行业的差异(重视){
字段类型差异 show_url 行业:varchar(256),分销:varchar(100);
字段类型差异 verify_url 行业:varchar(256),分销:varchar(100);
字段类型差异 me_name 行业:varchar(128),分销:varchar(64);
};
二、行业相对分销的差异(结合业务要求判定重要程度){
} | | ### 3.2、分析java代码生成代码地图(dev...) #### 3.1、缺陷描述 ##### 2024/02/03 - [ ] 无法解析内部类 - [ ] 无法判断子方法是否属于当前项目的 - [ ] A类的MethodA调用了a接口的method-a方法,但是method-a关联不到对应的实现类的具体方法 - [ ] 无法处理枚举类型的java文件 - [ ] 无法处理链式调用的方法 - [ ] 需要设置方法关注级别 - [ ] 自身项目的方法关注级别高,调用第三方jar的方法中,get/set低,jdk自带低 - [ ] 灵活的方法关注级别调整 - [ ] 当前项目的所有类信息记录,全局map - [ ] 类相关,修饰符,类名,全类名 - [ ] 成员变量 - [ ] 接口实现 - [ ] 集成 - [ ] 方法 - [x] 当前项目的所有方法信息记录,全局map - [ ] 方法重载,类名#方法名(入参类型 var1,入参类型 var2) #### 3.2、主要流程设计 ##### 1、读取指定文件夹下的所有.java文件 ##### 2、循环解析每个.java文件 ##### 3、读取每个java文件中的所有方法,目前只设定一个java文件一个类 ##### 4、每个方法的所有信息记录 ```json { "methodAbsName": "", //方法的唯一名称 "methodAllName": "", //类路径#方法名 "simpleName": "", //简单名称 "childMethodAllNames": [ //子方法的类#子方法名称 { "methodAbsName": "", //方法的唯一名称 带入参类型 "methodAllName": "", //类路径#方法名 "simpleName": "", //简单名称 "classAllName": "", //类全名 "ownership": "" //归属类别 self、jdk、other } ], "classAllName": "", //类全名 "interfaceAllNames": [ //接口全名 "" ], "superClassAllName": "", //父类全名 "override": false, //是否是重写方法 "topClassType": "", //顶级类型 class、interface、enum "ownership": "" //归属类别 self、jdk、other } ``` ##### 5、优先把所有当前项目的方法都载入内存 ##### 6、再遍历所有方法的内部,进行被调用方法的补充 - [x] 项目自身方法载入 - [ ] 其他项目的方法载入 - [ ] JDK原生方法载入,涉及到源码读取 ##### 7、导出json文件,交给python解析 ##### 8、python解析关系图,前端展示方法引用关系