Skip to main content

build-db

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

Quellinformationen

Repository
jar-analyzer/jar-analyzer-claude
Letzte Quellaktivität
20. März 2026 um 18:54
Erkannte Sprache von SKILL.md
Chinesisch
Sterne
140
Forks
8

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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 环境下路径使用 `\` 或 `/` 均可
Auf GitHub ansehen