和我之前做的一个 demo 思路一样,可以一起交流
目前我这边分析方法调用链是通过字节码扫描的方式, 使用 asm。 分析过程中发现, 方法调用分析出来的如果是 spring 自动注入的 bean 或者 声名的是父亲类 (实际 new 的子类的对象, 调用的子类的方法), 这时候分析出来的调用都是父类的方法, 即分析不出来子类方法被调用的情况。特别是有多态的情况。 这种如何解决呢?
asm 的方式之前尝试了一下,发现遇到的变动问题太多,进没有过多的深入,所以采用了静态分析的方法。不过你可以请教一个人或者先看看他的公众号:bug 虫洞栈
想了解下,在 git diff 方式下进行比较和生成调用链,是通过手动触发还是自动触发的,后续的解析,包括的 git clone/checkout/pull 和代码编译需要花费的时间大约是多少?
整体 git diff 出结果的时间很短的,但是如果你链接的 git 比较耗时,那就会占用大部分时间。我在公司使用内容很快的,没有性能瓶颈。触发形式可以自己决定,既可以定时根据代码提交情况出报告(可以结合 jenkins),也可以根据实际需求手动触发,总之这些问题可以平台化后考虑,前期核心实现更加关注技术的适用性。
有没有开放源呢?JGIT 获取的差异代码是如何做差异准确定位到方法的?
JGIT 获取变更代码的时候确实有点恶心,只会显示新增或删除的代码块。我用的方法是先解析这个类所有方法所在的行数,然后再计算变更的代码属于哪个行数,那就可以精准定位到方法
顶顶~辛苦出实践文档