NB-076
|
50995d3335
|
chore: SETUP.md + 测试报告脚本 + 文档更新
- SETUP.md: 完整环境搭建指南(同事用)
- SETUP_QUICK.md: 快速搭环境(4步)
- s22~s26: TNA端到端、覆盖率报告、回归检查
- procedure_grammar.lark: 实验性Lark语法
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-25 08:50:17 +08:00 |
|
NB-076
|
e5ab3baa46
|
提升:37/37基准程序全量解析+O(N)路径枚举+运行时gcov验证
## 核心变更
### 1. 新PROCEDURE DIVISION解析器(procedure_parser.py)
- 行级状态机替换旧的BrParser regex解析器
- 覆盖:IF/ELSE/END-IF(嵌套)、EVALUATE/WHEN/ALSO、
PERFORM UNTIL/VARYING、READ/AT END/NOT AT END、
SORT/MERGE、GO TO DEPENDING ON
- 之前:3/37程序有分支检测 → 现在:37/37全部有分支
- 速度:~20ms/程序,纯规则引擎
### 2. 桥接层(pipeline_bridge.py)
- 新解析器为主,旧解析器3秒超时兜底
- 自动选取分支数更多的结果
### 3. 线性路径枚举(design_mcdc.py)
- 替换旧的Cartesian积路径枚举(O(2^N))为每决策点独立枚举(O(N))
- 28-sysin: 162分支仅163条路径(之前需截断到60DP)
- 消除了500路径硬上限和60DP截断
### 4. 条件解析修复(cond.py)
- NOT运算符规范化:X NOT = 5 → X <> 5
- 88-level反向:NOT WS-EOF-Y → parent <> value
- 裸字段引用:NOT WS-EOF → WS-EOF <> 'Y'
- 验证:1182个IF条件中0个NOT污染
### 5. 约束字段过滤(__init__.py)
- OF限定词剥离:STD-KEY OF MASTER-REC → STD-KEY
- 下标字段解析:WS-ITEM(SUB) → WS-ITEM
- 跳过不在fields_dict中的字段(group item/伪影)
### 6. 预处理器增强(read.py)
- VALUE ALL剥离(VALUE ALL '*' → VALUE '*')
- &续行合并(COBOL多行字符串拼接)
- PIC小数点点→V转换(Z(9)9.99. → Z(9)9V99.)
- 缺少点号补全
### 7. Grammar修复(grammar.lark)
- OCCURS 1 TIME支持(原只认TIMES)
- USAGE IS COMP支持(可选IS)
- $符号在PICTURE_STRING中
- 无NAME条款支持(clause+)
### 8. Flatfile写入(flatfile.py)
- 多记录FD支持(选字段最多的记录)
- Path类型强制转换
- 回退零值记录
### 9. Bug修复
- trace_to_root空列表保护(core.py)
### 10. 测试套件(S16-S21)
- S16: 全量基准程序端到端
- S17: gcov运行时对比
- S18/S19: 桥接器验证
- S20: DISPLAY插桩运行时验证+gcov分支覆盖率
- S21: 条件解析修复验证
- 全部17/17回归测试通过
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-22 23:41:22 +08:00 |
|
NB-076
|
943ec8ad17
|
fix: L1キーワード部分文字列FPを修正 - CALL/MAP/SYSIN/EXEC SQL
第三者監査で発見された4つの変数名起因のFPを修正:
FP1: WS-CALL-COUNT → 子程序调用(変数名にCALL)
FP2: WS-MAP-FIELD → online(変数名にMAP)
FP3: 01 SYSIN PIC X(80) → SYSIN(変数名がSYSIN)
FP4: DISPLAY 'EXEC SQL...' → DB操作(文字列リテラル内)
対策:
- CALL: re:\s*CALL\s (行頭のCALL文のみ)
- EXEC SQL: re:(?:\n|^)\s*EXEC\s+SQL(行頭でのみ)
- SYSIN: re:\s*ACCEPT\s+\S+\s+FROM\s+SYSIN(FROM SYSIN形式限定)
- MAP: L1ルールから削除(DFHCOMMAREAのみに)
- CI01サンプル: WS-COMMAREA→DFHCOMMAREAに修正
回帰: 767 passed(0 new failures)
|
2026-06-21 20:27:16 +08:00 |
|
NB-076
|
4b22c3754e
|
fix: 无连字符 KEY 变量 + COBOL 专家 10 大攻击面测试
COBOL 专家对抗性审查发现:
- 老式 COBOL 的 WSKEY1/WSKEY2(无连字符)未被 L1 关键词检测
- 结构性检测信号 4 和 5 覆盖不全
修复:
- L1 增加 re:WS[A-Z0-9]*KEY[A-Z0-9]* 覆盖无连字符 KEY 命名
- _matches_key_comparison 扩展支持无连字符变量
- has_key_var 注入扩展支持无连字符
- 结构性检测信号 4 增加 WS\w+ 比较模式
- 结构性检测信号 5 增加两个单独 OPEN 的支持
新测试:
- test_cobol_expert_attacks — 4 个内联攻击测试
(跨行AT END, 无连字符WSKEY, GO TO风格, NOT=比较)
- test-adversarial: 8 个样本文件攻击测试
全回归: 767 passed (+3 new, 0 failures)
|
2026-06-21 15:35:52 +08:00 |
|
NB-076
|
8c1f9114f6
|
feat: add COBOL statement benchmark plan and 34 P0 sample programs
- docs/cobol-statement-benchmark-plan.md — full coverage matrix and gap analysis
- 34 P0 COBOL samples: arithmetic(9), move(5), file(6), control(6),
inspect(3), search(2), perform(3)
- test-data/validate_statements.py — automatic validation script
- Validation: 34/34 samples pass preprocess + extract_structure
|
2026-06-21 12:02:25 +08:00 |
|
hangshuo652
|
bc1d56d1a4
|
feat: Phase 2 complete — 13 Phases of COBOL type classification and test benchmark
P0.6: gcov infrastructure
P1: extract_structure output expansion (11 new feature fields)
P2: Confusion group rule engine (8 pairs + contradiction + backtrack)
P3: 4-factor confidence calculation + quality gate update
P4: 33+2 COBOL program type test samples (22 files, 7 categories)
P5: parametrized/ test data generation engine
P6: japanese_data.py lookup tables
P7-10: Type-specific test suites (~159 parametrized tests)
P11: Full classification pipeline (classify_program) + orchestrator integration
P12: Documentation (module-interfaces, test-plan v3.0, coverage-matrix)
Architecture decisions:
- classification_pipeline/ merged to hina/pipeline/
- parametrized/ as independent module
- japanese_data.py as root-level file
- hina/__all__ only exports classify_program()
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-19 23:51:55 +08:00 |
|
hangshuo652
|
9ad0e88a1a
|
test: add HINA type-specific COBOL test data suite (10 programs, 8/10 pass)
|
2026-06-18 16:55:43 +08:00 |
|