java-all-call-graph
java-all-call-graph copied to clipboard
关于 allowed_class_prefix.properties
作者您好,我记得之前版本有这个配置文件 allowed_class_prefix.properties,或者构建 ConfigWrapper 时可以设置 OtherConfigFileUseSetEnum.OCFUSE_ALLOWED_CLASS_PREFIX 来指定需要解析的 package 或 class,最近版本好像找不到了。
现在有其他 api 可以代替这个功能吗?
参考 https://github.com/Adrninistrator/java-all-call-graph/blob/main/change_log.md#1271-%E5%88%A0%E9%99%A4%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6
_jacg_config/allowed_class_prefix.properties
用于指定 java-callgraph2 解析类时需要处理的类名或包名前缀,以及 java-all-call-graph 在写入数据库时需要写入的类名或包名前缀
删除当前配置文件后,可以通过 java-callgraph2 组件提供的配置达到相同的控制效果
现在需要通过 JavaCG2ConfigureWrapper 来配置需要忽略哪些类,参考
https://github.com/Adrninistrator/java-all-call-graph/blob/main/java-all-call-graph/src/test/java/test/runbycodemain/Test1RunnerWriteDb.java
https://github.com/Adrninistrator/java-callgraph2/blob/main/src/test/java/test/parse/TestParseEl.java
收到,感谢回复。
我目前使用 java-callgraph2 的版本是 3.0.5,以这种方式创建的 CG2 配置,期望是只解析 com.test 开头的 package,但是解析日志中看起来还是解析了其他 package,jacg 的 h2 数据库中也是保存了很多其他类。
不知道是这段配置有问题,还是需要 java-all-call-graph 的 ConfigurationWrapper 一起配置使用呢?
public JavaCG2ConfigureWrapper createJavaCG2ConfigureWrapper() {
JavaCG2ConfigureWrapper javaCG2ConfigureWrapper = new JavaCG2ConfigureWrapper();
javaCG2ConfigureWrapper.setMainConfig(JavaCG2ConfigKeyEnum.CKE_PARSE_METHOD_CALL_TYPE_VALUE, Boolean.TRUE.toString());
javaCG2ConfigureWrapper.setMainConfig(JavaCG2ConfigKeyEnum.CKE_FIRST_PARSE_INIT_METHOD_TYPE, Boolean.TRUE.toString());
javaCG2ConfigureWrapper.setMainConfig(JavaCG2ConfigKeyEnum.CKE_ANALYSE_FIELD_RELATIONSHIP, Boolean.TRUE.toString());
javaCG2ConfigureWrapper.setMainConfig(JavaCG2ConfigKeyEnum.CKE_LOG_METHOD_SPEND_TIME, Boolean.TRUE.toString());
javaCG2ConfigureWrapper.setMainConfig(JavaCG2ConfigKeyEnum.CKE_CONTINUE_WHEN_ERROR, Boolean.FALSE.toString());
javaCG2ConfigureWrapper.setMainConfig(JavaCG2ConfigKeyEnum.CKE_OUTPUT_FILE_EXT, JavaCG2Constants.EXT_MD);
javaCG2ConfigureWrapper.setMainConfig(JavaCG2ConfigKeyEnum.CKE_ANALYSE_FIELD_RELATIONSHIP, Boolean.TRUE.toString());
// 解析的 jar 目录
javaCG2ConfigureWrapper.setOtherConfigList(JavaCG2OtherConfigFileUseListEnum.OCFULE_JAR_DIR, resolverArgs.getJarPath());
// 指定解析的 class
// 语法文档:https://github.com/Adrninistrator/java-callgraph2/blob/main/src/main/resources/el_example.md
javaCG2ConfigureWrapper.setElConfigText(JavaCG2ElConfigEnum.ECE_PARSE_IGNORE_METHOD_CALL_ER_EE,
"!(string.startsWith(er_full_method, 'com.test')) || !(string.startsWith(ee_full_method, 'com.test'))"
);
return javaCG2ConfigureWrapper;
}
看一下jar_info表,里面有导入时间,可能是因为指定的jar包没有变化,所有实际上没有重新解析入库,可以删掉这个表的数据重新执行试下
了解了,感谢,现在的配置方式比 1.x 的时候灵活了不少