Adrninistrator / java-all-call-graph

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

allowed_class_prefix只支持包名么? #63

Closed zhzhdoai closed 5 months ago

zhzhdoai commented 5 months ago

看了代码allowed_class_prefix配置似乎只支持包名,不支持全类名。

需求是:其他被分析的恶意类如com.thoughtworks.xstream.Xstream,只加载该恶意类。不加载com.thoughtworks.xstream包名下其他类。想尽可能把资源放在项目代码上分析,不需要加载恶意包中其他无关类。

运行环境如下: allowed_class_prefix.properties配置: com.project. com.thoughtworks.xstream.Xstream

jar_dir.properties配置: /Users/xxxx/Documents/Code/selfproject/lib /Users/xxxx/Documents/java-all-call-graph-main/java-all-call-graph/xstream.jar

2024-05-10 14:54:55.899 [main] ERROR AbstractRunnerGenCallGraph.doGetSimpleClassName(258) - 指定的完整类名 com.thoughtworks.xstream.XStream 不存在,请检查,可能因为指定的类所在的jar包未在配置文件 _jacg_config/jar_dir.properties中指定

zhzhdoai commented 5 months ago

临时解决:
java/com/adrninistrator/jacg/runner/RunnerGenAllGraph4Callee.java#genAllGraph4Callee if(!callerMethod.getCallerFullMethod().contains("com.project")){ callGraphNode4CalleeStack.peek().setCallerMethodHash(callerMethodHash); continue; }

Adrninistrator commented 5 months ago

我试了一下,是支持的,可能和版本有关