黑盒,白盒处理合并
This commit is contained in:
@@ -20,6 +20,27 @@ python test-data/s30_db_e2e.py
|
||||
python -m cobol_testgen ../cobol-tna-system/src/KIN01INP.cbl
|
||||
```
|
||||
|
||||
## 全流程数据生成(run.py)
|
||||
|
||||
先跑白盒 `cobol_testgen`(静态分析 + 测试数据),成功后跑黑盒 `black-box-data-create`(DeepSeek LLM 生成 JSON/SQL):
|
||||
|
||||
```bash
|
||||
python run.py \
|
||||
--design "D:\cobol-tna-system\詳細設計書\詳細設計書_ZAN04MAT.md" \
|
||||
--source "D:\cobol-tna-system\src\ZAN04MAT.cbl" \
|
||||
--file-db-md "D:\cobol-tna-system\詳細設計書\COPY句定義書.md" \
|
||||
--cpy "D:\cobol-tna-system\cpy" \
|
||||
--db-md "D:\cobol-tna-system\詳細設計書\DB定義書.md" \
|
||||
--output "D:\output"
|
||||
|
||||
# 只查看将执行的命令,不真正运行
|
||||
python run.py --design ... --output ... --dry-run
|
||||
```
|
||||
|
||||
- 参数 `--design / --source / --file-db-md / --cpy / --db-md / --output` 为必需项,`--api-key / --model / --rules / --max-tokens` 可选透传给黑盒。
|
||||
- 两步输出到同一 `--output` 根目录:白盒写 `output/<程序ID>/main/...`,黑盒写 `output/<程序ID>/g{N}/...`。
|
||||
- 任一步失败即停止并返回该步退出码。
|
||||
|
||||
## 架构
|
||||
|
||||
```
|
||||
@@ -43,17 +64,6 @@ cobol_testgen runners comparator agents
|
||||
| `docs/v3-理解文档.md` | 系统架构、组件说明、数据流(中文,457 行) |
|
||||
| `docs/changelog-v1-to-v3.md` | V1→V3 演进记录 |
|
||||
| `docs/module-interfaces.md` | 模块接口定义 |
|
||||
| `docs/detailed-design/00-overview.md` | V3系统总体设计 |
|
||||
| `docs/detailed-design/01-cobol-testgen-core.md` | 核心引擎详细设计 |
|
||||
| `docs/detailed-design/02-orchestrator-db.md` | DB管道编排详细设计 |
|
||||
| `docs/detailed-design/03-runners.md` | 编译运行引擎详细设计 |
|
||||
| `docs/detailed-design/04-hina-classification.md` | HINA分类系统详细设计 |
|
||||
| `docs/detailed-design/05-agents-llm.md` | LLM代理详细设计 |
|
||||
| `docs/detailed-design/06-comparator.md` | 比对模块详细设计 |
|
||||
| `docs/detailed-design/07-config-system.md` | 配置系统详细设计 |
|
||||
| `docs/detailed-design/08-data-flow.md` | 数据流设计 |
|
||||
| `_AI_USAGE_LOG.md` | AI使用日志 |
|
||||
| `docs/development-paradigm.md` | 开发范式流程图 |
|
||||
| `DESIGN.md` | Web UI 设计规范 |
|
||||
| `CONTRIBUTING.md` | 贡献指南 |
|
||||
|
||||
@@ -72,106 +82,14 @@ python -m cobol_testgen --gcov <cobol_src> runtime/
|
||||
# 诊断脚本
|
||||
python diagnose_db2.py # DB 全流程
|
||||
python diagnose_kind8dbrun.py # DB 编译运行
|
||||
|
||||
# 黑盒数据生成
|
||||
python black-box-data-create/main.py --design "D:\xxxx\詳細設計書_xxxx.md" --source "D:\xxxx\xxxx.cbl" --file-db-md "D:\xxxx\COPY句定義書.md" --cpy "D:\cobol-tna-system\cpy" --db-md "D:\xxxx\DB定義書.md" --output "D:\xxxx\output"
|
||||
|
||||
```
|
||||
|
||||
## 项目性质
|
||||
|
||||
本项目是 **AI 辅助的 COBOL 程序迁移验证工具**,用于验证 COBOL 程序向 Java/Spark 迁移的正确性。
|
||||
|
||||
### 核心功能
|
||||
|
||||
| 功能 | 说明 |
|
||||
|------|------|
|
||||
| COBOL 源码解析 | 自动解析 DATA DIVISION 和 PROCEDURE DIVISION |
|
||||
| 测试数据生成 | 基于分支覆盖的测试数据自动生成 |
|
||||
| 双管道验证 | 支持非 DB(flat file)和 DB(SQLite)两种验证模式 |
|
||||
| 覆盖率分析 | 静态分支覆盖 + 动态 gcov 覆盖 |
|
||||
| AI 辅助 | LLM 驱动的程序分类和测试策略生成 |
|
||||
|
||||
### 技术特点
|
||||
|
||||
- **非阻塞路径枚举**: O(N) 算法替代 O(2^N) 爆炸
|
||||
- **MC/DC 条件覆盖**: 支持 AND/OR/NOT 复合条件
|
||||
- **DB 种子键一致性**: WHERE 宿主变量 MOVE 链解析
|
||||
- **中文 HTML 报告**: 全中文覆盖率报告
|
||||
|
||||
---
|
||||
|
||||
## 成果摘要
|
||||
|
||||
### 开发成果
|
||||
|
||||
| 指标 | 数量 |
|
||||
|------|------|
|
||||
| 核心代码 | 22 个模块,~8000 行 |
|
||||
| 测试文件 | 80+ 个测试用例 |
|
||||
| 基准程序 | 43 个 COBOL 程序 |
|
||||
| 修复数量 | 19 个关键 bug 修复 |
|
||||
| 设计文档 | 9 个 V3 详细设计文档 |
|
||||
|
||||
### 覆盖率
|
||||
|
||||
| 类型 | 覆盖率 |
|
||||
|------|--------|
|
||||
| 分支覆盖率 | 75% |
|
||||
| 条件覆盖率 | 75% |
|
||||
| 测试通过率 | 95%+ |
|
||||
|
||||
### 技术亮点
|
||||
|
||||
1. **Lark 语法解析**: 使用 Earley parser 解析 COBOL 语法
|
||||
2. **MC/DC 条件覆盖**: 支持复合条件的最小条件覆盖
|
||||
3. **双管道架构**: 非 DB 和 DB 管道并行运行
|
||||
4. **AI 辅助**: DeepSeek LLM 驱动的程序分类和测试策略
|
||||
|
||||
---
|
||||
|
||||
## 团队分工
|
||||
|
||||
### AI 辅助 (DeepSeek)
|
||||
|
||||
| 任务 | 负责内容 |
|
||||
|------|----------|
|
||||
| 代码开发 | 核心引擎、测试用例、文档编写 |
|
||||
| 测试执行 | 运行测试套件、收集覆盖率数据 |
|
||||
| 文档生成 | 详细设计文档、测试报告、README |
|
||||
| 代码审查 | 自动触发 code-review skill |
|
||||
|
||||
### 人工审查
|
||||
|
||||
| 任务 | 负责内容 |
|
||||
|------|----------|
|
||||
| 需求确认 | 验证功能符合竞赛要求 |
|
||||
| 代码审查 | 审查 AI 生成的代码质量 |
|
||||
| 验收测试 | 执行端到端验证 |
|
||||
| 最终提交 | 推送到主分支、提交成果物 |
|
||||
|
||||
---
|
||||
|
||||
## 技术难度
|
||||
|
||||
### 难点分析
|
||||
|
||||
| 难点 | 说明 | 解决方案 |
|
||||
|------|------|----------|
|
||||
| COBOL 语法复杂性 | 支持 33+ 种语句类型 | Lark Earley parser + 状态机 |
|
||||
| 路径爆炸 | 复合条件导致路径指数增长 | O(N) MC/DC 算法 |
|
||||
| DB 管道一致性 | 种子键与运行时查询键不一致 | MOVE 链解析 + 列名归一化 |
|
||||
| 覆盖率标记 | 复合条件分支标记错误 | 条件树 + evaluate_tree |
|
||||
|
||||
### 已知限制
|
||||
|
||||
| 限制 | 影响 | 状态 |
|
||||
|------|------|------|
|
||||
| 条件覆盖率 75% | `_FUNC_MOD` 合成函数不可匹配 | 待优化 |
|
||||
| 无 Java 比对管道 | 仅验证 COBOL 输出 | 规划中 |
|
||||
| DB 管道需 gixsql | 依赖外部工具 | 已 vendored |
|
||||
|
||||
---
|
||||
|
||||
## 依赖
|
||||
|
||||
- **Python 3.12+** + `lark`, `pyyaml`
|
||||
- **GnuCOBOL 3.2.0** (GC32-BDB-SP1,含 DB2/SQLite 支持)
|
||||
- **gixsql** (已 vendored 在 `gixsql/` 目录)
|
||||
- **DeepSeek API** (可选,用于 LLM 路径生成)
|
||||
|
||||
Reference in New Issue
Block a user