Adrninistrator / java-callgraph2

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

最大行号获取逻辑改为:取LineNumberTable中的源码行的最大值,而非最后一行的值 #44

Closed MOOSD closed 3 months ago

MOOSD commented 3 months ago

发现了一个小bug,如果方法以try-resource结尾并且在try-resource中进行return。此时对应code属性中的LineNumberTable的最后一行并不对应源码中的最后一行,可能是try-resource语法糖的原因?

因此我修改了获取最大行号的逻辑:取LineNumberTable中源码行的最大值,而非最后一行的值。虽然解决方式很简单但是还是希望能够采纳我的合并。

问题源码和字节码中行号的对比QQ截图20240328104502 QQ截图20240328104433

问题代码示例(java11编译)

public static List<String> getPomeLineList() throws IOException {
    List<String> pomLineList = new ArrayList<>();
    try (FileReader fileReader= new FileReader("pom.xml");
         BufferedReader bufferedReader = new BufferedReader(fileReader)){
        String line;
        while((line = bufferedReader.readLine()) != null){
            pomLineList.add(line);
        }
        return pomLineList;
    }
}
Adrninistrator commented 3 months ago

不好意思,刚才gitee上的代码把github的覆盖了,刚才的mr本来已经合并了,现在找不到了

Adrninistrator commented 3 months ago

https://gitee.com/adrninistrator/java-callgraph2/commit/b52cfa3d9312ab890b6dbb6ffb0ad1382bde3e7d 提交到gitee上了,等它自动同步到github,看起来有点慢 我本地访问gitee比较稳定,所以平时是提交到gitee后同步到github的