feat: add check_ast entry point

This commit is contained in:
2026-05-25 20:40:13 -06:00
parent 811b065e05
commit dab36f35c4

31
ast_checker/checker.py Normal file
View File

@@ -0,0 +1,31 @@
from tree_sitter import Parser
from .engines import get_engine
from .mappings import get_language, get_mapping
def check_ast(code: str, language: str, rules: list[dict]) -> tuple[bool, list[str]]:
if not rules:
return True, []
ts_language = get_language(language)
if ts_language is None:
return True, []
mapping = get_mapping(language)
try:
parser = Parser(ts_language)
tree = parser.parse(code.encode("utf-8"))
except Exception:
return True, []
errors = []
for rule in rules:
engine = get_engine(rule.get("engine", ""))
if engine is None:
continue
rule_errors = engine.check(tree, rule, language, mapping)
errors.extend(rule_errors)
return len(errors) == 0, errors