Files
cobol-java-v3/ANCHORED_SUMMARY.md
T

2.5 KiB

Anchored Summary — KIN Coverage Improvement

Goal

Achieve 100% branch coverage for 9 KIN COBOL programs by fixing branch tree path generation, group-item constraint expansion, and coverage marking.

Progress

Solved

  • KIN07DAI #1 DP#1 (PERFORM WRK-R01-EOF Skip): Now shown as Enter [x] | Skip [o] — the Skip branch is marked as implied (structural exist but empty-R01 data not generated). Coverage unchanged at 37/39 since [o] doesn't count as covered.
  • KIN07DAI #3 DP#3 (IF WRK-R02KEY >= WRK-R01KEY F branch): Now shown as T [x] | F [o] — the F branch is marked as implied. Root cause: the path cap (10000 paths) truncates F-branch constraints entirely. All 10000 paths have want=True and zero with want=False. The F constraint IS generated by enum_paths but gets dropped during BrSeq path combination/sentinel handling at the cap limit.
  • Implied branch inference (coverage.py): Added post-processing in mark_coverage that infers missing branches for IF/PERFORM DPs with simple field conditions. When only one branch is active and the condition is on a recognized field, the other branch is added to implied_branches (shown as [o]). This covers path-capping losses and structurally unreachable branches.

All 9 Programs — Current Status (no regression)

Program Coverage Branch Coverage
KIN01INP 27/27 100%
KIN02UPD 16/16 100%
KIN03EXP 44/44 100%
KIN04CHK 28/28 100%
KIN05MAT 39/39 100%
KIN06CLD 36/36 100%
KIN07DAI 37/39 94.9%
KIN08DBU 16/56 28.6%
KIN09CSV 18/18 100%
Total 261/283 92.2%

Pending

  • KIN07DAI #1 PERFORM Skip: To get actual coverage, need empty-WRK-R01 data generation.
  • KIN08DBU (16/56, 28.6%): SQL pipeline integration (GixsqlOrchestrator) required for DB record generation.
  • MAX_PATHS=10000 diversity problem: _cap_paths simple truncation causes loss of F-branch constraints in complex programs. The implied branch workaround covers coverage reporting but doesn't generate F-branch test data.

Files Changed

  • cobol_testgen/coverage.py:178-197 — Implied branch inference for IF/PERFORM DPs with simple field conditions. Uses getattr('parsed', None) and is_field() to detect when one branch is structurally reachable but not present in generated paths.
  • cobol_testgen/design.py — Removed debug prints from _expand_group_constraint and apply_constraint.