feat: DB管线补全 + 新增orchestrator_db/program_schema/to_sql + 清理临时脚本
This commit is contained in:
@@ -14,6 +14,7 @@ import re
|
||||
import logging
|
||||
from .models import BrSeq, BrIf, BrEval, BrPerform, BrSearch, Assign, CallNode, CondNot, CondLeaf, ExitNode, GoTo
|
||||
from .cond import parse_single_condition, parse_compound_condition, is_field, collect_leaves, mcdc_sets
|
||||
from .design import eval_true_branch_constraints
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -183,6 +184,18 @@ def _make_path_for_branch(dp, branch_idx, fields):
|
||||
node = dp["node"]
|
||||
n_when = len(node.when_list)
|
||||
dp_id = dp.get("id", 0)
|
||||
if node.subject == 'TRUE':
|
||||
for prev_idx in range(branch_idx):
|
||||
prev_value, _ = node.when_list[prev_idx]
|
||||
_, prev_false_sets = eval_true_branch_constraints(prev_value, fields)
|
||||
if prev_false_sets:
|
||||
constraints.extend(prev_false_sets[0])
|
||||
if branch_idx < n_when:
|
||||
value, seq = node.when_list[branch_idx]
|
||||
true_set, _ = eval_true_branch_constraints(value, fields)
|
||||
constraints.extend(true_set)
|
||||
print(f" MCDC-DEBUG: EVALUATE TRUE branch={branch_idx} subject={node.subject} constraints={constraints}", flush=True)
|
||||
return (constraints, {})
|
||||
if branch_idx < n_when:
|
||||
value, seq = node.when_list[branch_idx]
|
||||
if is_field(node.subject, fields):
|
||||
@@ -246,8 +259,13 @@ def enum_paths(node, fields):
|
||||
if bp: paths.append(bp)
|
||||
if node.has_other:
|
||||
other_cons = list(dp.get("access_constraints", []))
|
||||
for v, _ in node.when_list:
|
||||
if is_field(node.subject, fields):
|
||||
if node.subject == 'TRUE':
|
||||
for v, _ in node.when_list:
|
||||
_, false_sets = eval_true_branch_constraints(v, fields)
|
||||
if false_sets:
|
||||
other_cons.extend(false_sets[0])
|
||||
elif is_field(node.subject, fields):
|
||||
for v, _ in node.when_list:
|
||||
other_cons.append((node.subject, '<>', v, True))
|
||||
paths.append((other_cons, {}))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user