STRU and exception tasks accepted; G6 cascade fix, exception class mutants, RTTI unit notes

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 19:25:09 +02:00
parent b119f1afac
commit 55f4068330
36 changed files with 5380 additions and 34 deletions

View File

@@ -426,8 +426,15 @@ class Runner:
contract_files = {f"{c['name'].lower()}.{c['type'].lower()}.abap" for c in contract}
# abaplint does not know standard superclasses (CX_STATIC_CHECK ...); an exception hierarchy
# then gives "Super class ... not found or contains errors". A4H activation (G1) covers this.
# Cascade: a class that uses such an exception class gets "Definition for X not found in scope" (X is
# the exception class abaplint could not build). Messages that name a broken class are not counted.
broken = {re.sub(r"\.(clas|intf)\.abap$", "", i["file"]).upper() for i in issues
if re.match(r"Super class .* not found or contains errors", i["msg"] or "")}
def _cascade(msg):
return any(re.search(rf"\b{re.escape(b)}\b", msg or "", re.I) for b in broken)
g["G6_release"] = not any(i["rule"] == "check_syntax" and i["file"] in contract_files
and not re.match(r"Super class .* not found or contains errors", i["msg"] or "")
and not _cascade(i["msg"])
for i in issues)
# 8 score