171 lines
6.9 KiB
Markdown
171 lines
6.9 KiB
Markdown
# Black-white-box-Merge vs feat/phase2-review-fixes 分支差异报告
|
||
|
||
**生成时间:** 2026-08-23
|
||
**基准分支:** feat/phase2-review-fixes
|
||
**对比分支:** Black-white-box-Merge
|
||
**总计:** 19个文件变更,-3,379行,+358行
|
||
|
||
---
|
||
|
||
## 一、`cobol_testgen/__init__.py` (-1,021行)
|
||
|
||
### Black-white-box-Merge 删除了以下高级功能:
|
||
|
||
| 功能 | 行数 | 说明 |
|
||
|------|------|------|
|
||
| `_coordinate_multi_file_keys()` | ~120行 | 跨文件键值协同 |
|
||
| `_coordinate_range_matching()` | ~80行 | 金额-区间对齐 |
|
||
| `_serialize_read_into_records()` | ~60行 | READ INTO 序列化 |
|
||
| `_inject_merge_input_records()` | ~60行 | MERGE 输入记录注入 |
|
||
| `_inject_end_of_page_records()` | ~40行 | LINAGE 分页注入 |
|
||
| `_inject_sort_limit_records()` | ~40行 | SORT 上限注入 |
|
||
| `_provision_sub_input_files()` | ~50行 | 子程序输入供给 |
|
||
| `_coordinate_tertiary_fd()` | ~80行 | 多文件照合前置序列 |
|
||
| `_inject_leave_type_scenarios()` | ~60行 | 休暇種別覆盖 |
|
||
| `_find_key_pairs_inner()` | ~50行 | キーフィールドペア検出 |
|
||
| `_inject_c01_coverage_records()` | 保留 | C01覆盖率注入 |
|
||
|
||
### `main()` 函数变化:
|
||
- P6-P12 注入步骤被删除
|
||
- `scan_all_file_directions()` → `scan_open_statements()`(简化)
|
||
|
||
---
|
||
|
||
## 二、`cobol_testgen/to_sql.py` (-668行)
|
||
|
||
### Black-white-box-Merge 删除了以下高级功能:
|
||
|
||
| 功能 | 说明 |
|
||
|------|------|
|
||
| `_scan_between_spans()` | BETWEEN跨度扫描 |
|
||
| `_restore_between_placeholders()` | BETWEEN占位符还原 |
|
||
| `_parse_between_operand()` | BETWEEN操作数解析 |
|
||
| `_parse_between_placeholder()` | BETWEEN占位符解析 |
|
||
| `_rec_get()` / `_rec_has()` | 记录值获取(兼容flat/嵌套格式) |
|
||
| `_norm_col()` / `_norm_table()` | 列名/表名规范化 |
|
||
| `_declared_cols_for()` | 声明列查询(兼容下划线/连字符) |
|
||
| `_hostvar_root()` | 宿主变量链追溯 |
|
||
| `_resolve_runtime_hostvar()` | 运行时宿主变量解析 |
|
||
| `_resolve_where_hostvar()` | WHERE宿主变量解析 |
|
||
| `_runtime_or_where_hostvar()` | 运行时/WHERE合并解析 |
|
||
| `_derive_runtime_hostvar()` | 运行时值推导 |
|
||
| `_between_seed_value()` | BETWEEN种子值计算 |
|
||
| `_input_pk_field()` | 输入PK字段查找 |
|
||
| `_insert_collision_row()` | PK碰撞行构建 |
|
||
| `_dispatch_field_and_sets()` | 事务调度字段分类 |
|
||
| `_trace_input_root()` | 调度字段根追溯 |
|
||
| `_classify_record_dispatches()` | 记录调度分类 |
|
||
|
||
### `build_db_input()` 变化:
|
||
- INSERT 碰撞行逻辑简化
|
||
- DELETE/UPDATE 仅对实际执行的记录建行
|
||
- SELECT 种子逻辑简化
|
||
|
||
---
|
||
|
||
## 三、`orchestrator_db.py` (-727行)
|
||
|
||
### Black-white-box-Merge 删除了以下功能:
|
||
|
||
| 功能 | 说明 |
|
||
|------|------|
|
||
| `_merge_schema_columns()` | YAML schema列类型合并 |
|
||
| `_insert_pk_map()` | PK映射表构建 |
|
||
| `_deduplicate_r01_pk()` | R01 PK去重 |
|
||
| `_inject_extra_seed_rows()` | 额外种子行注入 |
|
||
| `_inject_aggregation_boundaries()` | 聚合边界数据注入 |
|
||
| `_coordinate_db_rule_matching()` | DB属性区间对齐 |
|
||
| `_coordinate_seed_numeric_types()` | DB种子值数字化 |
|
||
| CONNECT补丁 | gixpp CONNECT修复 |
|
||
| CWD/kin.db复制 | SQLite连接路径修复 |
|
||
|
||
### `run_scenario()` 变化:
|
||
- EMP-ID SPACE 清理逻辑简化
|
||
- PK去重逻辑简化
|
||
- gcov 合并逻辑简化
|
||
|
||
---
|
||
|
||
## 四、`runners/gixsql_runner.py` (-192行)
|
||
|
||
### Black-white-box-Merge 删除了以下功能:
|
||
|
||
| 功能 | 说明 |
|
||
|------|------|
|
||
| `_strip_schema_qualifiers()` | DB2 schema修饰符剥离 |
|
||
| `_normalize_schema_qualifiers()` | EXEC SQL块内schema规范化 |
|
||
| `_normalize_current_timestamp()` | CURRENT TIMESTAMP规范化 |
|
||
| `_patch_sql_identifiers()` | SQL连字符→下划线 |
|
||
| `_patch_sqlcode_normalize()` | SQLCODE -1555→-803映射 |
|
||
| `_patch_sqlcode_override()` | SQLCODE=0覆盖 |
|
||
| COMP-5→COMP | SQLCA字节序修正 |
|
||
|
||
### CONNECT 处理变化:
|
||
- `sqlite://localhost/kin` → `sqlite:///C:/Temp/gix/{pid}.db`
|
||
|
||
---
|
||
|
||
## 五、其他文件差异
|
||
|
||
| 文件 | 变更 | 说明 |
|
||
|------|------|------|
|
||
| `cond.py` | -108行 | 删除 class condition、复合条件MC/DC |
|
||
| `core.py` | -158行 | 删除 SEARCH 路径枚举、CALL级联 |
|
||
| `coverage.py` | -96行 | 删除搜索路径、覆盖合并优化 |
|
||
| `design.py` | -211行 | 删除 class condition、SEARCH枚举、CALL一致性 |
|
||
| `design_mcdc.py` | -177行 | 删除 SEARCH MC/DC、复合条件MC/DC |
|
||
| `pipeline_bridge.py` | -71行 | 删除旧解析器比较逻辑 |
|
||
| `read.py` | -73行 | 删除 MERGE/SORT方向扫描、PIC N支持 |
|
||
| `runner.py` | -43行 | 删除 abend 单独执行、命令行参数 |
|
||
| `file_io.py` | -17行 | COMP字节序大端→小端、COMP-3小数位 |
|
||
| `flatfile.py` | -17行 | 删除非数字值SPACE回退、sysin RESET模式 |
|
||
| `grammar.lark` | +2行 | 删除 COMP-4、POINTER |
|
||
| `output.py` | +5行 | 删除 is_filler 检查 |
|
||
| `data_merger.py` | +8行 | 合并顺序颠倒(additional→main) |
|
||
| `config/program_schema.py` | -9行 | 删除 schema 模块 |
|
||
|
||
---
|
||
|
||
## 六、本质差异
|
||
|
||
| 维度 | Black-white-box-Merge | feat/phase2-review-fixes |
|
||
|------|----------------------|--------------------------|
|
||
| **设计哲学** | 精简核心,专注白盒+黑盒流程 | 全功能,覆盖所有边界场景 |
|
||
| **跨文件照合** | 不支持 | 完整支持 |
|
||
| **MERGE/SORT** | 基础支持 | 完整注入 |
|
||
| **SEARCH MC/DC** | 不支持 | 完整支持 |
|
||
| **CLASS condition** | 不支持 | 完整支持 |
|
||
| **DB种子** | 基础 | 高级(碰撞行、区间对齐、数字化) |
|
||
| **SQL兼容** | 基础 | DB2→SQLite完整适配 |
|
||
| **文件布局** | 基础COMP/COMP-3 | 大端COMP、小数位精确 |
|
||
|
||
---
|
||
|
||
## 七、恢复建议
|
||
|
||
### 从 feat/phase2-review-fixes 恢复到 Black-white-box-Merge 的功能:
|
||
|
||
| 优先级 | 功能 | 恢复复杂度 |
|
||
|--------|------|-----------|
|
||
| P0 | SQLCA COMP-5→COMP 字节序 | 低(直接替换) |
|
||
| P0 | DB2 schema修饰符剥离 | 低(正则替换) |
|
||
| P0 | SQL连字符→下划线 | 低(正则替换) |
|
||
| P0 | SQLCODE -1555→-803映射 | 低(正则替换) |
|
||
| P1 | BETWEEN跨度扫描 | 中(需适配简化后的build_db_input) |
|
||
| P1 | 跨文件键值协同 | 高(依赖file_sec和open_dir) |
|
||
| P1 | MERGE输入记录注入 | 高(依赖file_sec) |
|
||
| P2 | SEARCH MC/DC | 高(依赖cond_tree) |
|
||
| P2 | CLASS condition | 高(依赖cond.py) |
|
||
| P2 | 子程序输入供给 | 中(独立模块) |
|
||
| P3 | CONNECT补丁 | 低(直接替换) |
|
||
| P3 | CWD/kin.db复制 | 低(直接替换) |
|
||
|
||
---
|
||
|
||
## 八、注意事项
|
||
|
||
1. **Black-white-box-Merge 的新功能**:`run.py` 全流程入口、`black-box-data-create/` 黑盒LLM模块是独立新增,不受此差异影响
|
||
2. **测试文件差异**:Black-white-box-Merge 删除了16个测试文件,需确认是否恢复
|
||
3. **YAML schema差异**:Black-white-box-Merge 删除了3个YAML文件(已恢复)
|
||
4. **设计书差异**:Black-white-box-Merge 删除了20+个设计书(在 `jcl-cobol-data-create/` 中)
|