vitaliy-hnatyk/java-code-map-yaml

GitHub: vitaliy-hnatyk/java-code-map-yaml

一款 Java 静态分析命令行工具,通过解析源码生成包含类、方法及跨类调用关系的 YAML 结构化映射,帮助开发者梳理遗留项目架构。

Stars: 1 | Forks: 0

# Java 代码 Map YAML [![Java CI](https://github.com/your-org/java-code-map-yaml/actions/workflows/maven.yml/badge.svg)](https://github.com/your-org/java-code-map-yaml/actions/workflows/maven.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ## GitHub 描述 **Java 静态分析 CLI 工具,用于生成包含类、字段、方法、可见性修饰符和跨类方法调用的 YAML 映射。** ## GitHub 主题 / 标签 ``` java static-analysis javaparser java-parser symbol-solver yaml code-map call-graph architecture-documentation reverse-engineering maven cli-tool ``` ## 功能简介 `java-code-map-yaml` 会扫描 Java 项目并生成一个 `code-map.yml` 文件,其中包含: - 类、接口、枚举和注解 - 包名、文件路径和源码行号 - 类可见性:`public`、`private`、`protected`、`package-private` - 带有类型、修饰符和注解的字段 - 构造函数和方法 - 方法可见性和修饰符 - 方法参数和返回类型 - 每个方法/构造函数内部的方法调用 - 当 JavaParser Symbol Solver 能够解析时,提供已解析的目标类/方法 - 反向索引:哪些外部项目类调用了指定的方法 它适用于为老旧 Java 项目、WildFly/JBoss 应用、服务层、SOAP/REST 模块、GWT 项目以及大型遗留代码库编写文档。 ## 局限性 此工具执行静态源代码分析。它可以检测到如下的直接 Java 调用: ``` userValidator.validate(dto); repository.save(user); this.prepareData(); ``` 可能无法完全检测到动态或框架驱动的调用,例如: - 反射 - Spring/CDI 代理调用 - 纯 XML 装配 - JSP/JSF/GWT UiBinder 事件 - 基于 WSDL/运行时元数据的 SOAP 分发 - SQL 存储过程调用 - 隐藏在未包含于扫描源根目录中的生成源码内的调用 ## 环境要求 - Java 8+ - Maven 3.8+ ## 构建 ``` mvn clean package ``` 生成的可运行 jar 包将位于: ``` target/java-code-map-yaml-1.0.0.jar ``` ## 使用说明 分析一个 Java 项目: ``` java -jar target/java-code-map-yaml-1.0.0.jar \ --project /path/to/your/java-project \ --output /path/to/your/java-project/code-map.yml ``` 简写的位置参数语法也同样适用: ``` java -jar target/java-code-map-yaml-1.0.0.jar /path/to/your/java-project /path/to/code-map.yml ``` 仅分析选定的源根目录: ``` java -jar target/java-code-map-yaml-1.0.0.jar \ --project /path/to/project \ --source-root module-a/src/main/java \ --source-root module-b/src/main/java \ --output code-map.yml ``` 排除测试源码: ``` java -jar target/java-code-map-yaml-1.0.0.jar \ --project /path/to/project \ --exclude-tests ``` 显示帮助: ``` java -jar target/java-code-map-yaml-1.0.0.jar --help ``` ## 输出示例 ``` generator: java-code-map-yaml generated_at: '2026-07-09T22:00:00+02:00' project_root: /projects/my-java-app source_roots: - /projects/my-java-app/src/main/java java_files_count: 2 classes_count: 2 classes: - name: com.example.app.service.UserService simple_name: UserService package: com.example.app.service kind: class file: src/main/java/com/example/app/service/UserService.java line: 5 visibility: public modifiers: - public annotations: [] extends: [] implements: [] fields: - names: - validator type: UserValidator visibility: private modifiers: - private - final annotations: [] line: 7 methods: - name: createUser signature: createUser(String) return_type: String visibility: public modifiers: - public annotations: [] line: 14 parameters: - name: email type: String varargs: false annotations: [] calls: - name: validate raw: validator.validate(email) scope: validator line: 15 resolved: true target_class: com.example.app.validation.UserValidator target_signature: com.example.app.validation.UserValidator.validate(java.lang.String) target_method: validate project_class: true external_class_call: true called_by_other_classes: - target_method: com.example.app.validation.UserValidator.validate(java.lang.String) called_by: - caller_class: com.example.app.service.UserService caller_method: createUser(String) line: 15 ``` ## 输出 Schema 参见 [`docs/OUTPUT_SCHEMA.md`](docs/OUTPUT_SCHEMA.md)。 ## 遗留项目的推荐工作流 1. 运行该工具并生成 `code-map.yml`。 2. 将该 YAML 文件提交到一个文档分支。 3. 在 YAML 中搜索 `external_class_call: true` 以查找跨类依赖。 4. 在 `called_by_other_classes` 中搜索,以在进行重构之前找到方法的调用方。 5. 在大规模重构后重新生成 YAML,并在 Git 中比较变更。 ## 依赖项 - [JavaParser Symbol Solver](https://github.com/javaparser/javaparser) - [SnakeYAML](https://bitbucket.org/snakeyaml/snakeyaml) - [Maven Shade Plugin](https://maven.apache.org/plugins/maven-shade-plugin/) ## 许可证 MIT。参见 [`LICENSE`](LICENSE)。
标签:JS文件枚举, 云安全监控, 代码地图, 域名枚举, 安全专业人员, 文档结构分析, 架构文档, 调用图, 静态分析