pre_rules.py
- Pfad:
/var/www/tools/ki-protokoll/claude-hook/quality/pre_rules.py - Namespace: claude-hook.quality
- Zeilen: 86 | Größe: 2,243 Bytes
- Geändert: 2025-12-28 12:55:37 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 88
- Dependencies: 50 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Dependencies 10
- use pre_rules_guard
- use pre_rules_mvc
- use pre_rules_layers
- use pre_rules_validation
- use pre_rules_htmx
- use pre_rules_constants
- use pre_rules_python
- use pre_rules_deterministic
- use pre_rules_tests
- use rule_base.allow
Funktionen 1
-
check()Zeile 66
Code
#!/usr/bin/env python3
"""
Pre-Hook Regeln (BLOCK) - Modular und erweiterbar ohne Claude-Neustart.
Alle P-Regeln aus dem Quality Gate Plan.
Importiert Regeln aus spezialisierten Modulen.
"""
from . import pre_rules_guard
from . import pre_rules_mvc
from . import pre_rules_layers
from . import pre_rules_validation
from . import pre_rules_htmx
from . import pre_rules_constants
from . import pre_rules_python
from . import pre_rules_deterministic
from . import pre_rules_tests
from .rule_base import allow
# =============================================================================
# REGEL-SAMMLUNGEN NACH DATEITYP
# =============================================================================
# PHP-Regeln (nur für .php Dateien)
PHP_RULES = [
# Prüfung 1: SRP + KISS + Prüfung 4: OOP
*pre_rules_guard.RULES,
# Prüfung 2: MVC + CRUD
*pre_rules_mvc.RULES,
# Prüfung 3: PSR + Types
*pre_rules_validation.RULES,
# Prüfung 6: SOLID + DIP + H-Regeln
*pre_rules_layers.RULES,
# HTMX Contract (Contract #14)
*pre_rules_htmx.RULES,
# Prüfung 7: Constants + Magic Numbers
*pre_rules_constants.RULES,
# Prüfung 8: Deterministic Behavior
*pre_rules_deterministic.RULES,
# Prüfung 14: Test Isolation (nur für /tests/, /Test/)
*pre_rules_tests.RULES,
]
# Python-Regeln (nur für .py Dateien)
PYTHON_RULES = [
# PP1.x: Hardcoded Values
*pre_rules_python.RULES,
]
# Legacy: Alle Regeln für Kompatibilität
RULES = PHP_RULES + PYTHON_RULES
# =============================================================================
# MAIN CHECK FUNCTION
# =============================================================================
def check(file_path: str, content: str) -> dict:
"""
Führt Pre-Hook-Regeln basierend auf Dateityp aus.
Stoppt beim ersten Verstoß.
"""
# Regeln nach Dateityp auswählen
if file_path.endswith(".php"):
rules = PHP_RULES
elif file_path.endswith(".py"):
rules = PYTHON_RULES
else:
# Unbekannter Typ: durchlassen
return allow()
for rule in rules:
result = rule(file_path, content)
if result is not None:
return result
return allow()