Adrninistrator / java-all-call-graph

Generate all call graph for Java Code.
Apache License 2.0
426 stars 110 forks source link

0.79版本舍弃了0.77新增的注解过长截取的功能 #24

Open liliyue98 opened 1 year ago

liliyue98 commented 1 year ago

因为新版本进行了注解数据结构的调整嘛,然后该版本在这里去掉了之前优化的注解过长的问题 ,是有什么考量吗0.0 (因为字段过长报错还蛮普遍的

Adrninistrator commented 1 year ago

0.79版本对注解属性的获取做了优化,以前版本里获取的注解属性可能获取到一个类的整个内容,所以会超长 现在还会有超长的情况吗,帮忙把相关的注解结构发出来看一下,敏感信息可以替换掉

liliyue98 commented 1 year ago

1.注解超长举例:用到org.mapstruct.Mappings这个注解很容易超长的,大概格式 @Mappings({target=“”,source=“”,……},{},……)

2.而且方法名也会超长 太难了 emm类型转换的方法很容易超长 想着要么前置给屏蔽掉

Adrninistrator commented 1 year ago

注解超长的,后面准备这样处理: 1.把注解属性截取的处理恢复回去 2.增加一个配置,支持忽略指定的注解,不写入数据库 下个版本还要等一段时间,有个大的优化,时间估计以月计,如果着急用可以先针对这个改个版本

方法名现在在H2是设置的长度3000,在MySQL是TEXT,比这个更长的方法名是什么情况

liliyue98 commented 1 year ago

1.可以透露一下下次更新大概有些啥功能吗哈哈哈 因为我也在小做改造~

2.方法的话带参数很容易超的,一些实体类方法,参数多一点不管多大都得超em

liliyue98 commented 1 year ago

and 其实屏蔽这个功能可以做在每个层级: 1.底层callgraph2的生成txt的屏蔽 2.读入h2的屏蔽【这个比较重要,很多长度等问题都是这里来的,而且个人感觉很多是没必要存的,也占空间】 3.向下的屏蔽【这个算有了】

emm随便叨叨: 还有屏蔽的方向也可以扩充其实,现在都是用名称匹配的嘛,从功能上来说还有枚举和lombok这种意义不太大的调用

Adrninistrator commented 1 year ago

1.可以透露一下下次更新大概有些啥功能吗哈哈哈 因为我也在小做改造~

2.方法的话带参数很容易超的,一些实体类方法,参数多一点不管多大都得超em

  1. 方法调用支持获取父类/接口对应的实际子类/实现类,支持获取参数类型、参数值,这个是最大的改动,其他是平时反馈的一些问题和功能优化
  2. 后面把H2的数据库表的相关字段再加长一倍,写入前做一下截取
liliyue98 commented 1 year ago

是指会定位到:接口多个实现定位到真正实现的 和 多个继承关系里的具体实现吗 不过有的动态注入或者其他情况应该还是没办法定位?这种还是会保持为现在的放在额外目录么?

Adrninistrator commented 1 year ago

是指会定位到:接口多个实现定位到真正实现的 和 多个继承关系里的具体实现吗 不过有的动态注入或者其他情况应该还是没办法定位?这种还是会保持为现在的放在额外目录么?

分两种情况

  1. 直接在当前方法new出来的对象,可以识别出来具体的类
  2. 使用Spring管理的Bean,通过注解注入的Bean,可以识别出来具体的类

其他情况,比如反射等,还是获取不到具体的类,对于一般的业务代码足够了

获取不到具体类的情况,和现有的处理保持一致

liliyue98 commented 1 year ago

注解超长的,后面准备这样处理: 1.把注解属性截取的处理恢复回去 2.增加一个配置,支持忽略指定的注解,不写入数据库 下个版本还要等一段时间,有个大的优化,时间估计以月计,如果着急用可以先针对这个改个版本

方法名现在在H2是设置的长度3000,在MySQL是TEXT,比这个更长的方法名是什么情况

试了一下 注解超长的emm没有办法跟之前版本一样直接截取,因为后续对于注解解析还需要保持之前分析的格式呢

Adrninistrator commented 1 year ago

注解超长的,后面准备这样处理: 1.把注解属性截取的处理恢复回去 2.增加一个配置,支持忽略指定的注解,不写入数据库 下个版本还要等一段时间,有个大的优化,时间估计以月计,如果着急用可以先针对这个改个版本 方法名现在在H2是设置的长度3000,在MySQL是TEXT,比这个更长的方法名是什么情况

试了一下 注解超长的emm没有办法跟之前版本一样直接截取,因为后续对于注解解析还需要保持之前分析的格式呢

现在有多长,不行就只能对内容做压缩了

Adrninistrator commented 1 year ago

除了方法名,注解属性,其他还会不会有超长的情况,比如类名之类的,如果有的话我统一优化一下

liliyue98 commented 1 year ago

注解超长的,后面准备这样处理: 1.把注解属性截取的处理恢复回去 2.增加一个配置,支持忽略指定的注解,不写入数据库 下个版本还要等一段时间,有个大的优化,时间估计以月计,如果着急用可以先针对这个改个版本 方法名现在在H2是设置的长度3000,在MySQL是TEXT,比这个更长的方法名是什么情况

试了一下 注解超长的emm没有办法跟之前版本一样直接截取,因为后续对于注解解析还需要保持之前分析的格式呢

现在有多长,不行就只能对内容做压缩了

多的有6k

liliyue98 commented 1 year ago

类名应该不会;除了方法全名(full_method), 方法名100也会超的,我sql里面直接调成了255

Adrninistrator commented 1 year ago

下个版本把这些优化一下

Adrninistrator commented 1 year ago

可以试用最新版,详细文档暂未完成 版本:1.0.0