Skip to main content

build-db

使用 jar-analyzer-engine 从 JAR/WAR/Class 文件构建 SQLite 分析数据库。这是进行 Java 代码安全审计、方法调用分析的第一步。

来源信息

仓库
jar-analyzer/jar-analyzer-claude
最近来源活动
2026年3月20日 18:54
检测到的 SKILL.md 语言
中文
星标
140
分支
8

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
build-db
description
使用 jar-analyzer-engine 从 JAR/WAR/Class 文件构建 SQLite 分析数据库。这是进行 Java 代码安全审计、方法调用分析的第一步。
# build-db — 构建 Jar Analyzer 分析数据库 ## 概述 使用内置的 `jar-analyzer-engine-1.2.0.jar` 对目标 JAR/WAR/Class 文件进行静态分析, 生成 SQLite 数据库(`jar-analyzer.db`)。该数据库包含类信息、方法定义、方法调用关系、 继承关系、字符串常量、Spring 组件信息等,是后续所有分析操作的数据基础。 ## 引擎位置 ``` <plugin_dir>/bin/jar-analyzer-engine-1.2.0.jar ``` > `<plugin_dir>` 是本插件的安装目录(即包含 `bin/`、`skills/` 的目录)。 > 运行前请确认 Java 8+ 已安装且在 PATH 中。 ## 命令参考 ``` java -jar <plugin_dir>/bin/jar-analyzer-engine-1.2.0.jar [options] ``` ### 必选参数 | 参数 | 说明 | |:-----|:-----| | `--jar <path>`, `-j <path>` | 目标 JAR/WAR 文件或包含 class 文件的目录路径(**必需**) | ### 可选参数 | 参数 | 说明 | 默认值 | |:-----|:-----|:-------| | `--quick`, `-q` | 快速模式:仅分析方法调用关系,跳过继承/字符串/Spring 分析 | `false` | | `--inner-jars` | 解析 JAR 内嵌套的 JAR(如 Spring Boot FatJar) | `false` | | `--fix-class` | 使用 FixClassVisitor 修复类名 | `false` | | `--no-fix-impl` | 禁用自动方法实现修复(不推荐) | `false` | | `--rt <path>` | 指定 rt.jar 路径(用于 JDK 类分析) | 无 | | `--white-list <text>`, `-w <text>` | 类/包白名单(仅分析匹配的类),支持文本或文件路径 | 无 | | `--white-list-file <path>` | 白名单文件路径 | 无 | | `--black-list <text>`, `-b <text>` | 类/包黑名单(排除匹配的类),支持文本或文件路径 | 无 | | `--black-list-file <path>` | 黑名单文件路径 | 无 | | `--log-level <level>` | 日志级别:DEBUG, INFO, WARN, ERROR | `INFO` | | `--decompile <class>`, `-d <class>` | 反编译模式:反编译指定类并输出源码(不构建数据库) | 无 | | `--help`, `-h` | 显示帮助信息 | — | ### 黑白名单说明 - 使用 `/` 分隔的包名格式(如 `com/example/app`) - 白名单:**仅**分析匹配的包/类 - 黑名单:**排除**匹配的包/类 - 支持直接传入文本,或指定一个文件路径(每行一个包名/类名) - 黑白名单不能同时使用 ## 输出 | 产出 | 路径 | 说明 | |:-----|:-----|:-----| | SQLite 数据库 | `jar-analyzer.db`(当前工作目录) | 包含全部分析结果 | | 临时目录 | `jar-analyzer-temp/`(当前工作目录) | 解压的 class 文件,分析完成后可清理 | ## 数据库包含的信息 | 数据类型 | 说明 | |:---------|:-----| | 类信息 | 类名、父类、接口、注解、访问修饰符 | | 方法信息 | 方法名、描述符、注解、访问修饰符 | | 成员变量 | 字段名、类型、访问修饰符 | | 方法调用关系 | 调用者 → 被调用者的完整映射 | | 继承/实现关系 | 类继承链、接口实现关系 | | 方法实现 | 接口方法 → 实现方法的映射 | | 字符串常量 | LDC 指令加载的字符串及其所在方法 | | 注解字符串 | 注解中的字符串值 | | Spring 组件 | Controller、Mapping、参数信息(如适用) | | Class 文件 | 原始 class 文件的二进制数据 | ## 标准操作流程(SOP) ### 1. 确认环境 ```bash java -version # 确保 Java 8+ 可用 ``` ### 2. 确认目标文件 向用户确认待分析的 JAR/WAR 文件路径或目录路径。 ### 3. 选择分析模式 根据场景选择合适的参数组合: **完整分析**(推荐,适合安全审计): ```bash java -jar <plugin_dir>/bin/jar-analyzer-engine-1.2.0.jar -j <target_path> ``` **快速分析**(仅方法调用关系,速度更快): ```bash java -jar <plugin_dir>/bin/jar-analyzer-engine-1.2.0.jar -j <target_path> -q ``` **FatJar 分析**(Spring Boot 等嵌套 JAR): ```bash java -jar <plugin_dir>/bin/jar-analyzer-engine-1.2.0.jar -j <target_path> --inner-jars ``` **指定范围分析**(仅分析特定包): ```bash java -jar <plugin_dir>/bin/jar-analyzer-engine-1.2.0.jar -j <target_path> -w "com/example/app" ``` **排除第三方库**: ```bash java -jar <plugin_dir>/bin/jar-analyzer-engine-1.2.0.jar -j <target_path> -b "org/apache" ``` ### 4. 执行构建 运行命令并观察输出,关注以下关键信息: - `totalJar`: 发现的 JAR 文件数量 - `totalClass`: 分析的类数量 - `totalMethod`: 分析的方法数量 - `dbSize`: 生成的数据库大小 - `Progress: 100%`: 构建完成 - `Time elapsed`: 构建耗时 ### 5. 验证结果 确认 `jar-analyzer.db` 已生成,并告知用户: - 数据库路径 - 分析的类/方法数量 - 数据库大小 - 可以使用 `do-analyze` skill 进行后续分析 ### 6. 反编译模式(可选) 如果用户只需要快速查看某个类的源码,可以使用反编译模式: ```bash java -jar <plugin_dir>/bin/jar-analyzer-engine-1.2.0.jar -j <target_path> -d <fully.qualified.ClassName> ``` 例如: ```bash java -jar <plugin_dir>/bin/jar-analyzer-engine-1.2.0.jar -j app.jar -d com.example.MyController ``` > 注意:反编译模式不会构建数据库,仅输出反编译后的 Java 源码到控制台。 ## 注意事项 - 当 JAR 数量较多或体积较大时,数据库文件和临时目录可能非常大,请确保磁盘有足够空间 - 构建过程中会在当前目录创建 `jar-analyzer-temp/` 临时目录 - 如果数据库已存在,重新运行会**覆盖**旧数据库 - 建议在目标项目目录或专门的分析目录下执行命令 - Windows 环境下路径使用 `\` 或 `/` 均可
在 GitHub 查看