Adrninistrator / java-callgraph2

Programs for producing static call graphs for Java programs.
Apache License 2.0
184 stars 66 forks source link

指定目标是代码目录不是jar时,输出是空的。 #35

Open Tecinno4 opened 9 months ago

Tecinno4 commented 9 months ago

您好,请问可以指定要处理的目标是一个项目目录吗,而不是jar包,我试了下,处理目标指定为这项目的src目录,就是”jar_dir.properties“设置的是当前项目的src,生成的结果都是空的,method_call.txt为空。实际上我是想用这个工具分析我Android的项目代码,我不知道这个是不是可行的,我试了下method_call一直是空。 image

Adrninistrator commented 9 months ago

jar_dir.properties这个配置文件里需要指定jar包的路径,或者是指定目录 指定目录的时候,目录中需要有jar包,或者是有class文件 如果指定的目录里没有jar包或者class文件的时候,输出结果就会是空的

Tecinno4 commented 8 months ago

好的谢谢大佬,我已经成功提取到调用关系了,但是还有个问题请教下,如何知道一个方法名他对应的代码行号呢,我看结果里面只有他方法体开始到结束的代码行号,但是方法名对应的行号没有,有些方法名会写好几行,我想知道方法名第一行行号怎么弄呢,还有如果可以知道是哪个java文件的那就更好了。

Adrninistrator commented 8 months ago

现在是通过class文件获取这些信息的,获取到的方法开始的代码行号和java文件里的方法所在行号不是一个值,需要获取的话要用javaparser解析java文件https://javaparser.org/ 现在记录的都是类名,和java文件要通过包名和类名关联,javaparser可以获得java文件里的包名和类名

Tecinno4 commented 8 months ago

我对比了method_line_number.txt里提供的开始和结束代码行号和我原本java文件里的代码开始结束行号正好匹配的,真的是两个不同的东西吗,method_line_number生成的行号跟原本java里面的代码行号是不匹配的吗?

Adrninistrator commented 8 months ago

看你指的代码行号是对应什么内容的,method_line_number.txt文件内容和方法实际的开始结束代码行号是对应的 如果说方法名所在的行号,这个应该是对应不上

Tecinno4 commented 8 months ago

好的谢谢大佬,我研究下javaparser