# go_java_tool **Repository Path**: ismartyx/go_java_tool ## Basic Information - **Project Name**: go_java_tool - **Description**: 一个用 Go 编写的 Java 开发辅助工具集合,提供代码生成、分析、转换、部署等功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-31 - **Last Updated**: 2026-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JavaTool - Java 开发者工具集 一个用 Go 编写的 Java 开发辅助工具集合,提供代码生成、分析、转换、部署等功能。 ## 安装 ```bash # 克隆项目 git clone https://github.com/yourname/javatool.git cd javatool # 编译 go build -o javatool.exe main.go # 添加到 PATH(可选) # Windows: 将目录添加到系统环境变量 PATH # Linux/macOS: export PATH=$PATH:$(pwd) ``` ## 快速开始 ```bash # 查看所有命令 ./javatool.exe # 代码命名转换 ./javatool.exe naming camel2snake MyClassName # 输出: my_class_name # 生成 POJO ./javatool.exe codegen pojo User # 输出完整的 Java 类代码 # 生成 Docker 部署配置 ./javatool.exe deploy myapp app.jar 8080 ./output ``` --- ## 模块分类 ### 1. Naming(命名转换) | 命令 | 说明 | 示例 | |------|------|------| | `naming camel2snake ` | CamelCase → snake_case | `MyClass` → `my_class` | | `naming snake2camel ` | snake_case → CamelCase | `my_class` → `MyClass` | | `naming pkg2path ` | 包名转文件路径 | `com.example` `User` → `com/example/User.java` | ```bash ./javatool.exe naming camel2snake orderItemList # order_item_list ./javatool.exe naming snake2camel user_name # UserName ./javatool.exe naming pkg2path com.example.model User # com/example/model/User.java ``` --- ### 2. Code Generation(代码生成) | 命令 | 说明 | 用法 | |------|------|------| | `codegen pojo ` | 生成 POJO 类 | `pojo User` | | `codegen enum ` | 从 CSV 生成枚举 | `enum Status codes.csv` | | `testgen ` | 生成 JUnit5 测试 | `testgen User User.java` | | `mappergen ` | 生成 MyBatis Mapper | `mappergen schema.sql com.example` | ```bash # 生成 POJO ./javatool.exe codegen pojo Product # 生成包含 id:Long, name:String, price:BigDecimal 的类 # 从 CSV 生成枚举 ./javatool.exe codegen enum OrderStatus status.csv # CSV 格式: CODE,name,description # 生成 MyBatis Mapper ./javatool.exe mappergen user_table.sql com.example.mapper # 生成 XML 和 Java 接口 ``` --- ### 3. Analysis(代码分析) | 命令 | 说明 | 用法 | |------|------|------| | `pom ` | 检测 Maven 依赖冲突 | `pom pom.xml` | | `log ` | 解析异常堆栈 | `log application.log` | | `classver ` | 检测 Java 编译版本 | `classver User.class` | | `depcheck ` | 检测循环依赖 | `depcheck ./src` | | `linecount ` | 统计代码行数 | `linecount ./src` | | `complexity ` | 计算圈复杂度 | `complexity Service.java 10` | | `gclog ` | 分析 GC 日志 | `gclog gc.log` | | `secretscan ` | 扫描硬编码密钥 | `secretscan ./src` | | `fieldcheck ` | 对比实体和数据库字段 | `fieldcheck User.java schema.sql` | ```bash # 检测 Maven 依赖冲突 ./javatool.exe pom pom.xml # 分析异常日志 ./javatool.exe log app.log # 输出: 异常类型统计、堆栈频率分析 # 检测循环包依赖 ./javatool.exe depcheck src/main/java # 输出: 循环依赖路径 # 代码行数统计 ./javatool.exe linecount src/main/java # 输出: 每包代码/注释/空行统计 # 扫描硬编码密钥 ./javatool.exe secretscan src/ # 检测: password, secret, api_key 等敏感词 ``` --- ### 4. Conversion(格式转换) | 命令 | 说明 | 用法 | |------|------|------| | `props2yaml ` | Properties 转 YAML | `props2yaml config.properties` | | `jwt ` | 解码 JWT Token | `jwt eyJhbG...` | | `i18n ` | 检查 i18n 缺失 | `i18n messages.properties messages_zh.properties` | | `swagger ` | 生成 Java 接口 | `swagger api-docs.json` | ```bash # Properties 转 YAML ./javatool.exe props2yaml application.properties # 解码 JWT ./javatool.exe jwt eyJhbGciOiJIUzI1NiIs... # 输出: Header, Payload, Expiry # 检查国际化缺失 ./javatool.exe i18n messages.properties messages_zh.properties messages_en.properties ``` --- ### 5. Generation(辅助生成) | 命令 | 说明 | 用法 | |------|------|------| | `curl ` | 生成 curl 测试命令 | `curl UserController.java http://localhost:8080` | | `feignmock ` | 生成 WireMock 桩 | `feignmock UserClient.java` | | `scaffold ` | 生成 Maven 多模块 | `scaffold com.example demo api,service,dal` | | `beangraph ` | 导出 Spring Bean 图 | `beangraph src/main/java` | ```bash # 从 Controller 生成 curl 命令 ./javatool.exe curl UserController.java http://localhost:8080 # 生成 Maven 多模块项目 ./javatool.exe scaffold com.mycompany myapp web,service,dal # 导出 Bean 依赖图(DOT 格式) ./javatool.exe beangraph src/main/java > bean.dot # 可用 Graphviz 可视化: dot -Tpng bean.dot -o bean.png ``` --- ### 6. Performance(性能建议) | 命令 | 说明 | 用法 | |------|------|------| | `threadpool [ioRatio]` | 线程池参数建议 | `threadpool io 0.8` | | `rtanalyzer ` | 响应时间分析 | `rtanalyzer nginx-access.log` | ```bash # 推荐线程池参数 ./javatool.exe threadpool io 0.8 # 输出: corePoolSize, maxPoolSize, queueCapacity # 分析响应时间 ./javatool.exe rtanalyzer access.log # 输出: P50/P95/P99, 吞吐量, 慢请求统计 ``` --- ### 7. Deployment(部署工具) ⭐ 完整的企业级部署解决方案,详见 [tools/deploygen/README.md](tools/deploygen/README.md) | 命令 | 说明 | 用法 | |------|------|------| | `deploygen` (demo) | 高级部署生成器 | `go run demo/main.go config.json` | #### DeployGen 特性 - ✅ **多服务独立部署** - 每个 JAR 独立 Docker 服务 - ✅ **随机端口分配** - 10000-65000 自动分配,零冲突 - ✅ **端口映射记录** - 自动生成 `ports-mapping.json` - ✅ **Nginx 路径路由** - `/api`, `/admin` 等路径代理 - ✅ **资源限制** - CPU/内存限制支持 - ✅ **SkyWalking 监控** - 可选 APM 集成 - ✅ **多副本** - 支持服务多实例 - ✅ **健康检查** - MySQL/SkyWalking 自动健康检查 ```bash # 快速部署 cd tools/deploygen/demo # 编辑 config.json go run main.go config.json # 部署 cd deployment-output docker-compose up -d ``` **配置文件示例**: `tools/deploygen/demo/config.json` ```json { "app_name": "myapp", "jars": [ { "service_name": "api", "file": "app.jar", "ports": [8080], "expose": true, "gateway": true, "route_prefix": "/api", "replicas": 2, "limit": { "cpu_limit": "1", "memory_limit": "1g" } } ], "skywalking": { "enabled": true, "expose": true } } ``` --- ## 项目结构 ``` javatool/ ├── main.go # 主入口 ├── README.md # 本文件 ├── go.mod # Go 模块定义 └── tools/ # 工具模块 ├── naming/ # 命名转换 ├── codegen/ # 代码生成 ├── testgen/ # 测试生成 ├── mappergen/ # MyBatis 生成 ├── depcheck/ # 依赖检查 ├── complexity/ # 复杂度分析 ├── linecount/ # 行数统计 ├── secretscan/ # 密钥扫描 ├── deploygen/ # 部署生成 ⭐ │ ├── demo/ │ │ ├── main.go │ │ └── config.json # 部署配置示例 │ └── README.md ├── pom/ # Maven 分析 ├── logparser/ # 日志解析 ├── classver/ # 字节码版本 ├── gclog/ # GC 分析 ├── fieldcheck/ # 字段检查 ├── props2yaml/ # 配置转换 ├── jwt/ # JWT 解码 ├── i18ncheck/ # i18n 检查 ├── swaggergen/ # Swagger 生成 ├── curlgen/ # curl 生成 ├── feignmock/ # WireMock 生成 ├── scaffold/ # 项目脚手架 ├── beangraph/ # Bean 图生成 ├── threadpool/ # 线程池建议 ├── rtanalyzer/ # 响应时间分析 └── ... # 其他工具 ``` --- ## 开发指南 ### 添加新工具 1. 在 `tools/` 下创建新目录 2. 实现工具函数 3. 在 `main.go` 中添加调用 ```go // tools/myutil/myutil.go package myutil func Run(args []string) { // 工具实现 } ``` ```go // main.go import "github.com/yourname/javatool/tools/myutil" case "myutil": myutil.Run(os.Args[2:]) ``` --- ## 环境要求 - **Go** 1.19+ - **Docker** 20.10+ (部署功能) - **Docker Compose** 2.0+ (部署功能) --- ## 许可证 MIT License --- ## 贡献 欢迎提交 Issue 和 PR! 1. Fork 项目 2. 创建分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'Add amazing feature'`) 4. 推送分支 (`git push origin feature/amazing-feature`) 5. 创建 Pull Request --- **Made with ❤️ by Java Developers, powered by Go**