fix: 覆盖率统计全面修复 + 5漏洞修正
## 修复内容 ### C1: _mark_eval 反向操作符 (coverage.py) - EVALUATE 约束匹配支持 操作符 - WHEN OTHER 的自动检测(全部 WHEN 被否定时) ### C2: _mark_perform 反向操作符 (coverage.py) - PERFORM 同 _mark_if 的反向操作符匹配 - PERFORM UNTIL 条件截断后桥接器通过 branch_names 识别类型 ### H1: parse_single_condition 传递 fields (coverage.py) - collect_decision_points 调用时传 fields 参数 - NOT 前缀条件解析 (NOT WS-X > 50 → WS-X <= 50) ### H4: generate_data 输入约束 (__init__.py) - 文档注明接收原始源码,非预处理后文本 ### M1: not_map break (cond.py) - NOT 操作符映射循环添加 break ## 覆盖测试结果 - IF: 100% (T/F) - NOT IF: 100% (NOT_TRUE/NOT_FALSE) - PERFORM UNTIL: 100% (ENTER/SKIP) - EVALUATE: 100% (4 WHENs) - Nested IF: 100% (4 branches) - S15 回归: 17/17 PASS Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -99,13 +99,15 @@ def _convert_node(node: BranchNode, parent: BrSeq):
|
||||
|
||||
if k == "PERFORM":
|
||||
cond = node.condition_text or ""
|
||||
u = cond.upper()
|
||||
if 'VARYING' in u:
|
||||
br_names = [b.upper() for b in node.branch_names] if node.branch_names else []
|
||||
if any('VARY' in b for b in br_names):
|
||||
br = BrPerform("varying", condition=cond)
|
||||
elif 'UNTIL' in u:
|
||||
elif any('SKIP' in b or 'ENTER' in b for b in br_names):
|
||||
br = BrPerform("until", condition=cond)
|
||||
else:
|
||||
elif any('TIMES' in b for b in br_names):
|
||||
br = BrPerform("times", condition=cond)
|
||||
else:
|
||||
br = BrPerform("until", condition=cond)
|
||||
for c in node.children: _convert_node(c, br.body_seq)
|
||||
parent.add(br)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user