COBOL → Java/Spark 迁移验证平台 v3
项目性质:新规(从零开发的新作品)
项目概述
自动解析 COBOL 源码,生成覆盖全分支路径的测试数据,分别运行 COBOL 和 Java/Spark 两个版本,逐字段比对输出,判定迁移正确性。
支持 非 DB(flat file I-O)和 DB(EXEC SQL → gixsql + SQLite)两条平行管道。
整体功能说明
核心能力
| 功能模块 |
说明 |
| COBOL源码解析 |
自动解析DATA DIVISION和PROCEDURE DIVISION,构建分支树 |
| 测试数据生成 |
基于分支覆盖的测试数据自动生成(规则引擎+LLM) |
| 双管道验证 |
支持非DB(flat file)和DB(SQLite)两种验证模式 |
| 覆盖率分析 |
静态分支覆盖 + 动态gcov覆盖,生成HTML报告 |
| AI辅助 |
LLM驱动的程序分类和测试策略生成 |
工作流程
- 白盒分析:
cobol_testgen 静态解析COBOL,生成测试数据
- 黑盒生成:
black-box-data-create 使用DeepSeek LLM生成测试数据
- 全流程验证:
run.py 组合白盒+黑盒,输出最终测试数据
效果总结(核心指标摘要)
| 指标 |
传统方式 |
本平台 |
提升 |
| 单程序验证时间 |
2-3天 |
10分钟 |
99%+ |
| 分支覆盖率 |
30-50% |
75%+ |
50%+ |
| 回归测试时间 |
1-2周 |
1小时 |
99%+ |
| 测试数据生成 |
手工编写 |
自动生成 |
100%自动化 |
团队分工
| 角色 |
职责 |
| 架构设计 |
系统架构设计、技术选型、核心算法开发 |
| AI开发 |
LLM集成、提示词工程、AI辅助测试策略 |
| 测试开发 |
测试框架搭建、测试数据生成、覆盖率分析 |
| 文档编写 |
技术文档、设计文档、用户手册 |
规模与技术难度自我评估
项目规模
| 指标 |
数量 |
| 源码行数 |
~15,000行 |
| 测试文件 |
80+ |
| 基准程序 |
43个COBOL程序 |
| 文档页数 |
200+ |
技术难度
| 难度项 |
等级 |
说明 |
| COBOL语法解析 |
⭐⭐⭐⭐ |
支持固定/自由格式,Lark语法解析 |
| 分支路径枚举 |
⭐⭐⭐⭐⭐ |
MC/DC条件分析,O(N)线性算法 |
| 双管道验证 |
⭐⭐⭐⭐ |
非DB+DB两种模式自动路由 |
| AI集成 |
⭐⭐⭐ |
DeepSeek LLM驱动测试策略 |
| 覆盖率分析 |
⭐⭐⭐ |
静态+动态覆盖率,HTML报告生成 |
快速开始
全流程数据生成(run.py)
先跑白盒 cobol_testgen(静态分析 + 测试数据),成功后跑黑盒 black-box-data-create(DeepSeek LLM 生成 JSON/SQL):
- 参数
--design / --source / --file-db-md / --cpy / --db-md / --output 为必需项,--api-key / --model / --rules / --max-tokens 可选透传给黑盒。
- 两步输出到同一
--output 根目录:白盒写 output/<程序ID>/main/...,黑盒写 output/<程序ID>/g{N}/...。
- 任一步失败即停止并返回该步退出码。
架构
两条管道自动路由:
- 非 DB:
cobc 编译 → flat file 二进制比对
- DB:
gixpp ESQL 预处理 → cobc -l gixsql 编译 → SQLite 表比对
文档索引
| 文档 |
说明 |
DESIGN.md |
设计文档(场景价值、范式图、Agent架构、系统架构) |
SETUP.md |
环境搭建、运行指南、检查清单(含 DB 管道) |
docs/v3-理解文档.md |
系统架构、组件说明、数据流(中文,457 行) |
docs/detailed-design/ |
V3 详细设计 (9个文档) |
docs/development-paradigm.md |
开发范式流程图 |
docs/test-report.md |
测试报告 |
docs/changelog-v1-to-v3.md |
V1→V3 演进记录 |
docs/module-interfaces.md |
模块接口定义 |
CONTRIBUTING.md |
贡献指南 |
_AI_USAGE_LOG.md |
AI 使用日志 |
AGENTS.md |
AI 协作方式与项目说明 |
核心命令
依赖
- Python 3.12+ +
lark, pyyaml
- GnuCOBOL 3.2.0 (GC32-BDB-SP1,含 DB2/SQLite 支持)
- gixsql (已 vendored 在
gixsql/ 目录)
- DeepSeek API (可选,用于LLM测试策略生成)
环境要求
| 组件 |
要求 |
| OS |
Windows 10/11 |
| Python |
3.12+ |
| GnuCOBOL |
3.2.0 |
| 磁盘 |
≥ 500MB |