fix: step1 空章节过滤 + step3 rule_signature None-safe - Closes #21
CI / test (pull_request) Successful in 9s
CI / test (pull_request) Successful in 9s
- step1 _quick_validate 添加 _has_section_content() 过滤空内容章节
(如仅含"无"字的图片章节),避免误报低覆盖率警告
- step3 rule_signature 使用 `or {}` 防御 trigger=None 场景
修复 QE 报告的 step3 AttributeError
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -509,10 +509,28 @@ def _quick_validate(
|
||||
return True
|
||||
return True
|
||||
|
||||
def _has_section_content(sec: dict) -> bool:
|
||||
"""Check if a section has meaningful content (text >= 10 chars, table, or image).
|
||||
|
||||
A section is considered "empty" if all its text blocks have fewer than
|
||||
10 characters and it contains no tables or images. These typically come
|
||||
from image-only Word sections that doc_parser cannot extract text from.
|
||||
"""
|
||||
for block in sec.get("blocks", []):
|
||||
blk_type = block.get("type", "")
|
||||
if blk_type == "table":
|
||||
return True
|
||||
if blk_type in ("image", "figure", "picture"):
|
||||
return True
|
||||
text = block.get("text", "")
|
||||
if isinstance(text, str) and len(text.strip()) >= 10:
|
||||
return True
|
||||
return False
|
||||
|
||||
func_sections = [
|
||||
s for s in doc.get("sections", [])
|
||||
if _is_functional_section(s.get("source", ""))
|
||||
and any(b.get("type") in ("para", "table") for b in s.get("blocks", []))
|
||||
and _has_section_content(s)
|
||||
]
|
||||
covered_sections: set[str] = set()
|
||||
for fu in units:
|
||||
|
||||
@@ -111,8 +111,8 @@ def load_path_enumeration() -> dict:
|
||||
def rule_signature(rule: dict) -> str:
|
||||
"""Generate a dedup signature from path + trigger + actions."""
|
||||
path = rule.get("path", [])
|
||||
trigger = rule.get("trigger", {})
|
||||
actions = rule.get("actions", [])
|
||||
trigger = rule.get("trigger") or {}
|
||||
actions = rule.get("actions") or []
|
||||
|
||||
conditions = sorted(
|
||||
trigger.get("conditions", []), key=lambda c: c.get("signal", "")
|
||||
|
||||
Reference in New Issue
Block a user