java-all-call-graph Web界面版使用说明

张开发
2026/4/13 8:35:13 15 分钟阅读

分享文章

java-all-call-graph Web界面版使用说明
1. 说明java-all-call-graph-server https://github.com/Adrninistrator/java-all-call-graph-server 是 java-all-call-graph https://github.com/Adrninistrator/java-all-call-graph 的 Web 界面版本提供操作界面便于对参数配置简化操作步骤。通过本应用用户可以通过友好的 Web 界面来管理 Java 代码静态分析和调用链生成的配置而无需手动编写配置文件或使用命令行工具。2. 环境依赖需要使用 JDK8 及以上版本、需要使用 Gradle部分 JDK8 版本在通过 Gradlew 编译时会失败需要升级。编译失败信息如下从 Maven 仓库下载文件时失败FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project java-all-call-graph-server. Could not resolve all files for configuration :classpath. Could not resolve org.springframework.boot:spring-boot-gradle-plugin:2.7.18. Required by: project : Could not resolve org.springframework.boot:spring-boot-gradle-plugin:2.7.18. Could not get resource https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-gradle-plugin/2.7.18/spring-boot-gradle-plugin-2.7.18.pom. Could not GET https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-gradle-plugin/2.7.18/spring-boot-gradle-plugin-2.7.18.pom. The server may not support the clients requested TLS protocol versions: (TLSv1.2). You may need to configure the client to allow other protocols to be used. See: https://docs.gradle.org/7.6.6/userguide/build_environment.html#gradle_system_properties sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target存在问题的版本为 jdk1.8.0_111。安装更高版本的 JDK 后解决问题可从 https://adoptium.net/zh-CN/temurin/releases?version8 下载例如 jdk1.8.0_462 版本。3. 运行方式3.1. 使用 IDE 运行在 IDE如 IntelliJ IDEA中打开项目运行JacgServerApplication主类即可启动应用。3.2. 使用 Gradle 编译执行以下命令编译打包gradlew bootJar编译生成的 JAR 包位于build\libs目录通过start.bat脚本启动应用。4. 概念解释4.1. 项目每个项目配置了需要对哪些 Java 应用编译后的代码进行解析。项目包含以下属性属性说明示例项目 ID使用当前时间精确到毫秒的字符串形式20240226100000001描述项目的描述信息订单系统调用链分析创建时间项目创建的时间戳2024-02-26 10:00:00Java 代码路径需要解析的 jar/war/class 文件或目录/data/project/libs/4.2. 模板每个模板配置了需要对哪些类名方法生成向上或向下的完整方法调用链或者再根据关键字生成调用堆栈。模板包含以下属性属性说明示例模板 ID使用当前时间精确到毫秒的字符串形式20240226100100001所属项目 ID模板归属的项目20240226100000001描述模板的描述信息订单服务入口调用链调用链方向向上调用链或向下调用链caller向下或callee向上创建时间模板创建的时间戳2024-02-26 10:01:005. 配置参数5.1. 应用本身的配置参数应用本身的配置参数位于conf/application.yml文件中server.port应用监听的 HTTP 端口默认为 8080jacgserver.output.root.path应用输出的根目录默认为当前目录5.2. 项目与模板的配置参数当前应用对 java-callgraph2 与 java-all-call-graph 组件的功能与配置参数进行封装页面上每一个显示的配置对应以上组件中提供的一个配置文件或配置文件中的一个参数。配置参数类型包括配置类型说明主配置参数键值对形式的配置如应用名称、线程数等数据库配置参数数据库连接相关配置如是否使用 H2 数据库、数据库连接信息等List 配置参数区分顺序的配置列表如 jar 文件路径、关键字列表等Set 配置参数不区分顺序的配置集合如入口类/方法列表EL 表达式配置用于复杂条件判断的表达式配置6. 使用说明6.1. 主页面使用浏览器打开项目页面默认地址为 http://127.0.0.1主页面显示项目列表可以在此创建、编辑、复制、删除项目。6.2. 项目操作6.2.1. 创建项目点击新建项目按钮可以创建项目需要指定项目描述项目的描述信息用于标识项目用途Jar/Class 文件路径需要解析的 jar、war、jmod 文件或目录路径每行一个路径创建项目时系统会自动生成项目配置目录设置数据库配置默认值默认使用 H2 数据库创建配置文件6.2.2. 项目详情项目完成创建后点击项目可展示详情。项目详情页面显示项目基本信息项目 ID、描述、创建时间项目操作按钮执行静态分析、编辑、删除、复制、新建模板、查询执行记录、打开日志目录项目下的模板列表6.2.3. 项目执行与记录点击执行静态分析按钮可对项目指定的 Java 代码进行分析。执行时系统会对指定的 jar/war/class 文件进行静态分析分析结果写入数据库生成执行记录执行期间相关按钮会被禁用编辑、删除、复制、新建模板等按钮显示执行中。…状态执行完成后自动恢复按钮状态点击查询执行记录按钮可以查看项目执行记录包括执行时间、状态、耗时等信息。6.2.4. 项目配置参数编辑点击编辑按钮可打开项目配置参数编辑页面。在编辑项目页面可以修改项目描述Jar/Class 文件路径点击编辑项目页面的编辑配置参数按钮可以编辑项目的详细配置参数包括JavaCG2 主配置java-callgraph2 组件的主配置参数JACG 主配置java-all-call-graph 组件的主配置参数JACG 数据库配置数据库连接相关配置列表配置区分顺序的配置参数列表Set 配置不区分顺序的配置参数集合EL 配置表达式配置参数点击某个配置参数的问号按钮可以查看参数的详细说明。6.2.5. 表达式配置参数通过标签页可以打开不同的配置参数例如表达式相关配置参数。点击示例可查看表达式对应的详细说明包括表达式语法和使用示例。6.2.6. 表达式快捷输入菜单在表达式文本框点击右键可以显示表达式快捷输入菜单支持快速插入变量当前表达式支持的变量逻辑运算符、||、!、()比较运算符、!、、、、集合判断include、!include字符串方法startsWith、endsWith、contains 等6.3. 模板操作6.3.1. 创建模板在某个项目内点击新建模板按钮可以创建模板需要指定模板描述模板的描述信息调用链方向向下调用链caller查找指定方法调用的所有方法向上调用链callee查找调用指定方法的所有方法入口类/方法每行一个格式为类名方法名或完整方法签名是否启用生成调用链根据关键字生成堆栈可选功能启用后需要配置关键字模板创建后会在项目中显示。6.3.2. 模板详情点击模板可以打开模板详情。模板详情页面显示模板基本信息模板 ID、描述、调用链方向、创建时间入口类/方法列表关键字列表如果启用模板操作按钮生成调用链、生成调用链根据关键字生成堆栈、编辑、删除、复制、查询执行记录6.3.3. 模板执行与记录点击生成调用链按钮根据配置的入口类/方法生成完整的方法调用链。点击生成调用链根据关键字生成堆栈按钮在生成调用链的基础上根据配置的关键字筛选生成调用堆栈。执行前系统会检查项目是否有成功的静态分析执行记录关键字是否已配置针对生成堆栈功能如果检查不通过会提示相应的错误信息。执行记录包括执行 ID入口类/方法关键字针对生成堆栈记录执行时间执行状态执行中/已完成/失败执行耗时输出目录路径6.3.4. 模板配置参数编辑点击编辑按钮可打开模板配置参数编辑页面。在编辑模板页面可以修改模板描述入口类/方法是否启用生成调用链根据关键字生成堆栈关键字列表点击编辑模板页面的编辑配置参数按钮可以编辑模板的详细配置参数。注意模板的数据库配置会自动使用所属项目的数据库配置在编辑页面显示为只读状态并提示模板会自动使用对应项目的数据库配置。模板支持的配置参数主配置JACG 主配置参数部分参数不展示或只读数据库配置只读自动使用项目配置列表配置区分顺序的配置参数列表Set 配置不区分顺序的配置参数集合EL 配置表达式配置参数6.4. 其他功能6.4.1. 打开目录在以下位置可以打开目录主界面顶部打开应用根目录项目详情页打开项目的日志目录执行记录列表打开生成的调用链文件目录注意打开目录功能仅支持 Windows 操作系统。6.4.2. 复制项目/模板复制功能可以基于现有项目或模板创建新的项目或模板复制时会复制所有配置参数。6.4.3. 删除项目/模板删除项目或模板时会同时删除项目/模板的配置文件项目下的所有模板仅删除项目时相关的日志文件注意删除操作不可恢复请谨慎操作。7. 应用使用的目录与文件7.1. 应用配置目录应用配置目录位于{应用根目录}/conf/包含应用运行所需的配置文件{应用根目录}/conf/ ├── application.yml # 应用配置文件 └── log4j2.xml # 日志配置文件application.yml 主要配置项配置项说明默认值server.port应用监听的 HTTP 端口8080jacgserver.output.root.path输出根目录./log4j2.xml 配置控制日志输出格式、级别和文件位置。注意使用 Gradle 编译打包后需要手动创建conf目录并放入配置文件。应用启动时会通过-Dspring.config.additional-location和-Dlog4j2.configurationFile参数加载配置。7.2. 输出根目录输出根目录由配置参数jacgserver.output.root.path指定默认为当前目录./。可在以下位置配置conf/application.yml文件中的jacgserver.output.root.path参数JVM 启动参数-Djacgserver.output.root.path路径启动脚本参数start.bat -o 路径或start.bat --output 路径输出根目录是所有输出文件的基础目录包括项目配置、日志、生成的调用链文件等。7.3. 项目与模板配置文件项目与模板的配置文件保存在输出根目录下的project_conf/目录中{输出根目录}/project_conf/ ├── project.json # 项目列表配置文件保存所有项目的基本信息 └── {项目 ID}/ # 每个项目一个目录 ├── config/ # 项目配置文件java-callgraph2 与 java-all-call-graph 组件的配置 ├── h2db/ # 项目使用的 H2 数据库文件目录 │ └── jacg.mv.db # H2 数据库文件静态分析结果 └── templates/ # 模板目录 └── {模板 ID}/ # 每个模板一个目录 └── config/ # 模板配置文件7.4. H2 数据库文件应用使用两类 H2 数据库文件7.4.1. 应用执行记录数据库保存项目与模板的执行记录位于{应用根目录}/h2db/record.mv.db。记录内容包括项目静态分析执行记录模板生成调用链执行记录执行状态、耗时、输出目录等信息7.4.2. 项目静态分析数据库每个项目使用独立的 H2 数据库保存静态分析结果位于{项目配置目录}/h2db/jacg.mv.db。数据库中保存的内容包括类信息方法信息方法调用关系字段信息等模板生成调用链时会读取所属项目的数据库。7.5. 生成的调用链目录调用链文件生成在输出根目录下目录说明_jacg_o_ee/向上调用链输出目录callee查找调用指定方法的所有方法_jacg_o_er/向下调用链输出目录caller查找指定方法调用的所有方法每个模板执行后会在对应目录下生成以执行 ID 命名的子目录包含生成的调用链文件。7.6. 日志目录应用日志保存在{输出根目录}/log/目录下按项目 ID 分组{输出根目录}/log/ └── {项目 ID}/ # 每个项目一个目录 ├── analysis.log # 静态分析日志 └── {模板 ID}/ # 每个模板一个目录 └── callgraph.log # 生成调用链日志日志文件用于问题排查和执行过程追踪。8. 注意事项执行顺序必须先对项目执行静态分析才能对模板执行生成调用链操作并发控制项目执行静态分析时相关操作会被禁止模板执行时模板相关操作会被禁止数据库配置项目与项目下所有模板使用相同的数据库配置修改项目数据库配置会自动同步到所有模板

更多文章