# java-migration-analyzer **Repository Path**: wusu-jia-spicy/java-migration-analyzer ## Basic Information - **Project Name**: java-migration-analyzer - **Description**: Java jdk8 迁移到 jdk17或者jdk21 的辅助分析工具 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2026-03-27 - **Last Updated**: 2026-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, jdk, migration ## README # Java Migration Analyzer Java 8 → Java 17/21 兼容性分析工具,帮助您在升级Java版本前识别潜在的兼容性问题。 ## 功能特性 - **API兼容性分析**: 检测已移除/废弃的JDK API调用 - **内部API检测**: 识别sun.misc.*、com.sun.*等非公开API的使用 - **反射访问分析**: 检测深度反射和setAccessible调用 - **依赖兼容性检查**: 分析第三方库的Java版本支持情况 - **多格式报告**: 支持JSON、HTML格式输出 ## 快速开始 ### 环境要求 - Java 17+ - Maven 3.8+ ### 编译 ```bash git clone https://gitee.com/wusu-jia-spicy/java-migration-analyzer.git cd java-migration-analyzer mvn clean install ``` ### 使用方式 #### 1. 命令行工具 ```bash # 分析项目 java -jar analyzer-cli/target/analyzer-cli.jar \ --project /path/to/your/project \ --target-java 17 \ --output report.json # 查看帮助 java -jar analyzer-cli/target/analyzer-cli.jar --help ``` #### 2. Maven插件 在pom.xml中添加插件配置: ```xml com.example analyzer-maven-plugin 1.0.0-SNAPSHOT 17 json ``` 执行分析: ```bash mvn migration:analyze ``` #### 3. 编程方式 ```java import com.example.migration.analyzer.JavaMigrationAnalyzer; import com.example.migration.model.AnalysisResult; public class Example { public static void main(String[] args) { JavaMigrationAnalyzer analyzer = new JavaMigrationAnalyzer(); AnalysisResult result = analyzer.analyze("/path/to/project", 17); result.getViolations().forEach(v -> { System.out.println(v.getSeverity() + ": " + v.getMessage()); }); } } ``` ## 项目结构 ``` java-migration-analyzer/ ├── analyzer-core/ # 核心分析引擎 ├── analyzer-rules/ # 规则定义 ├── analyzer-maven-plugin/ # Maven插件 ├── analyzer-cli/ # 命令行工具 └── docs/ # 文档 ``` ## 文档 - [架构设计](docs/ARCHITECTURE.md) - 系统架构详解 - [规则开发](docs/RULES.md) - 自定义规则开发指南 - [使用手册](docs/USAGE.md) - 详细使用说明 ## 支持的检测规则 | 规则类型 | 描述 | 示例 | |---------|------|------| | 移除API | Java 9-21中移除的API | Pack200, javax.security.cert | | 废弃API | 已标记废弃的API | Object.finalize() | | 内部API | JDK内部包访问 | sun.misc.Unsafe | | 反射访问 | 深度反射调用 | setAccessible(true) | | 模块访问 | 模块系统限制 | 需要--add-exports | | 依赖兼容 | 第三方库版本检查 | 检查依赖的Java版本要求 | ## 输出示例 ```json { "project": "my-app", "targetJava": 17, "violations": [ { "rule": "RemovedApiRule", "severity": "ERROR", "file": "src/main/java/com/example/App.java", "line": 42, "message": "Pack200 has been removed in Java 14", "suggestion": "Use jdk.pack module or external library" } ], "summary": { "errors": 1, "warnings": 3, "info": 5 } } ``` ## 贡献 欢迎提交Issue和Pull Request。 ## 许可证 Apache License 2.0