fix: 高密度テスト52/52通過 + SPACES figurative constant FP fix
COBOL技術者による高密度テスト(52 tests)実装: 発見・修正されたバグ: 1. WS-KEY = SPACES の figurative constant 比較が FP 原因 - _matches_key_comparison に figurative constant除外を追加 - 構造検知の信号4でも SPACES/ZERO 等を除外 - structural_matching で単一ファイルプログラムを除外 2. simple_vs_two_stage が常に単純マッチングを返していた - 実証拠なしでも0.5で返す → 他の分類を汚染 - 修正: file_count>=2 + IF + 比較証拠がない場合は unknown 3. simple_vs_two_stageテストを現実に合わせて更新 回帰: 767 passed(0 new failures) 高密度テスト: 52/52 PASS
This commit is contained in:
@@ -144,7 +144,8 @@ def resolve_simple_vs_two_stage(features: dict) -> dict:
|
||||
|
||||
规则:
|
||||
- OPEN → CLOSE → 再 OPEN 模式 → 二级匹配
|
||||
- 其他顺序 → 简单匹配
|
||||
- 其他顺序且有匹配证据 → 简单匹配
|
||||
- 无匹配证据 → unknown(不胡乱判定)
|
||||
"""
|
||||
open_pattern = features.get("open_pattern", "")
|
||||
evidence: list[str] = []
|
||||
@@ -152,10 +153,25 @@ def resolve_simple_vs_two_stage(features: dict) -> dict:
|
||||
if open_pattern == "open-close-open":
|
||||
evidence.append("OPEN→CLOSE→再OPEN 模式 → 二级匹配")
|
||||
return {"resolved_type": "二段階マッチング", "confidence": 0.90, "evidence": evidence}
|
||||
else:
|
||||
evidence.append(f"OPEN 模式为 '{open_pattern}' → 默认为単純マッチング(非決定的: 无 OPEN-CLOSE-OPEN 模式不代表一定是匹配程序)")
|
||||
|
||||
# 只有存在多文件+跨文件比较等匹配证据时才返回単純マッチング
|
||||
vp = features.get("variable_patterns", {})
|
||||
file_count = features.get("file_count", 0)
|
||||
if_types = features.get("if_types", {})
|
||||
has_real_evidence = (
|
||||
file_count >= 2
|
||||
and if_types.get("total", 0) >= 1
|
||||
and (vp.get("has_prev_key", False)
|
||||
or features.get("has_key_var", False)
|
||||
or features.get("has_cross_file_cmp", False))
|
||||
)
|
||||
if has_real_evidence:
|
||||
evidence.append(f"OPEN 模式为 '{open_pattern}' + 匹配证据 → 単純マッチング")
|
||||
return {"resolved_type": "単純マッチング", "confidence": 0.50, "evidence": evidence}
|
||||
|
||||
evidence.append(f"OPEN 模式为 '{open_pattern}' + 无匹配证据 → unknown")
|
||||
return {"resolved_type": "unknown", "confidence": 0.0, "evidence": evidence}
|
||||
|
||||
|
||||
def resolve_pure_vs_mixed(features: dict) -> dict:
|
||||
"""区分「純粋マッチング」与「混合マッチング」。
|
||||
|
||||
Reference in New Issue
Block a user